読者です 読者をやめる 読者になる 読者になる

雑記

インフラのことだったりプログラムのことだったりどうでもいいこと書いたり。要は雑記。

fluentdとzabbixを連携(1)

fluentdとzabbixを連携してみるよ。
今回はお試しということで、Apacheステータスコードを集計してzabbixに送ってみる

プラグイン

fluentdの以下のプラグインを利用

  • datacounter
  • zabbix

プラグインのインストール

# /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-datacounter
# /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-zabbix

設定

  • /etc/td-agent/td-agent.conf
<match apache.access>
  type datacounter
  count_interval 5m
  count_key code
  tag response.code.analysis
  pattern1 2xx ^2\d\d$
  pattern2 3xx ^3\d\d$
  pattern3 4xx ^4\d\d$
  pattern4 5xx ^5\d\d$
</match>
<match response.code.analysis>
  type zabbix
  zabbix_server localhost
  host Zabbix server
  name_key_pattern [2-5]xx_count
  add_key_prefix fluentd
</match>
  • これでzabbixに投げる

zabbixの設定

  • 管理画面からアイテムを作ればOK
  • 設定は以下の点を注意
    • 「タイプ」は「Zabbixトラッパー」
    • 「キー」はfluentdで設定した値を利用。今回の設定だと「fluentd.apache.access_2xx_count」となる
      • 他の3~5xxのコードに関しては、2xxの箇所を変えてけばOK
  • 5分経過後、データが取得できていることを確認

Tips

td-agentのログレベル

  • ちゃんとZabbixとの通信が出来ているか不安な場合、td-agentのログ出力レベルを上げると確認できるよ。
  • /etc/init.d/td-agent
    • 変更前
TD_AGENT_ARGS="${TD_AGENT_ARGS-/usr/sbin/td-agent --group td-agent --log /var/log/td-agent/td-agent.log}"
    • 変更後
TD_AGENT_ARGS="${TD_AGENT_ARGS-/usr/sbin/td-agent --group td-agent --log /var/log/td-agent/td-agent.log -vv}"
    • 最後に「-vv」を付与すればよい。zabbixに設定するキーの値や送信した値も出してくれるから便利

td-agentのsyntax check

  • 設定ファイルのsyntax checkしてくれるよ(apacheでいうhttpd -t)
# /etc/init.d/td-agent configtest
  • まぁリスタート時に勝手にチェックしてくれるんだけどね