ハードウェア関連
目次
USB thermometer-528018の扱い方全般。
Raspberry Piに導入したDebian GNU/Linux 12(bookworm)にて使用する方法。
注意点としては、本機器を複数接続してもデバイスのIDが重複するため、1システム内では1個までに控えることを推奨する。
本機器を接続することで自動的に認識される。
正常に認識されていることを確認する。
# lsusb Bus 001 Device 019: ID 0c45:7401 Microdia TEMPer Temperature Sensor
本デバイスからデータを出力するためのコマンドはgit上にソースが公開されている。
以下の手順に従い、gitよりソースコードを取得してコンパイルして使用する。
# apt-get install gcc libusb-dev # cd /usr/local/src # git clone https://github.com/bitplane/temper.git # cd ./temper # make
正常にコンパイルが終了すると、temperのバイナリが生成される。
必要な権限などを付与し、バイナリを然るべきディレクトリに移動させる。
# chmod 755 temper # cp temper /usr/local/sbin
コマンドを実行すると、以下のようにタイムスタンプと温度が標準出力にカンマ切りで出力される。
# /usr/local/sbin/temper 05-Jul-2024 14:06,34.640152
タイムスタンプはUTCで表示される。
Zabbixに温度データを取り込み、時系列グラフを生成する。
データを取り込むに当たり、Zabbix Agentをインストールする。
# apt-get install zabbix-agent
詳細な設定などは省略
Zabbixに取り込むには、いくつかの方法が考えられる。
temperはroot権限による実行が必要となる。このため、1.の方式を実装するためにはZabbix Agentからsystem.run[]キーで実行出来るように、sudoを用いてzabbixユーザ権限でも実行が可能な状況を作る必要がある。また、Zabbix AgentのAllowkeyにsystem.run[*]を許可させる必要があることから、セキュリティ面のリスクも存在する。
また、3.の方式は標準出力の結果をコマンドに引き渡すスクリプトが必要となる。
以上のことから、今回は2.の方式を採用することとした。
定期実行は1分毎とするため、以下の設定を行う。
* * * * * /usr/local/sbin/temper >> /var/log/zabbix-agent/temper.log
実行の度にログに追記されていくことから、ログ溢れを起こさない様にzabbix-agentのローテーションの設定に細工する。~、
対象となるログファイルを *.log に変更することで、ファイル名が合致すればローテーション出来るようにする。
また、保存期間が長いため、ローテーションは日次(daily)、世代数は14世代とした。
/var/log/zabbix-agent/*.log { daily rotate 14 compress delaycompress missingok notifempty create 0640 zabbix zabbix sharedscripts postrotate [ -e /run/zabbix/zabbix_agentd.pid ] && invoke-rc.d zabbix-agent force-reload >/dev/null || true endscript
監視設定はログ監視を行うアイテムと、その中から温度情報のみを取り込む依存アイテムを用いた構造とする。
ホストにより参照するログファイルが変わる場合には、ホストマクロとして{$TEMPERLOG}を定義して絶対パスを設定することで上書きする。
名前 | temper log (raw data) |
タイプ | Zabbixエージェント(アクティブ) |
キー | log[{$TEMPERLOG}] |
データ型 | ログ |
監視間隔 | 1s |
ヒストリの保存期間 | 10d |
名前 | USB Temper |
タイプ | 依存アイテム |
キー | hw[Temper] |
データ型 | 数値(浮動小数) |
マスターアイテム | temper log (raw data) |
単位 | ℃ |
ヒストリの保存期間 | 90d |
トレンドの保存期間 | 365d |
名前 | 正規表現 |
パラメータ | (\d+\.\d+) |
\1 | |
データ型 | 数値(浮動小数) |
$TEMPERLOG} | /var/log/zabbix-agent/temper.log |