ようへいの日々精進XP

よかろうもん

mruby で Datadog API Client を作ってみた

追記

github.com

mgem-list にも取り込んで頂いた。

mgem-list に取り込んでいただくには mgem-list を fork して mruby-xxxx.gem ファイルを以下のように作成して Pull Request を送る。

name: mruby-datadog
description: Datadog API Client.
author: Yohei Kawahara
website: https://github.com/inokappa/mruby-datadog
protocol: git
repository: https://github.com/inokappa/mruby-datadog.git
dependencies:
- mruby-httprequest
- mruby-json
- mruby-polarssl

CI で以下のように Fail してしまったりしたが...無事に取り込んで頂いた。

f:id:inokara:20151030234025p:plain

なんかモチベーション上がる。


tl;dr

暫く触れていなかった mruby を改めて勉強したいと思ったので mrbgems として Datadog API Client を作ってみた。

github.com


使い方

インストール

詳しくは README を。

対応している API

今のところは...

  • Events
  • Metrics
  • Search

出来るだけ Ruby 製のクライアントに似せて作るようにしたい。

サンプル

  • 以下のようなサンプルを用意
config = {
  :api_key   => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
}

dog = Datadog::Client.new(config)

# Events
puts "response: #{dog.events("mruby.test", "test", :alert_type => "error")['body']}"

# Metrics
count = rand(1000) # Use: https://github.com/iij/mruby-simple-random
puts "response: #{dog.series("mruby.test", count, :host => "foo.bar.com")['body']}"
  • 実行
$ mruby datadog-api-client.rb
  • レスポンス
response: {"status": "ok", "event": {"priority": null, "date_happened": 1446129785, "handle": null, "title": "mruby.test", "url": "https://app.datadoghq.com/event/event?id=3051220596304082848", "text": "test", "tags": [null], "related_ev
ent_id": null, "id": 3051220596304082848}}
response: {"status":"ok"}
  • Datadog のダッシュボード(Events)

f:id:inokara:20151030073233p:plain

  • Datadog のダッシュボード(Metrics)

f:id:inokara:20151030073243p:plain


おわり

todo

  • Metrics の Data point をバルク(配列)で渡せるようにする(API の仕様に合わせる)
  • その他の API に対応

以上。