実装のアイデア: まず、アラーム情報には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+"\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 ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: MySQL でデータ テーブルを作成し、主キーと外部キーの関係を確立する方法の詳細な説明
>>: ローカルサーバーを構築するためのwebpack-dev-serverの実装
この記事の例では、Vueの具体的なコードを共有し、zipファイルをダウンロードして参考にしています。...
この記事の例では、vue検証コードコンポーネントで使用される具体的な実装コードを参考までに共有してい...
目次ヴィテ建てる構成vite.config.tsルーターtsタイプvue3 の知識設定小道具コンテク...
tomcatでは、jspは文字化けしませんが、htmlの中国語は文字化けします理由はいくつかあります...
1. 概要Redis Cluster は、Redis ノードのグループ間での高可用性とシャーディング...
この記事では、MySQL 8.0.20 winx64 のインストールと設定方法を次のように説明します...
オリジナルリンク: https://vien.tech/article/157序文この記事では、Ub...
3つの知識ポイント: 1. CSS子孫セレクターhttps://www.w3school.com.c...
1. フォントと文字表示の関係左側と右側の鋭角部分は Songti フォントで表示されます: &l...
基本概念絶対配置: 絶対配置に設定された要素ボックスはドキュメント フローから完全に削除され、その包...
セットアップは、結合された API を記述するために使用されます。テンプレートが使用できるようにする...
CSS を使用してすべての子要素を再帰的に選択するにはどうすればよいですか?以下の記事では、CSS ...
目次1. 環境設備2. ToastコンポーネントとToastServiceを作成する2.1 Toas...
1. 画像を取得する #Webコントロールページを含むバージョンを指定します docker pull...
目次準備VMware Workstation Pro 16 をインストールするLinux仮想マシンの...