CloudWatchのApplicationELBのHealthyHostCountをFluent経由でZabbixに送信する際にはまった点

CloudWatch上の各種メトリクスをEC2上のFluent経由でZabbixに送信する際にちょっとはまったので備忘録がてらメモします。

今回Zabbix側は問題なかったのでCloudWatch ⇒ Fluentがメインの話です。

Zabbixは既に構築済みの環境を利用したので、まずはFluentdのインストールから

インストール方法は下記を参考にしました。
fluentdでCloudWatchのELBのメトリクスをZABBIXに渡す

リンク先の手順は詳細に記述されているのでその通りに進めれば特に問題なく導通確認まで可能となりました。

その後、監視対象としてRDSなどを設定していましたが、
そのあたりはfluent-plugin-cloudwatchのGithub上のREADME.mdに使い方の記述があったのでその通りに設定を行いました。

特に問題なくメトリックスの取得とZabbixへの送信ができていましたが、
掲題の通りApplicationELBのHealthyHostCountだけうまく取得できていませんでした。

そのときのtd-agent.confが下記のような感じ

    namespace AWS/ApplicationELB
  metric_name HealthyHostCount
  dimensions_name LoadBalancerName
  dimensions_value [AppELB名称]

これで気が付く人はいると思いますが一応解決方法を記載します。

解決方法

結論から言うと、前述のtd-agent.confの記述方法が誤りで、
dimensions_nameとdimensions_valueの指定が足りませんでした。
(よく見ると変数名が複数形だし、ソースを見ると内部で「,」のsplitを行っていました)

公式サイトにもMetric Dimensions for Application Load Balancersは、

  • AvailabilityZone
  • LoadBalancer
  • TargetGroup

の3つがあることが明記されていますね。

Application Load Balancer の CloudWatch メトリックス

実際に必要な項目は、CloudWatchのコンソール画面から確認できます。
CloudWatchのページにアクセスして、

  1. メトリックスからApplicationELBを選択
  2. 「AppELB 別、AZ 別、TG 別メトリクス」もしくは「AppELB 別、TG 別メトリクス」を選択
  3. 対象の「HealthyHostCount」をチェックしてグラフ化したメトリクスタブに表示
  4. グラフ化したメトリクスタブのディメンションで必要な設定値をToolTip表示

で確認ができます。

最終的にはこんな感じ。

  namespace AWS/ApplicationELB
  metric_name HealthyHostCount
  dimensions_name LoadBalancer,TargetGroup
  dimensions_value app/xxxx/123456,targetgroup/xxxx/aaaaaa

AvailabilityZone別でカウントを取りたい場合はカンマ区切りで末尾に追加すればOK

  namespace AWS/ApplicationELB
  metric_name HealthyHostCount
  dimensions_name LoadBalancer,TargetGroup,AvailabilityZone
  dimensions_value app/xxxx/123456,targetgroup/xxxx/aaaaaa, your_zone

まとめ

AWSは初めて使ったので想定外の動作になった時に疑うべきポイントがなかなか絞り切れませんでした。
基本的にトライ & エラーを繰り返してましたが、
利用ツールや仕様をしっかり調べていればもっとはやく解決できたと思うと反省点が多かったです。

参考サイト

ZabbixでAWS/CloudWatchの値を取得してみた

ZabbixとFluentdを使ってCloudWatchの情報を長期保存する

ElastiCacheをCloudWatch+fluentd+Zabbixで監視する

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る