現代のシステム運用において、ログの一元管理とリアルタイム分析は欠かせません。本記事では、軽量なデータ収集ツール、分散検索エンジン、そして可視化ツールを組み合わせ、効率的にログを収集・蓄積・分析する環境を構築する手順を解説します。
システム構成
本構成では、以下の3つのコンポーネントを使用します。
- Filebeat: サーバー上のログファイルを軽量に転送するデータシッパー。
- Easysearch: データの保存、検索、集計を行う分散検索エンジン。
- Console: データの検索、可視化、ダッシュボード作成を行うWebインターフェース。
構築手順
1. 環境の準備
最初にデータの保存先となるEasysearchと、可視化ツールであるConsoleをデプロイします。Easysearchの設定ファイル(easysearch.yml)を開き、Elasticsearch互換のAPIを有効化する設定項目のコメントアウトを解除してください。
2. Filebeatのインストールと設定
Filebeat(推奨バージョン7.10.2)をダウンロードし、設定ファイル(filebeat.yml)を編集して、Easysearchへのデータ転送設定を行います。以下は設定例です。
setup.ilm.enabled: false
setup.template.name: "infra-template"
setup.template.pattern: "sys-logs-*"
setup.template.fields: "${path.config}/fields.yml"
output.elasticsearch:
hosts: ["https://192.168.1.100:9200"]
protocol: "https"
ssl.verification_mode: none
username: "admin"
password: "secure_admin_password"
index: "sys-logs"
3. モジュールの有効化とパイプラインの登録
OSのシステムログを収集するために、systemモジュールを有効にし、Easysearch側でデータ処理を行うためのパイプラインを登録します。
./filebeat modules enable system
./filebeat setup --pipelines --modules system
4. インデックステンプレートの作成とストレージ最適化
ディスク容量を効率的に活用するため、ZSTD圧縮とSOURCE_REUSE機能を利用したインデックステンプレートを作成します。また、文字列フィールドは自動的にkeyword型としてマッピングし、集計効率を向上させます。
PUT _template/sys_logs_template
{
"order": 10,
"index_patterns": [
"sys-logs*"
],
"settings": {
"index": {
"codec": "ZSTD",
"source_reuse": true,
"number_of_shards": "1",
"lifecycle": {
"name": "logs-30days-policy",
"rollover_alias": "sys-logs"
},
"translog": {
"durability": "async"
}
}
},
"mappings": {
"dynamic_templates": [
{
"strings_as_keywords": {
"match_mapping_type": "string",
"mapping": {
"type": "keyword",
"ignore_above": 256
}
}
}
]
}
}
PUT sys-logs-000001
{
"aliases": {
"sys-logs": {
"is_write_index": true
}
}
}
5. Filebeatの起動
設定が完了したら、Filebeatをバックグラウンドプロセスとして起動し、ログの収集を開始します。
./filebeat -e -c filebeat.yml > /dev/null 2>&1 &
6. ログの確認と分析
Consoleにアクセスし、データが正しく格納されていることを確認します。Discover機能を使用してログを検索したり、ダッシュボードを作成してログ傾向の可視化を行ったりします。