IIJ Machinist ことはじめ
IIJ Machinist とはなにか
IIJ が提供している、データを可視化するダッシュボードサービスです。
10メトリック、1ヶ月だけ保存する条件ならフリーで、もっとメトリックを増やしたり、保存期間を伸ばしたいなら費用を支払うという仕組みのようです。
メトリックというのは、あるセンサーなどで計測した数値の集合(キッチンにある温度計の温度、とか)です。
メトリックの送信は HTTPS リクエストを送るだけなのでとても楽そう。ということで試してみました。
基本的にはここの. Getting Started のままで、これを Python コードにしたものです
Python でデータを送ってみる
アカウント作成と API キーの作成
IIJ Machinist のページにログインして、 https://machinist.iij.jp/ アカウントを作成します。
ログインした後、画面右上の「アカウント設定」を表示すると、 API キーが表示されます。
(この API キーは秘密情報なので 他の人と共有しないでください )
送信プログラムの作成
こういうクラスを定義すると、api_key
と エージェント名を設定して、 send で送信できるようになります。
class Machinist:
def __init__(self, api_key, agent:str):
self.api_key = api_key
self.agent = agent
self.url = "https://gw.machinist.iij.jp/endpoint"
self.headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}",
}
def send(self, metrics: list):
ret = requests.post(url,
json={
"agent": self.agent,
"metrics": metrics
},
headers=self.headers
)
assert ret.status_code == 200, ret.text
こんなふうにデータを送れます。
この場合、 グループ名 Environment Sensor
、 メトリック名 temperature
という計測データに対して、 27.6 + ランダムな値を送信しているということになります。
import random
machinist = Machinist("YOUR_API_KEY", "Home")
machinist.send([
{
"name": "temperature",
"namespace": "Environment Sensor",
"data_point": {"value": 27.6 + random.uniform(-5, 5)}
}
])
何回か実行すると、こんな風に自動的にグラフがアップデートされていきます。温度の変動みたいですね。
グラフ表示以外の使い方:監視とアクション
データをグラフで表示して見るというのもいいですが、他にも使い方があるようです。
監視
監視というのは、特定のメトリックが特定の条件を満たしたかをチェックしてくれる機能です。
アクション
アクションというのは、 IIJ Machinist が何らかの外部への通信をする機能です。
今のところは、 Microsoft Teams と Slack の Webhook への送信か、メールの送信ができるようです。
監視とアクションを組み合わせる
監視とアクションを組み合わせると、「ある条件を満たしたら自動的に何らかのアクションを行う」ということができます。
「過去5分間の平均気温が30℃を超えたら、自分にメールを送る」という部屋の管理とか
「笑顔度合いが過去5分間十分低かったら、Slack で上司に報告する」という邪悪な応用とか
ができそうです。
Discussion