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