filebeats でNginxのログを確認する

Ingest nodeと、FileBeatのモジュールがで利用できるようになって、とりあえず小規模でとりあえず導入するような構成ならLogstashとか、Fluentd無しのFilebeat + Elasticsearch + Kibanaの構成でなんとかなるんじゃ無いかと試してみる。
ある程度以上の規模になったり、欠損が許容されないような場合は、Logstashとか、FluentdのようなAggregatorを間に挟んだほうが当然良いと思う。

Filebeatsをインストールする

公式サイトのインストール方法を参考にインストールする。

www.elastic.co

Nginx Moduleで出力するIndexを分ける

たとえばNginx用のIndexを分ける場合は以下のような設定をする。
prospectorでfield を追加して、output側で特定の条件(fields.typeが"accesslog"の場合)にnginx-%{+yyyy.MM.dd}という indexに送信するとしている。
ただし、nginx.access.geoipのマッピングをする必要が出てくるので、特に問題がなければデフォルトで提供されているfilebeat-* のIndexを使う方が手間は少ない。

filebeat.modules:
- module: nginx
  # Access logs
  access:
    enabled: true
    var.paths:
      - /var/log/nginx/access.log
    prospector:
      fields:
        type: accesslog

  # Error logs
  error:
    enabled: true
    var.paths:
      - /var/log/nginx/error.log
    prospector:
      fields:
        type: "accesslog"


output.elasticsearch:
  enabled: true

  hosts: ["リモートホスト:9200"]
  index: "filebeat-%{+yyyy.MM.dd}"
  indices:
    - index: "nginx-%{+yyyy.MM.dd}"
      when.equals:
        fields.type: "accesslog"

Nginx ModuleとSyslog Moduleで出力するIndexを分ける

Nginx Moduleはデフォルトのfilebeat-* に出力し、Syslog Moduleの出力先のみ変更する。

filebeat.modules:
- module: system
  # Syslog
  syslog:
    enabled: true
    var.paths: ["/var/log/secure"]
    prospector:
      fields:
        app: "syslog"

filebeat.modules:
- module: nginx
  # Access logs
  access:
    enabled: true
    var.paths:
      - /var/log/nginx/access.log

  # Error logs
  error:
    enabled: true
    var.paths:
      - /var/log/nginx/error.log


output.elasticsearch:
  enabled: true

  hosts: ["リモートホスト:9200"]
  index: "filebeat-%{+yyyy.MM.dd}"
  indices:
    - index: "syslog-%{+yyyy.MM.dd}"
      when.equals:
        fields.app: "syslog"
    - index: "filebeat-%{+yyyy.MM.dd}"
      default:

結論

デフォルトで用意されているDashboardは、一からダッシュボードを作らなくて良いのでこんなことが出来るというという取っ掛かりには良い。         filebeat-* になんでも入れると、ダッシュボードが上手く動かないとか出て来るので最低限でもモジュール単位ぐらいでは Index を分けたくなるが、そのあたりを filebeat だけでやる情報が中々なくて手間取ったが、そこそこ使える感じにはなった。         比較的小規模でAWSなどでCPUクレジットがあるようなインスタンスを使っている場合は、filebeatだけで済むのでCPU負荷が低くてすむという利点もある。