Zabbix は DingTalk のアラーム機能を画像付きで設定します

Zabbix は DingTalk のアラーム機能を画像付きで設定します

実装のアイデア:

まず、アラーム情報にはitemidが必要です。これは前提条件です。情報に渡されるパラメータに応じて、itemidに通常のマッチングを使用してセッションを構築するか、Cookieを使用してログインします。itemidに応じて写真をリクエストし、取得した写真をローカルに保存します。マークダウン画像リンクにアクセスできる必要があるため、私のzabbixはイントラネット内にあるため、画像はイメージベッドまたはパブリックネットワークIPを持つWebサーバーにアップロードする必要があります。ここでは個人用サーバーにアップロードしました。アラーム情報をマークダウン構文形式に変換してリクエストを構築します。DingTalkのWebhookを使用してメッセージを送信し、DingTalkロボットを設定します

DingTalk ロボットはセキュリティのために設定する必要があります。ここでは、キーワード「通知」を定義します。これは、送信されるメッセージにこのキーワードが含まれている必要があることを意味します。

スクリプトの実装: ローカルからリモートにイメージをコピーする必要があるため、事前にパスワードフリーの設定を行う必要があります。スクリプトは zabbix ユーザーによって実行されます。Web サーバー ディレクトリのセキュリティ ポリシーを設定するのが最適です。

#!/usr/bin/python
# -*- コーディング: utf-8 -*-
インポート要求、時間
json、sys、re、os をインポートします

zabbixserver_url = 'http://192.168.99.200/index.php'
#リモート Web サーバーのアドレスを定義し、画像をリモート Web ディレクトリにコピーします。pname_path='http://47.103.15.51/dingding_pic/'
#取得した画像アドレスを定義します testUrl = "http://192.168.99.200/chart.php"
ホスト='192.168.99.200'
get_itemid() を定義します:
  itemid=re.search(r'アイテムID:(\d+)',sys.argv[2]).group(1)
  アイテムIDを返す
def get_picture(itemid,pname):
  #セッションを構築するか、一度構築してからクッキーを使用してログインすることもできます。myRequests = requests.Session()
  試す:
    ログインヘッダー = {
      「ホスト」:ホスト、      
      「承認」:"text/html、application/xhtml+xml、application/xml;q=0.9、image/webp、image/apng、*/*;q=0.8" 
    }
    # ログインに必要な情報を構築する playLoad = {
      "名前": "管理者",
      「パスワード」: 'zabbix',
      "自動ログイン": "1",
      "enter": "サインイン",
    }
    myRequests.post(url=zabbixserver_url、ヘッダー=loginHeaders、データ=playLoad)
    テストURL再生ロード = {
      "から": "現在から10分",
      「〜へ」:「今」、
      "アイテムid": アイテムid、
      "幅": "700",
    }
    testGraph = myRequests.get(url=testUrl,params=testUrlplayLoad)
    イメージパス = os.path.join('/usr/lib/zabbix/alertscripts/dingding_pic/', pname)
    #取得した画像データを open(IMAGEPATH,'wb') としてファイルに書き込みます (f:
      f.write(テストグラフのコンテンツ)
    os.system("sudo scp %s [email protected]:/usr/share/nginx/html/dingding_pic" %IMAGEPATH) 
    pname_url = pname_path+pname
    pname_urlを返す
  except 例外を e として:
    印刷する
    Falseを返す

#メッセージを送信するリクエストを構築します def send_msg(pname_url,info3):
  ヘッダー = {'Content-Type': 'application/json; charset=utf-8'}
  印刷(情報3)
  データ = {
    "メッセージタイプ": "マークダウン",
    「マークダウン」: {
      「タイトル」: 情報1,
      "text": "## 通知:\n"+info3+"![スクリーンショット](%s)\n"%(pname_url)

    },
    "で":{
      「atMobiles」:リマインダー、
      "isAtAll": False、
    },
    }
  r = リクエスト.post(url=webhook_url,json=data,headers=ヘッダー)
  印刷(r.text)
#アラーム情報をフォーマットする def info_text():
  新しいテキスト = ""
  x = info2.split('\n')
  i が x 内にある場合:
    re.search('ITEM ID',str(i))の場合:
      合格
    それ以外:
      新しいテキスト+="- "+str(i)+('\n')
  印刷(タイプ(新しいテキスト)) 
  新しいテキストを返す

__name__ == '__main__' の場合:
  # アラーム情報をログに書き込みます os.system("echo hello >> /tmp/syslog.md")  
  pname = str(int(time.time()))+'.png'
  info1 = str(sys.argv[1])
  info2 = str(sys.argv[2])
  情報3 = 情報テキスト()

  open('/tmp/syslog.md','a') を f として実行します:
    f.write(情報1)
    f.write(情報2)
    f.close()
  リマインダー = []
  webhook_url = 'https://oapi.dingtalk.com/robot/send?access_token=771ded387e6be652c51a2b6c83cade4e048e3da4fdfe128f1db6b124b87df18a'
  アイテムid = get_itemid()   
  pname_url=get_picture(itemid,pname)
  印刷(pname_url)
  送信メッセージ(pname_url,info3)

