Zabbixリモートコマンド実行の詳細な例

Zabbixリモートコマンド実行の詳細な例

Zabbix トリガーがしきい値に達すると、アラート メッセージの送信やリモート コマンドの実行などのアクションが実行されます。

この記事では主に、zabbix がリモート コマンドを実行するように設定および検証します。

1つ。環境

サーバー: CentOS-7-x86_64-1511 ベース。

Zabbix: zabbix-3.0.1server/agent。

二。予防

注意すべき重要な点: 1. リモート コマンドの実行はサーバーからエージェントに対して行われ、アクティブ エージェント モードはサポートされていません。2. プロキシ モードはサポートされていません。3. zabbix ユーザーにはコマンドの実行権限が必要であり、sudo を使用してルート権限を付与できます (パスワードなしで sudo を構成します)。

4. リモート コマンドは実行されるだけで、実行の成否は検出および確認されません。アクションの実行は、「監視 -> イベント」で確認するか、「レポート -> アクション ログ」でリモート コマンドが正常に実行されたかどうかを確認できます (正常に実行された場合は「実行済み」になります)。

三つ。例

簡単な例で確認します。

監視サーバー上のリアルタイムオンラインユーザー数は 2 を超えません。しきい値を超えると、アラームがトリガーされ、監視項目がしきい値を下回るように、3 番目のログインユーザーを強制的にログオフするコマンドが実行されます。

1. トリガーを設定する

構成-->テンプレート-->「Template OS Linux」テンプレート「トリガー」を選択-->トリガーの作成

#トリガー名のカスタマイズ、マクロを使用できます

名前:{HOST.NAME} のユーザーログイン番号 gt 2

式: {テンプレート OS Linux:system.users.num.last()}>2

#「式」項目の後の「追加」をクリックし、Zabbix が提供する項目 + 関数を使用して、次のようにしきい値式を設定できます。

#カスタムレベル

重大度: 警告

残りの設定は問題ありません。設定が完了したら、「追加」をクリックします。

2. リモートコマンドスイッチ

#エージェントはデフォルトではリモート コマンドの実行をサポートしていません。エージェント構成ファイルでこのパラメータを有効にする必要があります。
#agent.conf ファイルのパスは実際の状況に応じて変更する必要があります。コンパイルとインストール後のカスタマイズされたパスは次のとおりです。http://www.cnblogs.com/netonline/p/7406598.html を参照してください。
#agent.conf ファイルを変更した後、プロセスを再起動する必要があります。
[root@localhost ~]# sed -i 's|# EnableRemoteCommands=0|EnableRemoteCommands=1|g' /usr/local/zabbix/etc/zabbix_agentd.conf
[root@localhost ~]# サービスzabbix_agentdを再起動します

3. アクションを設定する

設定-->アクション-->アクションの作成

アクション

アクションオプションで、名前を定義します: オンラインユーザーの数を2人以下に制限します

#アクション名はカスタマイズでき、残りのアクション オプションは次のようにデフォルト値を使用できます。

条件

条件オプションに新しい条件付き判断を追加して、判断をより的確にします。たとえば、次のようになります。

新しい条件: トリガーの重大度 = 警告

新しい条件: ユーザーログイン番号 gt 2 のようなトリガー名

#トリガー名は、次のように手順 1 で定義されたトリガー名に対応します。

オペレーション

操作オプションで、新しい「アクション操作」を追加し、「新規」をクリックします。

操作タイプ: 「リモートコマンド」を選択

ターゲット リスト: このマシンの「現在のホスト」#agent としてターゲットを追加します

タイプ: 「カスタムスクリプト」を選択

実行先: 「Zabbix エージェント」を選択し、コマンドは「 sudo /root/test.sh 」です。

# コマンドを実行するアカウントは、root アカウントではなく、zabbix アカウントです。sudo コマンドを使用しないと、実行後にコマンドが無効になります。

#また、スクリプトではなく特定のコマンドを使用してみました。結果は、コマンドは実行されますが有効ではありません。特定の失敗ログがないため、原因を分析できません。

#残りのコンテンツにはデフォルト値を使用し、以下に示すように「追加」をクリックします。

4. リモートコマンドスクリプト

#手順3で定義したコマンドスクリプトのパスに従ってコマンドスクリプトを編集します。[root@localhost ~]# vim test.sh

#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin PATHをエクスポート

#ここでは、3番目のログインttyがpts/2であると仮定します。pkill -kill -t pts/2

[root@localhost ~]# chmod 764 test.sh

5. sudoを設定する

