#前回までの話
以下を監視することにした
####1.ビジネス監視
なし
####2.フロントエンド監視
なし
####3.アプリケーション監視
MT4アプリが落ちている
####4.サーバ監視
WindowsServerが落ちている
メモリまたはCPUが100%になっている
→100%になってからでは遅いので80%にする(普段は60%)。
####5.ネットワーク監視
FX会社との疎通が取れるか
レイテンシが普段と比べて遅くなっていないか
####6.セキュリティ監視
ログイン
をしよう、というお話。
#で、どうやって実装する?
公式によるとどうやらStackdriverをWindowsServerに入れると、イベントログを収集してくれるらしい。
そしてさらに調べると、Windowsには「eventcreate」なるコマンドでイベントログに任意のメッセージを書き込めるとのこと。
これだ!!
試しにやってみますた。
C:\Windows\system32>eventcreate /t error /id 100 /d test
SUCCESS: An event of type 'error' was created in the 'Application' log with 'EventCreate' as the source.
C:\Windows\system32>
できてるできてる。
#通知はどうにやるんかいな
こちらがとても参考になった。
参考にして以下のように設定。
でも1つ問題なのは、1分後にリカバリーのメールがきてしまうこと。
件数が1分あたりに0になるから閾値より下になった、てことで間違ってはいないのだけど、、、
ちなみにAlignerをcountに変えると、0にならないのか、二度目以降にエラーを発生させてもメールが飛ばない、という事態に陥ったのでこの方法はやめました。
特定のログが出たらメッセージを通知したいだけなので、本来なら閾値設定などはいらないのだが、調べてもそのような設定の仕方は見つけられなかった。
どなたかやり方ご存知の方がいたら教えていただけますと幸いです。
#実装していく
####MT4アプリが落ちている
Windows上で稼働するアプリケーションが起動しているかどうかを知るための方法
調べるとどうやら起動しているプロセスを確認する「tasklist」コマンドがあるらしい
C:\Windows\system32>TASKLIST | FIND "terminal.exe"
terminal.exe 4364 RDP-Tcp#72 2 88,568 K
terminal.exe 4720 RDP-Tcp#72 2 70,112 K
terminal.exe 1716 RDP-Tcp#72 2 47,412 K
C:\Windows\system32>
※訳あってMT4を3つ稼働させています。
というわけでこんな感じのbatファイルを書きました。
@ECHO OFF
tasklist | find "terminal_test.exe"
if %errorlevel%==1 (
eventcreate /t error /id 100 /d battest
)
:END
exit
※terminal.exeを別名に名称変更しています。
tasklistして、findできなければerrorlevelが1になるので、1ならeventcreate、という感じです。
(見たまんま笑)
これをタスクスケジューラに登録します。
ここら辺が参考になるかな
とりあえず今回はここまで
ここまでできれば後少しかな