helen's blog

ずっとおもしろいことしてたいな。

DatadogでCouchbaseの死活監視を構築する

超ピンポイントなネタだけどわたしには難易度が高かった..

概要

DatadogでのService CheckにAlertを設定するまでがなかなか独特で
今後も使うのに忘れちゃいそうと思ったのでメモします

詳細

環境

  • AWS
  • CouchbaseをEC2へインストールしクラスタ構成にする
  • Datadong Agent(v6.10.2)を同様にインストールしてモニタリング

Couchbaseとは

  • ドキュメント型NoSQL
  • JSONが扱える
  • Enterprise版はAMIが提供されている

docs.couchbase.com

わたしのところではPackerでコミュニティ版をインストールしたAMIを作成して運用しています

やりたかったこと

  • CouchbaseをインストールしたEC2ホストの監視
  • Target GroupのHealthyHostの数ではなく、ホストでCouchbaseが元気にしているかを見たい

AWSでは不定期にEC2インスタンスがメンテナンスされます
それによってインスタンス入れ替えが発生し、
Couchbaseクラスタからノードが切り離されたままになる事態が発生しました
(本番環境での事件でなくてとてもよかった!!!)

この時、Couchbaseインストール済みのAMIだったので
再起動後にもHealthHostにはカウントされていたのですが、
構築済みだったクラスタからは外れてしまい
クラスタとしてはノードがダウンした状態になっていました

これがHealth HostではなくCouchbase Hostとしての監視をしていれば検知できたのでは?と考えました

Datadogでどのように監視できるのか?

そのホストのCouchbase ServerにDatadog Agentが接続できるかで判定します
該当するメトリクスは couchbase.can_connect です
couchbase.by_node.health_status でもノードがダウンしたときに取れそうなのですが、
すべてのノードでエージェントが可動していると
自分以外のノードも監視対象になっていてノード数 * ノード数の監視になりそうだったので
今回は couchbase.can_connect で監視することにしました

docs.datadoghq.com

他のメトリクスに比べてService Checkは設定が難しかった..

1つ目のハマりポイント: couchbase.can_connect をコンソール上で見つけられない

Metrics Explorerで見れるだろうと思ったら見つけられず...

メトリクスの検索画面

メトリクスとしては検索できず、Monitors -> Check summary内にある

service checkの有りか

Service Checkなので見方としてもメトリクスではなく監視扱いなのかな?

docs.datadoghq.com

2つ目のハマりポイント: couchbase.can_connect のアラートが設定できない

Datadog AgentでCouchbaseの監視設定をすると、
自動的にCouchbase Integrationがオンになります

なので New Monitor -> Integration で
couchbase.can_connect に対して監視を設定しようと思ったのですが、
対象の値を見つけられませんでした

アラート設定画面

Service Checkに対して監視設定を入れるには
実はIntegration Statusタブに切り替える必要がありました

Service Checkの探し方

たしかにドキュメントを見るとReturn Criticalになっていて、
他と設定が違いそうな雰囲気にも見える

- couchbase.can_connect:
Returns Critical if the Agent cannot connect to Couchbase to collect metrics.

なかなか道のりは長かったけど、Supportの方にとても親切に対応してもらえてとても助かった
これでService Checkはマスターしたぞ!たぶん!