透過Feed-Server/API輕鬆完成機房服務監測

張貼日期:Sep 27, 2017 6:35:32 AM

每次話題總是離不開行情,這裏洩漏一下系統還可以有這樣的玩法!

利用Feed-API回報資訊到Feed-Server上,就像是餵行情的概念一樣,

於Server端就能瞭解各主機負載狀態與行情是否有延遲的狀況

前篇已經介紹過透過Feed-Server/API建立行情系統(AGVS)有多簡單,

現在同樣的透過巧思來監測機房服務狀態,於Server介面就能一覽無遺,

如果利用行情的特性,也能將想要的狀態統一像Tick紀錄一樣保留下來,

或者透過API訂閱的方式重新設計來規劃log/event/message...等的需求

而這邊為了簡化(偷懶)設計也便於說明,

把Feed-API的小程式設計為每一個console只收集一台服務主機的資訊打到Feed-Server上,

由於是IP化的架構, 可以於Feed-Server端跑多個console收集遠端服務主機的狀態,

當然也可以於各服務主機上分別跑console小程式把資訊打回Feed-Sever,

如果是後者,還可以把主機的CPU/記憶體/磁碟空間等...各種資訊也都打回Feed-Server囉!

程式也是都一樣很簡單

收到Tick

                    if (caINSAPPid[0])

                    {

                        char caBuffer[256];

                        char *cpBuf = caBuffer;

                        cpBuf += sprintf(cpBuf,

                            "$%s,3=%u,93=%s,94=%s,95=%02d:%02d:%02d.%03d"

                            , caINSAPPid, uTotalVolume, caMonitorExch, caMonitorSym

                            , spLocalTime->wHour, spLocalTime->wMinute, spLocalTime->wSecond, spLocalTime->wMilliseconds

                        );

                        cpBuf++;//含ZE

                        fnPktEvFeeder_SendPacket('F', caBuffer, (cpBuf - caBuffer), false);

                    }

收到連線數回報

if (caINSAPPid[0])

            {

                int &connOnINSAPP = *(int *)(pkt.data.bpData + 1);

                char caBuffer[128];

                char *cpBuf = caBuffer;

                cpBuf += sprintf(cpBuf, "$%s,92=#%d", caINSAPPid, connOnINSAPP);

                cpBuf++;//含ZE

                fnPktEvFeeder_SendPacket('F', caBuffer, (cpBuf - caBuffer), false);

            }

台灣21:46時由總成交量可以觀察到主機fort04有明顯的延遲狀況!

雖然21:50時行情有跟上,但台灣23:25時主機fort04延遲的狀況又更嚴重!!

主機fort04於23:51後行情才又跟上...