PowerShell スクリプトからデータを取得するように Zabbix エージェントを設定する方法
PowerShellを使ってZabbixでWindowsシステムを監視するのは、特にデフォルトの設定に慣れている場合は、それほど簡単ではありません。アクティブなRDPセッションの数や、前回のWindows Updateからの日数など、カスタムメトリックが必要な場合があり、PowerShellスクリプトはまさにそのような場合に最適です。しかし、単にスクリプトを追加するだけでは不十分で、Zabbixエージェントを適切に設定する必要があります。そこで、このウォークスルーは、スクリプトがZabbixにスムーズにレポートを送信できるようにするための実用的なチェックリストのようなものです。ただし、いくつかの注意点も含まれています。設定ファイルの編集、サービスの再起動、すべてをテストするためのコマンドの実行など、基本的な手順について説明します。主な目標は?エージェントがスクリプトを実行し、データを収集し、クラッシュやタイムアウトなしで送信できることを確認することです。これは一種のダンスのようなもので、特に実行ポリシーとタイムアウトについて少しいじる必要がありますが、一度うまく動作するようになると、なぜもっと早くこれをしなかったのかと後悔するでしょう。
Zabbixエージェントを使用してWindowsでPowerShell監視を修正する方法
方法 1: UserParameter を使用して PowerShell スクリプトを実行する
これは定番の方法です。RDPセッションなどの値を出力するスクリプトを作成し、安全な場所に配置して、Zabbixに呼び出すように指示します。なぜ便利なのでしょうか?それは、カスタムPowerShellコードスニペットを記述し、必要に応じて実行できるからです。正しく設定すれば、Zabbixは一定間隔ごとにデータを取得し、見やすいグラフや異常があればアラートを表示します。まず、スクリプトを作成します。例えば、アクティブなRDPセッションをカウントするスクリプトの場合は、次のようになります。 powershell $RDSsessions = qwinsta | ForEach-Object { $_ -replace “\s{2, 18}”, “, ” } | ConvertFrom-Csv $activeSessions = $RDSsessions | Where-Object { $_. State -eq ‘Active’ } | Measure-Object | Select-Object -ExpandProperty Count Write-Host $activeSessions – `C:\Program Files\Zabbix Agent 2\Script\GetActiveRDPSessionCount.ps1` に保存します。 – 次に、`zabbix_agent2.conf`(通常は`
方法2: system.run を使用してコマンドを即時実行する
より柔軟性を高めたい場合、または安全性の低い設定でも問題がない場合は、`system.run` を介して Zabbix から直接コマンドを実行できます。これにより作業は楽になりますが、任意のコマンドを実行するため、セキュリティがやや緩いことに注意してください。 – まず、`zabbix_agent2.conf` でこれを有効にします: ini AllowKey=system.run[*] – 次に、項目を追加します: – 名前: 前回の Windows 更新からの日数 – タイプ: Zabbix エージェント – キー: system.run[powershell.exe -NoProfile -ExecutionPolicy Bypass -Command “(New-Timespan -Start ((Get-HotFix | Sort-Object -Property InstalledOn | Select-Object -Last 1).InstalledOn) -End (Get-Date)).Days”] – データ型: 数値 (符号なし) – 更新間隔: 1 日 – 履歴とトレンドの期間はそれに応じて設定されます。このコマンドは、最後の Windows ホットフィックスの日付を取得し、それ以降の日数を計算します。実行に1~2秒かかる場合があり、完璧ではありませんが、いざという時には役立ちます。注: 設定によっては、「タイムアウト」や「接続リセット」などのエラーが発生する場合があります。これらのエラーを修正するには、`Timeout=20` が設定され、エージェントがローカル接続を受け入れるようにしてください。最後に、設定が完了したら、`
正直なところ、PowerShell 監視の設定は必ずしもスムーズに進むわけではありません。設定を少し調整しないと意味不明なエラーが発生することもあります。しかし、一度設定がうまくいけば、Windows サーバーから Zabbix に柔軟にデータを大量に取り込むことができます。
まとめ
- PowerShell スクリプトを作成し、専用のフォルダーに配置します。
- `zabbix_agent2.conf` を編集して、ユーザー パラメータを追加するか、`system.run` を有効にします。
- Zabbix エージェントを再起動し、`zabbix_get` でテストします。
- 必要に応じてタイムアウト設定を調整します。
- そのデータを定期的に取得するように Zabbix アイテムを設定します。
まとめ
カスタムPowerShellスクリプトをZabbixに導入するには多少の忍耐が必要ですが、難しいことではありません。設定編集、スクリプト作成、テストを組み合わせれば十分です。設定によっては、タイムアウトや権限の設定など、何度か試行錯誤する必要があるかもしれませんが、一度設定すれば完了です。これで誰かの時間節約になれば幸いです。スクリプトの調整と監視がうまくいくことを祈っています!