Filebeat チートシート
インストール
| プラットフォーム | コマンド |
|---|
| Ubuntu/Debian | `wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch \ |
| RHEL/CentOS | sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo yum install filebeat |
| macOS | brew tap elastic/tap
brew install elastic/tap/filebeat-full |
| Windows | Download from https://artifacts.elastic.co/downloads/beats/filebeat/ Extract and run: .\install-service-filebeat.ps1 |
| Docker | docker pull docker.elastic.co/beats/filebeat:8.11.0 |
| Kubernetes (Helm) | helm repo add elastic https://helm.elastic.co
helm install filebeat elastic/filebeat |
基本コマンド
| コマンド | 説明 |
|---|
sudo systemctl start filebeat | Filebeatサービスを開始 |
sudo systemctl stop filebeat | Filebeatサービスを停止 |
sudo systemctl restart filebeat | Filebeat サービスを再起動 |
sudo systemctl status filebeat | Filebeat サービスの状態を確認 |
sudo systemctl enable filebeat | Filebeat を起動時に有効にする |
sudo filebeat -e | コンソール出力で Filebeat をフォアグラウンドで実行 |
sudo filebeat -e -c /path/to/filebeat.yml | 特定の設定ファイルで実行する |
sudo filebeat test config | 設定ファイルの構文を検証する |
sudo filebeat test output | 設定された出力への接続を確認 |
sudo journalctl -u filebeat -f | Filebeat サービスのログをリアルタイムで表示 |
sudo filebeat modules list | 利用可能なモジュールをすべて一覧表示 |
sudo filebeat modules enable apache | 特定のモジュールを有効にする(Apacheの例) |
sudo filebeat modules disable apache | 特定のモジュールを無効にする |
sudo filebeat setup | インデックステンプレート、ダッシュボード、およびパイプラインをロード |
sudo filebeat version | Filebeatのバージョン情報を表示 |
モジュール管理
| コマンド | 説明 |
|---|
sudo filebeat modules list | 利用可能なモジュールとそのステータスをすべて表示 |
sudo filebeat modules enable nginx mysql | 一度に複数のモジュールを有効にする |
sudo filebeat modules disable system | モジュールを無効にする |
| `sudo filebeat modules list \ | grep Enabled -A 10` |
sudo filebeat export config --modules apache | 特定のモジュール設定をエクスポート |
ls /etc/filebeat/modules.d/ | モジュール設定ファイルの一覧 |
sudo vi /etc/filebeat/modules.d/nginx.yml | モジュール設定ファイルを編集 |
セットアップと初期化
| コマンド | 説明 |
|---|
sudo filebeat setup --index-management | Elasticsearch でインデックステンプレートのみをセットアップ |
sudo filebeat setup --dashboards | Kibanaダッシュボードのみをセットアップ |
sudo filebeat setup --pipelines | イングレストパイプラインのみをセットアップ |
sudo filebeat setup -E output.elasticsearch.hosts=['es:9200'] | 特定の Elasticsearch ホストでのセットアップ |
sudo filebeat setup -E output.elasticsearch.username=elastic -E output.elasticsearch.password=pass | 認証資格情報を使用したセットアップ |
sudo filebeat export template | インデックステンプレートを標準出力にエクスポート |
sudo filebeat export ilm-policy | ILM(インデックスライフサイクル管理)ポリシーをエクスポート |
高度な使用法
| コマンド | 説明 |
|---|
sudo filebeat -e -d "*" | すべてのコンポーネントでデバッグログを有効にして実行 |
sudo filebeat -e -d "publish,harvester" | 特定のコンポーネントのみをデバッグする |
sudo filebeat -e --strict.perms=false | 厳密な権限チェックを無効にする |
sudo filebeat -e -E http.enabled=true -E http.host=localhost -E http.port=5066 | HTTPモニタリングエンドポイントを有効化 |
curl http://localhost:5066/stats | 統計のためのクエリ監視エンドポイント |
curl http://localhost:5066/state | 詳細な状態情報を取得 |
sudo filebeat -e -E output.console.enabled=true -E output.elasticsearch.enabled=false | コンソールに Elasticsearch の代わりにイベントを出力する |
sudo filebeat -e -E filebeat.config.inputs.workers=4 | 特定の数のワーカーで実行 |
sudo filebeat -e -E output.elasticsearch.bulk_max_size=100 | バルクインデックスのサイズを調整 |
sudo filebeat -e -E queue.mem.events=8192 | キューメモリイベント制限を設定 |
sudo filebeat -e -E output.elasticsearch.compression_level=3 | Elasticsearch 出力の圧縮を有効にする |
sudo filebeat test config -e -d "processors" | デバッグ出力を使用してプロセッサの設定をテストする |
sudo filebeat migrate-registry | 古いFilebeat バージョンからレジストリを移行する |
sudo filebeat export config | 設定全体を標準出力にエクスポート |
curl http://localhost:5066/autodiscover | autodiscover ステータスを確認 |
キーストア管理
| コマンド | 説明 |
|---|
sudo filebeat keystore create | シークレット用の新しいキーストアを作成する |
sudo filebeat keystore add ES_PASSWORD | キーストアにシークレットを追加(値の入力を求めます) |
sudo filebeat keystore list | キーストア内のすべてのキーを一覧表示 |
sudo filebeat keystore remove ES_PASSWORD | キーストアからキーを削除 |
設定
メイン設定ファイル
場所: /etc/filebeat/filebeat.yml(Linux)または C:\Program Files\filebeat\filebeat.yml(Windows)
基本的な入力設定
# Filestream input (recommended for log files)
filebeat.inputs:
- type: filestream
id: my-app-logs
enabled: true
paths:
- /var/log/myapp/*.log
fields:
app: myapp
environment: production
fields_under_root: true
ログ入力設定
# Log input (legacy, but still supported)
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
- /var/log/nginx/error.log
exclude_lines: ['^DEBUG']
include_lines: ['^ERR', '^WARN']
multiline.pattern: '^[[:space:]]'
multiline.negate: false
multiline.match: after
コンテナ入力設定
# Docker container logs
filebeat.inputs:
- type: container
enabled: true
paths:
- /var/lib/docker/containers/*/*.log
processors:
- add_docker_metadata: ~
Elasticsearch 出力
output.elasticsearch:
hosts: ["elasticsearch:9200"]
username: "elastic"
password: "${ES_PASSWORD}" # From keystore
index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
pipeline: "filebeat-%{[agent.version]}-apache-access-default"
Logstash 出力
output.logstash:
hosts: ["logstash:5044"]
loadbalance: true
ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
ssl.certificate: "/etc/pki/client/cert.pem"
ssl.key: "/etc/pki/client/cert.key"
Kafka 出力
output.kafka:
hosts: ["kafka1:9092", "kafka2:9092"]
topic: "filebeat"
partition.round_robin:
reachable_only: false
compression: gzip
max_message_bytes: 1000000
プロセッサ設定
processors:
- add_host_metadata:
when.not.contains.tags: forwarded
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~
- drop_fields:
fields: ["agent.ephemeral_id", "agent.id"]
- decode_json_fields:
fields: ["message"]
target: "json"
overwrite_keys: true
Docker 用 Autodiscover
filebeat.autodiscover:
providers:
- type: docker
hints.enabled: true
templates:
- condition:
contains:
docker.container.image: nginx
config:
- type: container
paths:
- /var/lib/docker/containers/${data.docker.container.id}/*.log
processors:
- add_docker_metadata: ~
Kubernetes 用 Autodiscover
filebeat.autodiscover:
providers:
- type: kubernetes
node: ${NODE_NAME}
hints.enabled: true
hints.default_config:
type: container
paths:
- /var/log/containers/*${data.kubernetes.container.id}.log
モジュール設定の例
# /etc/filebeat/modules.d/nginx.yml
- module: nginx
access:
enabled: true
var.paths: ["/var/log/nginx/access.log*"]
error:
enabled: true
var.paths: ["/var/log/nginx/error.log*"]
一般的なユースケース
ユースケース 1: アプリケーションログの収集
Note: Since some sections (3-20) were left blank in the original text, I’ve kept them blank in the translation as well. If you’d like me to fill those with placeholder text or have specific content for those sections, please provide the details.```bash
sudo vi /etc/filebeat/filebeat.yml
```yaml
filebeat.inputs:
- type: filestream
id: myapp-logs
enabled: true
paths:
- /var/log/myapp/*.log
fields:
app: myapp
env: production
# Test configuration and restart
sudo filebeat test config
sudo systemctl restart filebeat
```### ユースケース 2: Nginx ログ収集の設定
```bash
# Enable Nginx module
sudo filebeat modules enable nginx
# Configure module
sudo vi /etc/filebeat/modules.d/nginx.yml
- module: nginx
access:
enabled: true
var.paths: ["/var/log/nginx/access.log*"]
error:
enabled: true
var.paths: ["/var/log/nginx/error.log*"]
# Setup dashboards and restart
sudo filebeat setup --dashboards
sudo systemctl restart filebeat
```### ユースケース 3: Docker コンテナログ収集
```bash
# Run Filebeat in Docker to collect container logs
docker run -d \
--name=filebeat \
--user=root \
--volume="$(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \
--volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" \
--volume="/var/run/docker.sock:/var/run/docker.sock:ro" \
docker.elastic.co/beats/filebeat:8.11.0
```### ユースケース 4: Kubernetes DaemonSet デプロイメント
```bash
# Deploy Filebeat as DaemonSet using Helm
helm repo add elastic https://helm.elastic.co
helm repo update
# Create values file
cat > filebeat-values.yaml <<EOF
daemonset:
enabled: true
filebeatConfig:
filebeat.yml: |
filebeat.autodiscover:
providers:
- type: kubernetes
node: \${NODE_NAME}
hints.enabled: true
output.elasticsearch:
hosts: ["elasticsearch:9200"]
EOF
# Install Filebeat
helm install filebeat elastic/filebeat \
--namespace logging --create-namespace \
-f filebeat-values.yaml
```### ユースケース 5: マルチライン ログ解析(スタックトレース)
```bash
# Configure multiline pattern for Java stack traces
sudo vi /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: filestream
id: java-app
enabled: true
paths:
- /var/log/java-app/*.log
parsers:
- multiline:
type: pattern
pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:'
negate: false
match: after
# Test and restart
sudo filebeat test config
sudo systemctl restart filebeat
```### ユースケース 6: 複数の出力へのログ送信
```bash
# Configure Logstash output for processing and Elasticsearch for backup
sudo vi /etc/filebeat/filebeat.yml
output.logstash:
hosts: ["logstash:5044"]
loadbalance: true
# Note: Only one output can be active at a time in Filebeat
# For multiple outputs, use Logstash as intermediary
```### ユースケース 7: ログのフィルタリングと拡充
```bash
# Add processors to enrich and filter logs
sudo vi /etc/filebeat/filebeat.yml
processors:
- drop_event:
when:
regexp:
message: "^DEBUG"
- add_fields:
target: ''
fields:
datacenter: us-east-1
team: platform
- decode_json_fields:
fields: ["message"]
target: "json"
overwrite_keys: true
- drop_fields:
fields: ["agent.ephemeral_id", "ecs.version"]
```## ベストプラクティス
- **Filestream 入力を使用**: レガシー入力タイプよりも、ファイルローテーションでのパフォーマンスと信頼性が高い
- **モジュールを有効化**: 可能な限り、カスタム設定ではなく、事前構築されたモジュール(nginx、apache、mysql など)を使用して、より迅速なセットアップと優れた解析を実現
- **バックプレッシャー処理の実装**: データ損失を防ぐため、負荷スパイクを処理するように設定
- **認証情報の保護**: 機密情報(パスワード、API キー)は、プレーンテキストの設定ファイルではなく、Filebeat キーストアに保存
- **リソース使用状況の監視**: Filebeat のパフォーマンスとハーベスタのステータスを監視するための HTTP エンドポイントを有効化
- **インデックスライフサイクル管理(ILM)の使用**: インデックスの保持を自動管理し、ストレージコストを削減するための ILM ポリシーを設定
- **ログのタグ付けと拡充**: プロセッサを使用してカスタムフィールドとメタデータを追加し、ログの検索性とコンテキストを向上
- **本番前のテスト**: 設定変更をデプロイする前に、必ず事前にテスト
- **マルチライン ログの処理**: スタックトレースや複数行のアプリケーションログのマルチライン パターンを設定し、ログの断片化を防止
- **Autodiscover の実装**: 動的環境(Docker、Kubernetes)で新しいコンテナを自動的に検出および設定するために Autodiscover を使用
- **定期的な更新**: セキュリティパッチと互換性のため、Elasticsearch バージョンに合わせて Filebeat を最新の状態に保つ
- **適切な権限の設定**: Filebeat がログファイルの読み取りアクセス権を持ち、最小権限の原則に従うことを確認
`filestream`## トラブルシューティング
`log`## クイックリファレンス: 一般的なファイルの場所
`queue.mem.events`## パフォーマンス調整パラメータ
`output.elasticsearch.bulk_max_size`| 10秒 | 新しいファイルをチェックする頻度 | 5秒-30秒 |`http.enabled: true`) to monitor Filebeat performance and harvester status
- **Use Index Lifecycle Management (ILM)**: Configure ILM policies to automatically manage index retention and reduce storage costs
- **Tag and Enrich Logs**: Add custom fields and metadata using processors to make logs more searchable and contextual
- **Test Before Production**: Always use `filebeat test config` and `filebeat test output` before deploying configuration changes
- **Handle Multiline Logs**: Configure multiline patterns for stack traces and multi-line application logs to prevent log fragmentation
- **Implement Autodiscover**: Use autodiscover for dynamic environments (Docker, Kubernetes) to automatically detect and configure new containers
- **Regular Updates**: Keep Filebeat updated to match your Elasticsearch version for compatibility and security patches
- **Set Appropriate Permissions**: Ensure Filebeat has read access to log files but follows the principle of least privilege
## Troubleshooting
| 問題 | ソリューション |
|-------|----------|
| **Filebeat not starting** | Check configuration syntax: `sudo filebeat test config`<br>Check service status: `sudo systemctl status filebeat`<br>Review logs: `sudo journalctl -u filebeat -n 50` |
| **No data in Elasticsearch** | Test output connectivity: `sudo filebeat test output`<br>Check Elasticsearch is running: `curl http://elasticsearch:9200`<br>Verify index exists: `curl http://elasticsearch:9200/_cat/indices?v` |
| **Permission denied errors** | Ensure Filebeat has read access: `sudo chmod 644 /var/log/myapp/*.log`<br>Check file ownership: `ls -la /var/log/myapp/`<br>Run with proper user: `sudo chown root:root /etc/filebeat/filebeat.yml` |
| **Duplicate events** | Check registry file: `/var/lib/filebeat/registry/filebeat/data.json`<br>Ensure unique input IDs in configuration<br>Avoid multiple Filebeat instances reading same files |
| **High memory usage** | Reduce queue size: `queue.mem.events: 2048`<br>Decrease harvester limit: `filebeat.config.inputs.max_harvesters: 100`<br>Enable compression: `output.elasticsearch.compression_level: 3` |
| **Logs not being tailed** | Check file paths are correct: `ls -la /var/log/myapp/*.log`<br>Verify input is enabled in configuration<br>Check close_inactive setting isn't too aggressive |
| **Connection timeout to Elasticsearch** | Increase timeout: `output.elasticsearch.timeout: 90`<br>Check network connectivity: `telnet elasticsearch 9200`<br>Verify credentials: `curl -u elastic:password http://elasticsearch:9200` |
| **Module not working** | Verify module is enabled: `sudo filebeat modules list`<br>Check log paths in module config: `cat /etc/filebeat/modules.d/nginx.yml`<br>Ensure ingest pipelines loaded: `sudo filebeat setup --pipelines` |
| **Multiline logs not parsing** | Test pattern with sample logs<br>Check `multiline.negate` and `multiline.match` settings<br>Review harvester debug logs: `sudo filebeat -e -d "harvester"` |
| **SSL/TLS connection errors** | Verify certificate paths and permissions<br>Check certificate validity: `openssl x509 -in cert.pem -text -noout`<br>Disable SSL verification for testing: `output.elasticsearch.ssl.verification_mode: none` |
| **Registry file corruption** | Stop Filebeat: `sudo systemctl stop filebeat`<br>Backup registry: `sudo cp -r /var/lib/filebeat/registry /tmp/registry.bak`<br>Remove registry: `sudo rm -rf /var/lib/filebeat/registry`<br>Restart (will reprocess logs): `sudo systemctl start filebeat` |
| **Autodiscover not detecting containers** | Check Docker socket permissions: `ls -la /var/run/docker.sock`<br>Verify autodiscover config syntax<br>Enable debug: `sudo filebeat -e -d "autodiscover"` |
## Quick Reference: Common File Locations
| アイテム | ロケーション (Linux) | ロケーション (Windows) |
|------|------------------|-------------------|
| **Main config** | `/etc/filebeat/filebeat.yml` | `C:\Program Files\filebeat\filebeat.yml` |
| **Module configs** | `/etc/filebeat/modules.d/` | `C:\Program Files\filebeat\modules.d\` |
| **Registry** | `/var/lib/filebeat/registry/` | `C:\ProgramData\filebeat\registry\` |
| **Logs** | `/var/log/filebeat/` | `C:\ProgramData\filebeat\logs\` |
| **Binary** | `/usr/share/filebeat/bin/filebeat` | `C:\Program Files\filebeat\filebeat.exe` |
| **Data directory** | `/var/lib/filebeat/` | `C:\ProgramData\filebeat\` |
## Performance Tuning Parameters
| パラメータ | デフォルト | 説明 | 推奨範囲 |
|-----------|---------|-------------|-------------------|
| `queue.mem.events` | 4096 | イベントキューが保持できるイベントの数 | 2048-8192 |
| `queue.mem.flush.min_events` | 2048 | 最小フラッシュ前のイベント数 | 1024-4096 |
| `output.elasticsearch.bulk_max_size` | 50 | バルクリクエストあたりの最大イベント数 | 50-1600 |
| `output.elasticsearch.worker` | 1 | 出力ワーカーの数 | 1-4 |
| `filebeat.config.inputs.max_harvesters` | 0(無制限) | 最大同時ファイル読み取り数 | 100-500 |
| `close_inactive` | 5m | 非活動後にファイルを閉じる | 1m-10m || `scan_frequency` | 10s | How often to check for new files | 5s-30s |