Data APIサーバーのログを監視
Remote Engine Gen2のData APIサーバーのログはデフォルトで公開されており、docker logsコマンドで消費できます。
ログはjson形式で、デフォルトのECS(Elastic Common Schema)パターンに従っています。ローのJSON構造の行を読んでもあまり意味がないので、ログ管理プラットフォームにログを取り込ませてインデックス化すれば、より簡単に可視化できるようになります。
このドキュメンテーションでは、ELK (Elasticsearch、Logstash、Kibana)プラットフォームを使ってdataset-api-serverのログを取得して可視化する方法を紹介します。
dataset-api-serverコンテナーにはさまざまな種類のログが記録されます。
- OData APIのアクセスログ。検索フィールドで/apisフィルターを使えば、アクセスのログのみフィルタリングできます。
- コンテナーが本当に稼働しているかどうかをDockerが判断するためのプローブ。検索フィールドで/environmentフィルターを使えば、プローブのログのみフィルタリングできます。
- Data APIバックエンドとの同期ログ。検索フィールドで/synchronizationフィルターを使えば、同期のログのみフィルタリングできます。
始める前に
dataset-api-server:
[...]
labels:
autoheal: 'true'
filebeat_ingest: 'true' # Send container logs to ELK
ELKスタック
このドキュメンテーションでは、ELKスタック全体がRemote Engine Gen2と同じマシンで独自のDockerマルチコンテナーアプリケーション内で実行されているものと想定しています。また、同じくElastic社が開発したFilebeatという別のコンポーネントによってRemote Engine Gen2からログが読み取られ、ELKスタックにプッシュされます。
このドキュメンテーションはELKスタックのバージョン7.7.0を基にしています。
ドキュメンテーションページの[Downloads] (ダウンロード)タブから、必要なファイル一式が含まれているapi-server-monitoring.zipアーカイブを取得します。
- お好きな場所でapi-server-monitoring.zipアーカイブを解凍します。
- メインディレクトリーでdocker-compose up -dコマンドを実行します。
- http://localhost:5601というURLにアクセスします。
- filebeat-*というKibanaインデックスパターンを作成します。時刻には@timestampを使います。 に移動し、
- dataset-apis-serverのログは、http://localhost:5601/app/kibana#/discoverにあるKibanaのDiscoverセクションで確認できます。
ELKスタックを停止したい場合は、メインディレクトリーでdocker-compose down -vコマンドを実行します。
ログをフィルタリングおよび検索
dataset-api-serverコンテナーにはさまざまな種類のログが記録されます。
- OData APIのアクセスログ。検索フィールドで/apisフィルターを使えば、アクセスのログのみフィルタリングできます。
- コンテナーが本当に稼働しているかどうかをDockerが判断するためのプローブ。検索フィールドで/environmentフィルターを使えば、プローブのログのみフィルタリングできます。
- Data APIバックエンドとの同期ログ。検索フィールドで/synchronizationフィルターを使えば、同期のログのみフィルタリングできます。
- ログに記録されたデータをKibanaで直接視覚化する方法を設定します。
たとえば潜在的なエラー、重大度、対応するタイムスタンプに関する情報を表示して強調するようカラムをソートできます。