🌟監控api接口
🔍監控zabbix-api接口
生成API tokens
命令行測試
curl -s -X POST -H "Content-Type: application/json-rpc" -d '
{"jsonrpc": "2.0","method": "host.get","params": {"output": ["hostid","host"],"selectInterfaces": ["interfaceid","ip"]},"id": 2,"auth": "api tokens"
}' http://10.0.0.63/api_jsonrpc.php
web頁面添加web場景監測
🌟告警分類
報警方式(報警媒介類型) | 方案 | 企業應用場景 |
---|---|---|
發郵件 | 企業郵箱 | 企業郵箱,免費使用 |
企業微信-告警應用(機器人) | 機器人 | 需要使用企業微信,免費 |
OA系統(釘釘,飛書…) | 機器人 | 阿里云,免費 |
短信 | 0.045/條左右(阿里云短信服務) | |
電話 | 收費 | |
第三方報警工具/平臺:onealert(省事) | 只需要配置onealert的平臺信息,免費使用(限制),收費htts://aiops.com/ | |
云監控與告警 |
🌟郵件報警
📝全流程
- 準備個人郵箱/企業郵箱
- 開啟個人郵箱 smtp功能 獲取授權碼
- 發件人:配置zabbix報警媒介類型
- 收件人:配置 用戶 接受報警
- 發件條件:配置觸發器(trigger)動作(條件判斷)
??準備個人郵箱(略)
📌添加報警媒介
🧩修改消息模板
兩個 報警媒介的模板:
故障{TRIGGER.STATUS},服務器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!告警主機:{HOSTNAME1}
告警地址:{HOST.IP}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}恢復{TRIGGER.STATUS}, 服務器:{HOSTNAME1}: {TRIGGER.NAME}已恢復!告警主機:{HOSTNAME1}
告警地址:{HOST.IP}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
??添加收件人
🍀添加觸發器動作
??郵件里查看告警信息
🌟企業微信告警
🧩企業微信告警腳本
#!/usr/bin/python3
# -*- coding: utf-8 -*-
#desc: 調用企業微信群中機器人進行發送消息
#desc: 調用釘釘機器人進行發送消息
#desc: 調用各種OA系統的群機器人(webhook)方式 通用的#導入python 函數庫(包)
#request http請求(curl/wget命令)
import requests
import json
#sys 系統功能函數庫
import sys# 機器人的webhook地址 群里添加群機器人后可以獲取
#支持企業微信,釘釘,飛書.WEBHOOK_URL = "WEBHOOK地址"# HTTP請求頭部信息
HEADERS = {'Content-Type': 'application/json;charset=utf-8'
}# 定義發送消息的函數
def send_msg(text):#text變量就是要傳輸的數據.# 構建消息體texts = {"msgtype": "text","text": {"content": text}}# 發送HTTP POST請求response = requests.post(WEBHOOK_URL, json=texts, headers=HEADERS)# 打印響應內容(一般用于調試)print(response.content)# 如果該文件被直接執行,則從命令行接收一個參數并將其發送到機器人的webhook地址
if __name__ == '__main__':# $# -ne 2 if len(sys.argv) != 2:print("Usage: python3 all_app_webhook.py <text>")sys.exit(1)text = sys.argv[1] # 獲取命令行參數 $1send_msg(text) # 發送消息
🛠?準備阿里云的源文件
- sources.list
deb http://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ noble main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ noble-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ noble-updates main restricted universe multiverse# deb http://mirrors.aliyun.com/ubuntu/ noble-proposed main restricted universe multiverse
# deb-src http://mirrors.aliyun.com/ubuntu/ noble-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ noble-backports main restricted universe multiverse
📝編寫Dockerfile
FROM zabbix/zabbix-server-mysql:7.0.9-ubuntu
LABEL author=zhu desc=帶有python3環境的zbx_server鏡像,帶有webhook腳本USER root
ADD all-api-alert.py /usr/lib/zabbix/alertscripts/ADD sources.list /etc/apt/sources.list
RUN apt update \&& apt install -y python3 python3-requests # 安裝python request模塊(依賴)# pip3 install requests -i https://pypi.tuna.tsinghua.edu.cn/simpleEXPOSE 10051/TCPWORKDIR /var/lib/zabbix/ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]USER 1997CMD ["/usr/sbin/zabbix_server", "--foreground", "-c", "/etc/zabbix/zabbix_server.conf"]
📝編寫docker-compose
#version: "3.8"
services:db:image: mysql:8.0-debiancontainer_name: zbx_dbnetworks:- zbx_netrestart: alwaysvolumes:- ./zbx_db/:/var/lib/mysql/environment:MYSQL_ROOT_PASSWORD: "${ROOT_PASS}"MYSQL_DATABASE: "${ZBX_DB}"MYSQL_USER: "${ZBX_USER}"MYSQL_PASSWORD: "${ZBX_PASS}"command:- --character-set-server=utf8- --collation-server=utf8_bin- --default-authentication-plugin=mysql_native_passwordzbx_server:image: zabbix/zabbix-server-mysql:7.0.9-ubuntu-pythonbuild:context: .dockerfile: Dockerfilecontainer_name: zabbix-server-mysql-7.0networks:- zbx_netrestart: alwaysports:- 10051:10051depends_on:- dbenvironment:DB_SERVER_HOST: "db"MYSQL_ROOT_PASSWORD: "${ROOT_PASS}"MYSQL_DATABASE: "${ZBX_DB}"MYSQL_USER: "${ZBX_USER}"MYSQL_PASSWORD: "${ZBX_PASS}"ZBX_JAVAGATEWAY_ENABLE: trueZBX_JAVAGATEWAY: zbx_java_gatewayZBX_JAVAGATEWAYPORT: 10052zbx_web:image: zabbix/zabbix-web-nginx-mysql:7.0.9-ubuntucontainer_name: zabbix-web-nginx-mysqlnetworks:- zbx_netrestart: alwaysports:- 80:8080depends_on:- db- zbx_serverenvironment:ZBX_SERVER_HOST: "zbx_server"DB_SERVER_HOST: "db"MYSQL_ROOT_PASSWORD: "${ROOT_PASS}"MYSQL_DATABASE: "${ZBX_DB}"MYSQL_USER: "${ZBX_USER}"MYSQL_PASSWORD: "${ZBX_PASS}"zbx_java_gateway:image: zabbix/zabbix-java-gateway:7.0.9-ubuntucontainer_name: zabbix-java-gateway-7.0networks:- zbx_netrestart: alwaysports:- 10052:10052depends_on:- zbx_servernetworks: zbx_net: driver: bridge ipam: config: - subnet: 172.100.0.0/16 ip_range: 172.100.1.0/24 gateway: 172.100.1.1
??docker-compose生成鏡像
docker-compose build
🚀啟動鏡像
docker-compose up -d
🐹修改機器人webhook地址
[root@m03-zbx-server /app/tools/zbx-weixin-7.0]# docker-compose exec -it -uroot zbx_server /bin/bash
root@8064aca0fdeb:/var/lib/zabbix# apt install -y vim
root@8064aca0fdeb:/var/lib/zabbix# vim alertscripts/all-api-alert.py
💡命令行測試
python3 weixin-api-alert.py 測試
🌏web頁面添加報警媒介
💡修改消息模板
🛠?測試
??添加收件人
🍀添加觸發器動作
🌏企業微信群查看告警
🌟釘釘或其他OA系統
- 釘釘,飛書,飛鴿…
- 使用流程與企業微信WEBHOOK版本一致
📝使用流程
- 群組里添加機器人,設置訪問IP(服務器,公司內網IP)
- 使用腳本修改WEBHOOK地址
- 使用流程與企業微信群機器人流程一致
🌟部署grafana
🚀安裝grafana軟件并啟動
rpm -ivh grafana-enterprise-10.4.17-1.x86_64.rpm
systemctl enable grafana-server.service --now
🌏瀏覽器登錄
http://10.0.0.63:3000/login
admin/admin
🌏修改語言為中文
🧩安裝插件
grafana-cli plugins list-remote | grep zabbix
grafana-cli plugins install alexanderzobnin-zabbix-app
systemctl restart grafana-server.service
🚀web頁面啟動插件
添加zabbix數據源
導入儀表盤
查看儀表盤
注意:儀表盤有些數據獲取不到,需要調試