アラームメディアタイプを定義します。ZabbixモニタリングWebを開き、管理メニューでアラームメディアタイプを選択し、メディアタイプの作成、スクリプトを選択し、先ほど書いた画像付きメールスクリプトの名前、zabbix_email_pic.py、スクリプトパラメータを入力し、最後に追加します。

管理画面でユーザーを開き、メールアラートを設定するユーザーをクリックし、アラームメディアにアラームメディアを追加し、ポップアップボックスで定義したタイプを選択し、受信者をカスタマイズして、最後に追加します。

アラートアクションの定義

設定メニューのアクションをクリックしてアクションを作成し、画像に従って入力します。

アクション デフォルト タイトル Zabbix 通知: サーバー: {HOSTNAME} に: {TRIGGER.NAME} 障害が発生しました。
アイテムID:{ITEM.ID}
アラームホスト:{HOST.NAME}
アラームホスト:{HOST.IP}
アラーム時刻: {EVENT.DATE} {EVENT.TIME}
アラーム レベル:{TRIGGER.SEVERITY}
警告情報: {TRIGGER.NAME}
アラーム項目:{TRIGGER.KEY}
質問の詳細:{ITEM.NAME}:{ITEM.VALUE}
現在のステータス:{TRIGGER.STATUS}:{ITEM.VALUE}
イベント ID: {EVENT.ID}
回復操作 Zabbix が報告しました: サーバー: {HOST.NAME} が発生しました: {TRIGGER.NAME} が復元されました!
アイテムID:{ITEM.ID}
アラームホスト:{HOST.NAME}
アラームホスト:{HOST.IP}
アラーム時刻: {EVENT.DATE} {EVENT.TIME}
アラーム レベル:{TRIGGER.SEVERITY}
警告情報: {TRIGGER.NAME}
アラーム項目:{TRIGGER.KEY}
質問の詳細:{ITEM.NAME}:{ITEM.VALUE}
現在のステータス:{TRIGGER.STATUS}:{ITEM.VALUE}
イベント ID: {EVENT.ID} 



最終結果

手動でアラームを鳴らして効果をテストすることができます


この時点で、Zabbix の WeChat、電子メール、および DingTalk アラームの画像が設定されました。

要約する

以上が、画像アラーム機能を備えたZabbix設定DingTalkの編集者による紹介です。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残してください。編集者がすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Zabbix3.0 電子メールアラーム設定
  • Python スクリプトを使用して Zabbix でアラーム メールを送信する方法
  • ZabbixがWeChatアラーム機能を実装
  • WeChatアラームZabbix実装の詳細な説明
  • Zabbix メールアラーム設定方法

<<:  MySQL でデータ テーブルを作成し、主キーと外部キーの関係を確立する方法の詳細な説明

>>:  ローカルサーバーを構築するためのwebpack-dev-serverの実装

推薦する

Vue は zip ファイルのダウンロードを実装します

この記事の例では、Vueの具体的なコードを共有し、zipファイルをダウンロードして参考にしています。...

Vue検証コードコンポーネントの使い方の詳しい説明

この記事の例では、vue検証コードコンポーネントで使用される具体的な実装コードを参考までに共有してい...

vue3 プロジェクトを素早く構築し、関連機能を紹介する vite+ts の詳細な説明

目次ヴィテ建てる構成vite.config.tsルーターtsタイプvue3 の知識設定小道具コンテク...

Tomcat の静的ページ (html) で中国語の文字化けが発生する問題の究極の解決策

tomcatでは、jspは文字化けしませんが、htmlの中国語は文字化けします理由はいくつかあります...

docker ベースの redis-sentinel クラスターの構築例

1. 概要Redis Cluster は、Redis ノードのグループ間での高可用性とシャーディング...

MySQL 8.0.20 winx64 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.20 winx64 のインストールと設定方法を次のように説明します...

UbuntuはPythonスクリプトのサンプルコードを定期的に実行する

オリジナルリンク: https://vien.tech/article/157序文この記事では、Ub...

要素 DateTimePicker+vue ポップアップボックスに時間のみが表示される問題を解決する

3つの知識ポイント: 1. CSS子孫セレクターhttps://www.w3school.com.c...

丸い角や鋭い角の代わりに文字を使用することに関する研究経験の共有

1. フォントと文字表示の関係左側と右側の鋭角部分は Songti フォントで表示されます: &l...

親要素に対する CSS 子要素の固定配置ソリューションの詳細な説明

基本概念絶対配置: 絶対配置に設定された要素ボックスはドキュメント フローから完全に削除され、その包...

setup+ref+reactive は vue3 の応答性を実装します

セットアップは、結合された API を記述するために使用されます。テンプレートが使用できるようにする...

CSSを使用してすべての子要素を選択する方法の詳細な説明

CSS を使用してすべての子要素を再帰的に選択するにはどうすればよいですか?以下の記事では、CSS ...

Angular CDK を使用してサービスポップアップトーストコンポーネント機能を実装する

目次1. 環境設備2. ToastコンポーネントとToastServiceを作成する2.1 Toas...

DockerにRabbitMQを素早くインストールする方法

1. 画像を取得する #Webコントロールページを含むバージョンを指定します docker pull...

VMware Workstation Pro 16 グラフィックチュートリアル (CentOS8 仮想マシン クラスタの構築)

目次準備VMware Workstation Pro 16 をインストールするLinux仮想マシンの...