コンテンツにスキップ

Filebeat チートシート

Filebeat チートシート

インストール

プラットフォームコマンド
Ubuntu/Debian`wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch \
RHEL/CentOSsudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo yum install filebeat
macOSbrew tap elastic/tap
brew install elastic/tap/filebeat-full
WindowsDownload from https://artifacts.elastic.co/downloads/beats/filebeat/
Extract and run: .\install-service-filebeat.ps1
Dockerdocker 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 filebeatFilebeatサービスを開始
sudo systemctl stop filebeatFilebeatサービスを停止
sudo systemctl restart filebeatFilebeat サービスを再起動
sudo systemctl status filebeatFilebeat サービスの状態を確認
sudo systemctl enable filebeatFilebeat を起動時に有効にする
sudo filebeat -eコンソール出力で Filebeat をフォアグラウンドで実行
sudo filebeat -e -c /path/to/filebeat.yml特定の設定ファイルで実行する
sudo filebeat test config設定ファイルの構文を検証する
sudo filebeat test output設定された出力への接続を確認
sudo journalctl -u filebeat -fFilebeat サービスのログをリアルタイムで表示
sudo filebeat modules list利用可能なモジュールをすべて一覧表示
sudo filebeat modules enable apache特定のモジュールを有効にする(Apacheの例)
sudo filebeat modules disable apache特定のモジュールを無効にする
sudo filebeat setupインデックステンプレート、ダッシュボード、およびパイプラインをロード
sudo filebeat versionFilebeatのバージョン情報を表示

モジュール管理

コマンド説明
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-managementElasticsearch でインデックステンプレートのみをセットアップ
sudo filebeat setup --dashboardsKibanaダッシュボードのみをセットアップ
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-policyILM(インデックスライフサイクル管理)ポリシーをエクスポート

高度な使用法

コマンド説明
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=5066HTTPモニタリングエンドポイントを有効化
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=3Elasticsearch 出力の圧縮を有効にする
sudo filebeat test config -e -d "processors"デバッグ出力を使用してプロセッサの設定をテストする
sudo filebeat migrate-registry古いFilebeat バージョンからレジストリを移行する
sudo filebeat export config設定全体を標準出力にエクスポート
curl http://localhost:5066/autodiscoverautodiscover ステータスを確認

キーストア管理

コマンド説明
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

Enable filestream input for application logs

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 |