DatadogでDatadogpyを使ってコンソールからのDashboard(Screenboard)のテキストオブジェクトを書き換える
Pocket

仕事でDatadogを使用しているのだが、Dashboard上でクライアントから取得した文字列(プログラムのバージョンとか)を表示させたいので少し調べてみた。
で、以下のようなアドバイスを頂いたので実際にやってみる事にした。

なお、DatadogではすでにApplicationKeyを発行済みとする。

 

ふむぅ…まず、Datadogpyというパッケージを使用する必要があると。
じゃあ、これをpipからインストールしてみよう。

yum install python-pip
pip install datadog

 

パッケージインストール後、まず以下のコマンドでDashboardの設定ファイルをダウンロードする。

dog --api-key API_KEY --application-key APP_KEY screenboard pull DashboardID(ダッシュボードのURLに記載) 出力先PATH(JSONファイル)
[root@test-node ~]# dog --api-key b93XXXX1c7e3cd9eXXXXcad04XXX3689 --application-key XXXXfe9f0c9XXXXc10bfbXXXXc6fc6XXXX446791 screenboard pull XXXXX test.jq
hostname: Name or service not known
XXXXX test.jq
[root@test-node ~]# cat test.jq
{
  "board_title": "test",
  "read_only": false,
  "board_bgtype": "board_graph",
  "created": "2016-04-17T05:11:07.544282+00:00",
  "original_title": "",
  "modified": "2016-04-17T05:50:00.013083+00:00",
  "height": 80,
  "width": "100%",
  "template_variables": [],
  "widgets": [
    {
      "board_id": XXXXX,
      "title_size": 16,
      "title": true,
      "color": "#4d4d4d",
      "text": "test-2",
      "title_align": "left",
      "text_align": "left",
      "title_text": "",
      "height": 7,
      "width": 30,
      "y": 1,
      "x": 2,
      "font_size": "auto",
      "type": "free_text"
    },
    {
      "board_id": XXXXX,
      "title_size": 16,
      "title": true,
      "title_align": "left",
      "title_text": "",
      "height": 13,
      "tile_def": {
        "viz": "timeseries",
        "requests": [
          {
            "q": "avg:system.cpu.user{host:test-node}",
            "conditional_formats": [],
            "type": "line"
          }
        ]
      },
      "width": 47,
      "timeframe": "1h",
      "y": 9,
      "x": 2,
      "legend_size": "0",
      "type": "timeseries",
      "legend": false
    }
  ],
  "shared": false,
  "id": XXXXX,
  "title_edited": false
Sponsored Links

で、書き換えたいテキストファイルの中身(上の場合、「test-2」となっている箇所)をjqやsedなどで書き換え、以下のコマンドで再度設定ファイルをアップロードする。
※widgetsの配列番号は環境ファイルに合わせる事

jq '.widgets[0].text = "書き換え後の文字列"' <<< $(cat JSONファイル) > JSONファイル
dog --api-key API_KEY --application-key APP_KEY screenboard push JSONファイル

 

これで、Dashboardのテキストオブジェクトの値が書き換わっているはずだ。
できればdd-agent側で文字列も送信させたいのだけど、現状はこの方法が一番良いのではなかろうか。

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。