あなた自身と職場環境について少し
zabbixに初めて会ったとき、私は世界中のすべてを監視することに対する感情と空想に満ちていました。 最初の理由は、温度や電圧などの鉄の主要な指標を追跡することで物理的な誤動作を防ぐというアイデアでした。なぜなら、ユーザーが早期の死亡または恐ろしいブレーキを報告する前に、サーマルグリースを交換したり、疲れた機器の交換を選択することは非常に論理的かつ経済的だと思うからです。
私は2人制の会社でエンジニアとして働いており、最大100個のコンピューターの艦隊で99のマシンを使用しているダースの自治体および商業企業にサービスを提供しています。 私たちは、ネットワークの構築から情報システムのセットアップまで、あらゆることに取り組んでいます。 たくさんの仕事があり、時々私は自分の人生を少し楽にしたいことがあります。そして今、そのような瞬間に、私はzabbix監視システムに出会いました。
Zabbix監視システムは本当に非常に強力で柔軟ですが、残念ながら、追跡用のすべての側面が標準のボックス化されたテンプレートから利用できるわけではありません。 したがって、私の想像は、Windowsに標準の温度監視ツールがないという壁にぶつかってクラッシュしました。
インターネットで検索するプロセスは、サードパーティ製のツールなしでは鉄の温度を引き出すことは不可能であるという事実に直面しました。 これらのまさにツールを探しているときに、デバイスの温度、ファンの速度、および電圧に関するデータを収集できる人気のあるSpeedFanユーティリティに出会いました。 ただし、別のユーティリティをインストールせずに、そこからデータを処理する準備をする方法はありません。 さらに、これらはオープンソースではないため、SNMPプロトコルコンポーネントのアクティベーションが必要です。 結論:IMPIを使用せずにWindowsサーバーで試すことができますが、ネットワーク上の大量配布のオプションとしては適切ではありません。 さらに検索すると、プログラムhwmonitorおよびaida64-モンスター、大規模および有料。
Openhardwaremonitor
すでにほとんど絶望的で、英語フォーラムzabbixで短いメッセージをキャッチしました。 小型のオープンソースユーティリティOpenHardwareMonitorをお勧めします-グラフィカルインターフェイスを備え、センサーからデバイスの温度を読み取ることができます。 そして最も重要なことは、その作者は、労働者の要求に応じて、処理可能なフォームに情報を表示するコンソールバージョン (最新バージョン2012年10月28日)を作成したことです。
GUIバージョン :
コンソールバージョン :
コンソールバージョンは、exe実行可能ファイルとdllライブラリの2つのファイルで構成されています。
- OpenHardwareMonitorReport.exe
- OpenHardwareMonitorLib.dll
理解したデータを取得する場所は、サーバーへのZabbixメトリックの供給を確立する必要があります。
サーバーのセットアップ
まず、ホストのサーバーに新しいデータ項目を追加します。
CPU温度と呼びましょう。 (CPU温度)
タイプ:Zabbixエージェント
キー:Temperature.CPU [0]。 (名前は重要ではありません。主なことは、エージェントの構成と一致することです)。
ホストインターフェイス:ip \ dns。 (監視するノード)。
情報タイプ:数値(正の整数)
データ型:10進数
更新間隔(秒単位):3600。(スクリーンショットは一時的なチェックのために10秒を示しています)。
サーバーで完了し、クライアント構成に移動します。
クライアントのセットアップ
いわゆるユーザーパラメーターが提供されている設定(zabbix_agentd.conf)のZabbixエージェントを介して非標準データを送信します。
UserParameter=[*],
値を取得するためのコマンドは、クライアント側で処理されます。 Zabbixサーバーは、値が割り当てられたキーを受け取ります。 この記事は、あなたが既にエージェントをサービスとしてインストールしており、サーバーと友達であることを意味しています。
エージェントファイルの構成の最後に、次を追加します。
UserParameter=Temperature.CPU[*], C:\OpenHardwareMonitor\CPUTemperature.bat
CPUTemperature.bat-OpenHardwareMonitorから平均プロセッサ温度を引き出す、私が作成したバッチファイル。 プログラムでは、この行はCPUパッケージと呼ばれます。
Cには3つのファイルがあります:\ OpenHardwareMonitor:
- OpenHardwareMonitorReport.exe
- OpenHardwareMonitorLib.dll
- CPUTemperature.bat
CPUTemperature.batの内容
更新:尊敬されるcawalebの新しいコード
Intelプロセッサの場合、findstrと正規表現の代わりにfindでも同じことが言えます。
ここに私の古いコードがあります
松葉杖で障害者。
この恐怖をテキストファイルから松葉杖なしで通常のプログラムコードに変換する助けを求めてhabraコミュニティに訴えます。
それでも、スクリプトはそのタスクを処理します。
@echo off del /s C:\OpenHardwareMonitor\*.txt >nul 2>null call start /B /wait C:\OpenHardwareMonitor\OpenHardwareMonitorReport.exe >> C:\OpenHardwareMonitor\OpenHardwareMonitorReport.txt find "CPU Package :" C:\OpenHardwareMonitor\OpenHardwareMonitorReport.txt | find "temperature" >>C:\OpenHardwareMonitor\Result.txt for /f "tokens=7 delims= " %%i in (C:\OpenHardwareMonitor\Result.txt) do echo %%i >> C:\OpenHardwareMonitor\temp.txt TYPE C:\OpenHardwareMonitor\temp.txt
この恐怖をテキストファイルから松葉杖なしで通常のプログラムコードに変換する助けを求めてhabraコミュニティに訴えます。
それでも、スクリプトはそのタスクを処理します。
更新:尊敬されるcawalebの新しいコード
@echo off for /F "usebackq tokens=7-10" %%a in (`C:\OpenHardwareMonitor\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| findstr .*lpc.*\/temperature\/0>nul && set temper=%%a echo %temper%
Intelプロセッサの場合、findstrと正規表現の代わりにfindでも同じことが言えます。
@echo off for /F "usebackq tokens=7-10" %%a in (`C:\OpenHardwareMonitor\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| find "/intelcpu/0/temperature/0">nul && set temper=%%a echo %temper%
スクリプトは、値を10進数として返します。
この変更、ファイル構成、およびすべてのファイルとスクリプトの配置の後、zabbixエージェントサービスを再起動します。
サーバーで値を受け取り始めます。
おわりに
CPUの温度を抽出する問題を解決しました。 同じスキームを使用して、GPUの温度を取得できます。 しかし、ファンの速度、電源の電圧、および北と南の橋の状態をチェックする方法があるかどうかの問題を決定する問題は、依然として深刻です。
更新:尊敬されるCawalebによって提案されたCPUTemperature.batのコードを追加しました。 助けてくれたことに感謝することを忘れないでください!