#zabbix アカウントにパスワードなしでコマンドを実行する sudo 権限を付与します。セキュリティ上の理由から、最後の "ALL" は特定のコマンドとして定義できます。#または、手順 4 でスクリプトの所有者を zabbix に変更して実行権限を付与しますが、スクリプトが配置されているディレクトリには zabbix アカウントの実行権限と書き込み権限があるため、手順 3 のスクリプトでは権限を付与するために sudo は必要ありません[root@localhost ~]# visudo

zabbix ALL=NOPASSWD: すべて

6. 検証

ホストの 3 番目の tty にリモートでログインし、CLI で他の操作を実行せず、トリガーしきい値をトリガーし、コマンド アクションをトリガーして、3 番目にログインしたユーザーを強制的にオフラインにします。

スクリーンショットからわかるように、オンライン ユーザーの数がしきい値を超えると、トリガーは約 1 分間だけ「問題」状態になり、その後「OK」状態に戻ります。これは、3 番目のユーザーを強制的にオフラインにするスクリプト コマンドが実行され、正常に実行されたことを示しています。

「ログインしているユーザー数」項目の履歴データから、トリガーがトリガーされたときに、3 番目のログインしているユーザーがオフラインになっていることもわかります。

3 番目の tty の下では、ホスト自体によって接続が切断されていることがわかります (上図のホスト時間とはずれているローカル時間が表示されます)。

要約する

Zabbix リモート実行コマンドに関するこの記事はこれで終わりです。Zabbix リモート実行コマンドに関する詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux プラットフォームでの Zabbix エージェントのインストールと設定方法
  • ZabbixはLinuxシステムサービスのプロセスを監視
  • Linux シェル環境での Zabbix API の使用
  • Linux に Zabbix モニタリングをインストールする方法
  • Linuxホストを監視するためのZabbixの設定方法
  • Zabbix設定 DingTalkアラーム機能実装コード
  • リモートホスト上でスクリプトや命令を実行する Zabbix の詳細な説明
  • Zabbixのインストールと展開の詳細な説明
  • ZabbixはSNMPに基づいてLinuxホストを監視します

<<:  MySQL の悲観的ロックと楽観的ロックの使用例

>>:  Vue+swiperでタイムライン効果を実現

推薦する

DockerでGDBを使用するときにブレークポイントを入力できない問題を解決する

質問docker で gdb を実行すると、ブレークポイントに到達しますが、ブレークポイントに入るこ...

js でクラスセレクターと名前属性セレクターを実装する手順の例

jQuery の登場により、DOM の操作効率が大幅に向上し、開発がより高いレベルに引き上げられまし...

HTMLのリストタグを数える

1. <dl>はリストを定義し、<dt>はリスト内の項目を定義し、<d...

Vue.$set の失敗の落とし穴の発見と解決

偶然、プロジェクト内でVue.$setが無効であることがわかりましたデータ フィルタリングを追加する...

Alibaba Cloud サーバーの購入とインストール方法

1. サーバーを購入するこの例では、購入したサーバーはAlibaba Cloudです。大学生はAli...

USE DB 輻輳に対する MySQL ソリューションの詳細な説明

障害に遭遇すると、障害の根本的な原因を考えるのではなく、障害を解決する方法を考えることがよくあります...

HTML ページでコンテンツの選択、コピー、右クリックを防止する方法の詳細な説明

時には、Web ページに掲載されているコンテンツが悪意のある人物に盗用されるのを望まないため、Web...

Reactは二次連結(左右連結)を実現する

この記事では、二次リンクを実現するためのReactの具体的なコードを参考までに共有します。具体的な内...

この記事ではCSSボーダーの使い方を説明します

境界線のスタイルborder-style プロパティは、表示する境界線の種類を指定します。 bord...

Linux サーバーは最大いくつのポートを開くことができますか?

目次ポート関連の概念:ポートとサービスの関係1: nmapツールが開いているポートを検出する2: n...

Dockerで作成したコンテナを削除する方法

Dockerで作成したコンテナを削除する方法1. まず、docker -s -aコマンドを使用してす...

MySQLメモリストレージエンジンに関する知識

メモリストレージエンジンに関する知識ポイントメモリ ストレージ エンジンは日常業務ではほとんど使用さ...

モバイルデバイスにおける適応レイアウトの問題に関する簡単な説明 (レスポンシブ、rem/em、Js ダイナミクス)

3G の普及により、携帯電話を使ってインターネットにアクセスする人が増えています。モバイル デバイ...

React スキャフォールディングのパスエイリアスを設定する方法

この記事を書いている時点でのReactのバージョンは16.13.1です1 npm run eject...

MySQL InnoDB トランザクション ロック ソースコード分析

目次1. ロックとラッチ2. 繰り返し読み取り3. インサートロックプロセス3.1 ロックモード3....