DatadogにAPIを利用して監視設定情報を登録します。
まず、DatadogAPIを使用する場合に先に準備としてアプリケーションキーを作成しておく必要があります。
アプリケーションキーはメニューのAPIsで開いた画面から作成することができます。
このアプリケーションキーとAPIのキーを使用してAPIを実行します。
監視の登録は下記の公式ドキュメントに記述している通り「/api/v1/monitor」に対して登録したい内容をbodyに指定することで可能です。
https://docs.datadoghq.com/api/?lang=bash#create-a-monitor
bodyの指定内容がやや分かりづらい(特にquery)ので画面から登録した内容をエクスポートして参考にするのが良さそうです。
今回は複数のホストに対してプロセス監視の設定を登録したので下記のようなスクリプトを作成しました。
#!/bin/sh api_key=APIキー app_key=アプリケーションキー hosts=(host1 host2 host3 host4 host5) targets=(crond systemd rsyslogd) datadog_url="https://api.datadoghq.com/api/v1/monitor?api_key="$api_key"&application_key="$app_key function create_process(){ host=$1 target=$2 json=$(cat <<<" { \"type\": \"service check\", \"query\": \"\\\"process.up\\\".over(\\\"host:$host\\\",\\\"process:$target\\\").last(2).count_by_status()\", \"name\": \"check process $host $target\", \"message\": \"@xxxxx@gmail.com\", \"tags\": [], \"options\": { \"notify_no_data\": true, \"no_data_timeframe\": 20 } } ") curl -k -H "Content-Type: application/json" --data "$json" $datadog_url } for host in ${hosts[@]} do for target in ${targets[@]} do create_process $host $target done done
DatadogはAPIが充実しているので、構築や運用設計をする際は全てスクリプト化ができそうです。