[Zabbix]Nature Remo で取得した値をZabbixでグラフ化する

AIX、UNIX、LinuxSoftwarezabbix
https://qiita.com/miyuk/items/08dfd90ac3e1f0c86ecf

はじめに

先日、Nature Remoを購入したことを書きましたが、Nature Remoのもう一つの特徴としてアカウントの登録を行うことで非サポートながらも外部からAPIで値を取得出来る特徴があるので、環境変化の履歴の意味でも、その値をZabbixに蓄積しグラフ化することにしました。

先日の記事

確認環境

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
$ zabbix_server -V
zabbix_server (Zabbix) 5.4.3
Revision 68dc2b0 21 July 2021, compilation time: Jul 22 2021 12:58:26

Copyright (C) 2021 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).

Compiled with OpenSSL 1.1.1f  31 Mar 2020
Running with OpenSSL 1.1.1f  31 Mar 2020

作業の流れ

1. Nature RemoのAPIアクセストークンの取得

以下のWebサイトにアクセスして、アカウントを登録後Nature Remoのアクセストークンを取得する。

その値をメモしておいてください。

2. 取得したいNature RemoのデバイスIDを取得する

上記で得られたのアクセストークンを使って下記curlを実行し、レスポンスから取得したNature RemoのデバイスIDをメモしておく(後で使用するため)。

見やすくするため整形のためのjqコマンドを併用しています。

$ curl -X GET "https://api.nature.global/1/devices" -H "Accept: application/json" -H "Authorization: Bearer <取得したNature Remo APIアクセストークン>" | jq
[
  {
    "name": "自室",
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",     <- これがデバイスID
    "created_at": "2021-05-28T12:26:25Z",
    "updated_at": "2021-06-03T05:15:12Z",
    "mac_address": "zz:yy:xx:ww:vv:uu",
    "serial_number": "ssssssssssssss",
    "firmware_version": "Remo/1.0.79-gbbcb0e8",
    "temperature_offset": 0,
    "humidity_offset": -5,
    "users": [
      {
        "id": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
        "nickname": "nickname",
        "superuser": true
      }
    ],
    "newest_events": {
      "hu": {
        "val": 48,
        "created_at": "2021-06-03T04:38:18Z"
      },
      "il": {
        "val": 239,
        "created_at": "2021-06-03T06:07:34Z"
      },
      "mo": {
        "val": 1,
        "created_at": "2021-06-02T04:24:12Z"
      },
      "te": {
        "val": 27.8,
        "created_at": "2021-06-03T05:34:25Z"
      }
    }
  }
]

3. 既に先駆者が作成しているzabbixテンプレートをZabbixにインポート、ホストに登録する

参考先のものをそのまま使用させていただきました。

Zabbixに上記のテンプレートを適用したホストを登録(対象のNature Remoのこと)する際に、マクロ設定からアクセストークン、デバイスIDを登録する。これを行うことで複数のNature Remoがあっても認識させることが出来る。

4. 結果を出力

結果をAPI経由で5分毎に取得することで以下のようなグラフも出力できるようになります。

ちなみに

今回使用させていただいたテンプレートでは Zabbix HTTP Agent が使用されているのですが、これ使用してみると大変便利ですね。今まではどうしても事前にスクリプトなどでデータを分解した上でZabbix Senderなどを使ってデータを送り込んだりしていましたが、最近は何でも json で取得できるので、その辺りの処理がしやすくなりました。

あとたぶんZabbix側の処理も細かいデータを送り込まれるよりは処理に優しそうな気もします。

かなり昔に記事にした天気情報の分解などもあのときはスクリプトでごり押ししましたが、この辺りを使えば大分すっきりする気もします(たぶん、作り直すことはないですが)。

参考サイト

この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
タイトルとURLをコピーしました