資訊系統/架構/產品‎ > ‎KGQ‎ > ‎GMDS相關文章‎ > ‎GMDS‎ > ‎

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

張貼者:2017年9月26日 下午11:35Wei-Xiuang Wang   [ 已更新 2017年9月27日 上午10:49 ]

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

利用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後行情才又跟上...



註解