[[ハードウェア関連]]
目次~
#contents

*概要 [#e43ed6a8]
USB thermometer-528018の扱い方全般。~

*Raspberry Pi [#pf01c4dc]
Raspberry Piに導入したDebian GNU/Linux 12(bookworm)にて使用する方法。~
注意点としては、本機器を複数接続してもデバイスのIDが重複するため、1システム内では1個までに控えることを推奨する。~

**基礎情報 [#g61c4109]
-製品
[[USB thermometer-528018:https://www.amazon.co.jp/OEM-USB%E6%B8%A9%E5%BA%A6%E8%A8%88-USB-thermometer-528018/dp/B004FI1570/ref=as_sl_pc_tf_til?tag=nekyo-22&linkCode=w00&linkId=67b58424c471519d134bac357647f638&creativeASIN=B004FI1570]]

**デバイスの接続 [#cbdf62c0]
本機器を接続することで自動的に認識される。~
正常に認識されていることを確認する。~

 # lsusb
 Bus 001 Device 019: ID 0c45:7401 Microdia TEMPer Temperature Sensor

**制御コマンドの準備 [#t4419bc5]
本デバイスからデータを出力するためのコマンドはgit上にソースが公開されている。~

[[bitplane/temper:https://github.com/bitplane/temper]]

以下の手順に従い、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

**温度の取得 [#l08e975d]
コマンドを実行すると、以下のようにタイムスタンプと温度が標準出力にカンマ切りで出力される。~

 # /usr/local/sbin/temper 
 05-Jul-2024 14:06,34.640152

タイムスタンプはUTCで表示される。~

**データの活用 [#f59488ec]
Zabbixに温度データを取り込み、時系列グラフを生成する。~
データを取り込むに当たり、Zabbix Agentをインストールする。~

 # apt-get install zabbix-agent

詳細な設定などは省略~

***取り込み方法の考案 [#k250be3e]
Zabbixに取り込むには、いくつかの方法が考えられる。~

-1. Zabbix Agentのsystem.run[]キーでtemperを実行して出力を取り込む~
-2. cronにて定期実行した結果をログに出力して、Zabbix Agentのログ監視を用いて取り込む~
-3. cronにて定期実行した結果をzabbix_senderコマンドでZabbix Serverに直接送り込む~

temperはroot権限による実行が必要となる。このため、1.の方式を実装するためにはZabbix Agentからsystem.run[]キーで実行出来るように、sudoを用いてzabbixユーザ権限でも実行が可能な状況を作る必要がある。また、Zabbix AgentのAllowkeyにsystem.run[*]を許可させる必要があることから、セキュリティ面のリスクも存在する。~
また、3.の方式は標準出力の結果をコマンドに引き渡すスクリプトが必要となる。~
以上のことから、今回は2.の方式を採用することとした。~

***cronとログの設定 [#m032bc99]
定期実行は1分毎とするため、以下の設定を行う。~

-crontab
 * * * * * /usr/local/sbin/temper >> /var/log/zabbix-agent/temper.log

実行の度にログに追記されていくことから、ログ溢れを起こさない様にzabbix-agentのローテーションの設定に細工する。~、
対象となるログファイルを *.log に変更することで、ファイル名が合致すればローテーション出来るようにする。
また、保存期間が長いため、ローテーションは日次(daily)、世代数は14世代とした。~

-/etc/logrotate.d/zabbix-agent 
 /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

***監視設定 [#x14be985]
監視設定はログ監視を行うアイテムと、その中から温度情報のみを取り込む依存アイテムを用いた構造とする。~
ホストにより参照するログファイルが変わる場合には、ホストマクロとして{$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|

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS