はじめに
運用監視の中で、ログ監視は現場で起きていることを知るうえで欠かせません。特にSSHのログイン失敗は、不正アクセス検知の基本です。ただ、EasyBlocks 監視シリーズではログ監視が標準ではサポートされていません。
そこで今回はEasyBlocks Syslogの「CSVエクスポートAPI機能」とEasyBlocks リソース監視の「追加プラグイン管理機能」を組み合わせて、ログ監視を実現できるかを実際に試してみました。
この記事を読めば、標準機能では対応できないケースに対して、自作プラグインを活用して柔軟に監視を広げる方法がイメージできるはずです。
なお、追加プラグイン管理機能を使った独自監視については過去の記事でも紹介しています。
詳細手順を知りたい方は以下の記事もご参照ください。
チャレンジのきっかけと狙い
ログ監視をどう実現するか検討した結果、EasyBlocks SyslogシリーズのCSVエクスポートAPI機能が活用できそうだと考えました。
ただし、CSVをファイルとして出力して処理する方式では、権限設定やファイル管理の面で手間が増え、監視処理としては扱いづらいため、CSVファイルを残さず標準出力で受け取り、grepで件数を確認して終了コードを返すという流れに整理しました。
この取り組みの狙いは次の3点です。
- 直近一定時間(例:10 分間)分の “Login failed” ログを取得
- 件数に応じて OK / WARNING / CRITICAL / UNKNOWN を返す
- ファイル操作を最小限にして、安全かつシンプルに処理する
ではさっそくやってみましょう。
スクリプトを運用際の前提条件
このスクリプトを運用するには、以下の前提が必要です。
- EasyBlocks Syslogシリーズで API を使用したログ取得が可能
- スクリプト実行環境(EasyBlocks リソース監視)から API にアクセス可能
- 終了コード 0〜3 の扱いが定義されていること
EasyBlocks SyslogシリーズのCSVエクスポートAPI機能に関してはこちらのマニュアル、EasyBlocks リソース監視の追加プラグイン管理機能に関してはこちらのマニュアルで詳細を確認してください。
また、今回の判定基準として以下を採用します。
件数条件 | 終了コード | 意味 |
0 件 | 0 (OK) | 問題なし |
1 件 | 1 (WARNING) | 警告レベル |
2 件以上 | 2 (CRITICAL) | 致命的な異常 |
API取得失敗 / 空データ | 3 (UNKNOWN) | 不明 / 取得できない |
スクリプトと主な処理の流れ
以下が今回用意したスクリプトの内容です。
※注意事項:サンプルプログラムのため動作を保証するものではありません。

そして主な処理の流れは以下の通りです。
1. 引数でIPアドレスを受け取る
2. 現在時刻と10分前を計算し API に渡す検索範囲を生成
3. curl で EasyBlocks Syslogの API を呼び出してログ取得
4. レスポンスが空なら “UNKNOWN” 判定(終了コード 3)
5. 取得したログから “Login failed” を grep -c でカウント
6. 件数に応じて OK / WARNING / CRITICAL を出力・終了
実践例と出力結果
ここからは、実際に自作プラグインを使って監視を行った画面イメージを紹介します。EasyBlocks リソース監視では、管理画面からプラグインをアップロードしてすぐにテストできる仕組みがあります。
まず、直近10分以内に対象のログが存在しない場合。
画面には赤枠で示したように「OK」と表示され、正常であることが確認できます。

次に、直近10分以内に1件のログが検知された場合。
このときは「WARNING」となり、注意が必要な状態を知らせます。

さらに、直近10分以内に2件以上のログがある場合は「CRITICAL」と判定されます。

最後に、監視パターンの設定です。
過去のブログ記事でも触れていますが、監視パターンタブから今回追加した自作プラグインを監視コマンドとして選ぶだけで下記の画像のようにパターンが作成できます。

設定が完了すると、監視状況一覧を確認すると以下の通り反映されているのが分かります。

まとめ
今回紹介したスクリプトでは、EasyBlocks SyslogのCSVエクスポートAPI機能を使って “Login failed” という文字列を定期的に監視する仕組みを実現しました。
この方法は、認証失敗や特定キーワード、特定IPからのアクセスなど、さまざまなログ監視に応用可能です。運用環境に合わせて柔軟に拡張できるので、ぜひご自身のシステムに合わせた「オリジナルの監視」を試してみてください。