tl;dr
何度か書いているかもしれないけど。
参考
Datadog でオリジナルなデータを飛ばす Agent Check の雛形
概要
- チェックスクリプトは Agent クラスを継承、check() を利用して書き、/etc/dd-agent/checks.d/ 以下に置く
- チェックスクリプトの設定ファイルは YAML で書いて /etc/dd-agent/checks.d/ 以下に置く
- チェックスクリプトファイル名と設定ファイル名は同じにしておく(拡張子は別)必要がある
- API を直接叩くのではなく、Datadog Agent の監視に含まれるので余計な cron 等を設定する必要が無いのが嬉しい
チェックスクリプト
/etc/dd-agent/checks.d/ 以下に置くもの。
- 雛形
from checks import AgentCheck class YourCheck(AgentCheck): ''' このあたりに色々と処理を書く ''' def check(self, instance): global_config = self.init_config.get('foo') instance_config = instance['bar'] self.gauge('foo.bar', value)
- 実装例(とある API が返す値(my_value)を Datadog に
gauge
で送る)
from checks import AgentCheck import requests, json class MyValue(AgentCheck): def get_my_value(self, endpoint): response = requests.get(endpoint) return response.json()['my_value'] def check(self, instance): metrics_key = self.init_config.get('metrics_key') endpoint = instance['endpoint'] my_value = self.get_my_value(endpoint) self.gauge(metrics_key, my_value)
チェックスクリプトの設定ファイル
/etc/dd-agent/conf.d/ 以下に置くもの。
Check 実行ファイルおよび設定ファイルの名前(拡張子を除く)は一致している必要があります。 例えば、実行ファイルがmycheck.py の場合、設定ファイルは、mycheck.yaml というファイル名になります。
とのことなので、チェックスクリプトファイル名と設定ファイル名は同じにしておく(拡張子は別)必要がある。大事なことだと思うので二度書いた。
- 雛形
init_config: instances: [{}]
実装例(メトリクスキー foo.bar
でメトリクスを送信する)
init_config: metrics_key: 'foo.bar' instances: - endpoint: 'https://api.endpoint.example.com'
以上
メモ。
また、来年あたり書くかもしれない。