文章目錄
- 0. 老男孩思想-馬太效應
- 1. API監控
- 2. zabbix的API接口
- 2.1 生成zabbix的api token
- 2.2 訪問格式
- 2.3 前端添加web監測
- 3. 監控告警方式
- 3.1 云監控-郵件告警
- 3.1.1 郵箱開啟授權碼
- 3.1.2 zabbix前端配置
- 3.1.3 消息模板
- 3.1.4 配置郵箱收件人信息
- 3.1.5 配置觸發器
- 3.2 企業微信告警
- 3.2.1 創建企業微信
- 3.2.2 添加群機器人
- 3.2.3 發送告警信息
- 3.2.4 zabbix發送告警
- 4. 優雅展示-Grafana
- 4.1 部署grafana
- 4.2 配置數據源-zabbix
- 4.3 編輯儀表盤面板
- 4.3.1 編輯Host name面板
- 4.3.2 編輯CPU面板
- 4.3.3 編輯System load(系統負載)面板
- 4.4 保存儀表盤配置
- 5. 踩坑記錄-granfana儀表盤:Failed to upgrade legacy queries
- 6. 思維導圖
0. 老男孩思想-馬太效應
“凡有的,還要加給他,叫他有余;凡沒有的,連他所有的也要奪去。”
強者愈強,弱者愈弱
1. API監控
- 以舔狗日記接口為例
#Linux curl命令curl -X POST \-H "Content-Type:application/x-www-form-urlencoded" \-d "key=045a8a29190663ed52c2ee82f22d739d" \"https://apis.tianapi.com/tiangou/index"
####################################################
[root@web01.oldboy.cn ~]# curl -X POST -H "Content-Type:application/x-www-form-urlencoded" -d key=045a8a29190663ed52c2ee82f22d739d" "https://apis.tianapi.com/tiangou/index"
{"code":200,
"msg":"success",
"result":{"content":"你好像從來沒有主動說過愛我,我搜索了一下關鍵字“愛”。在我們的聊天記錄里,你只說過一次:愛奇藝會員借我一下。"}
}
2. zabbix的API接口
[10.0.0.63](http://10.0.0.63/api_jsonrpc.php)
2.1 生成zabbix的api token
2.2 訪問格式
curl -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": "fa6d59fc107117e42ba01ec0b2b5a6efc952a5bfa105c2ccb14052d587553ec6" # 此處寫api token
}' http://10.0.0.63/api_jsonrpc.php
2.3 前端添加web監測
3. 監控告警方式
報警方式 | 方案 | 企業應用場景 |
---|---|---|
發郵件 | 企業郵箱 | 企業郵箱 |
企業微信 | 機器人 | 使用企業微信,添加機器人 |
OA(辦公自動化)系統 | 釘釘、飛書…… | |
短信、電話 | 阿里云服務 | |
第三方告警平臺 | onealert | ‘睿象云-智能運維管理平臺-智能運維系統-自動化運維性能監控平臺’ |
云監控告警 |
3.1 云監控-郵件告警
3.1.1 郵箱開啟授權碼
3.1.2 zabbix前端配置
3.1.3 消息模板
兩個 報警媒介的模板:
故障{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}
3.1.4 配置郵箱收件人信息
3.1.5 配置觸發器
3.2 企業微信告警
3.2.1 創建企業微信
- 創建企業郵箱:
[騰訊企業郵箱](https://work.weixin.qq.com/mail/)
- 不設置也行;
- 需要有一個域名,并配置郵箱解析
- 登錄企業微信管理后臺:
[企業微信](https://work.weixin.qq.com/wework_admin/loginpage_wx)
3.2.2 添加群機器人
- Webhook 地址 是一個由用戶提供的 HTTP/HTTPS URL,用于接收外部系統(如GitHub、企業微信、支付平臺等)通過 HTTP POST 請求 實時推送的事件通知(例如代碼提交、訂單支付、審批結果等)。它本質上是開發者自定義的一個 “回調接口”,用于實現系統間的自動化通信。
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=3c1da462-093a-421c-a654-a8cd09d070bc
3.2.3 發送告警信息
- 腳本:
zbx_7.0-weixin-dingding.tar.gz 鏈接: https://pan.baidu.com/s/132dbrY1S8n06lMyMrg31SA?pwd=7wa9 提取碼: 7wa9
[root@m03 /server/scripts/weixin_dingding]# ll
總用量 4
-rw-r--r-- 1 root root 2147 7月 24 15:36 zbx_7.0-weixin-dingding.tar.gz
[root@m03 /server/scripts/weixin_dingding]# tar zxf zbx_7.0-weixin-dingding.tar.gz
[root@m03 /server/scripts/weixin_dingding]# rm zbx_7.0-weixin-dingding.tar.gz
文件,目錄已經移動到回收站:/recyle/tmp.XEplkxQZOT
[root@m03 /server/scripts/weixin_dingding]# ll
總用量 16
-rwxr-xr-x 1 root root 1418 7月 24 12:10 all-api-alert.py
-rw-r--r-- 1 root root 1703 7月 24 11:49 docker-compose.yml
-rw-r--r-- 1 root root 620 7月 24 12:06 Dockerfile-dingding-weixin
-rw-r--r-- 1 root root 901 7月 24 11:45 sources.list
[root@m03 /server/scripts/weixin_dingding]# vim all-api-alert.py
[root@m03 /server/scripts/weixin_dingding]# python3 all-api-alert.py "主題:網站掛了 內容:孫克旭搞的"
b'{"errcode":0,"errmsg":"ok"}'
3.2.4 zabbix發送告警
# 將腳本發到zabbix-server容器中
[root@m03 /app/tools/zbx]# docker-compose exec -u root -it zbx_server bash
root@0758c7bdd6fc:/var/lib/zabbix# grep -i '^alertscript' /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
# 需要將Python腳本放到該目錄下
# 容器還需要Python3的環境,以及下載request模塊
# 所以可以使用自定義鏡像
- 自定義鏡像壓縮包:
zbx_7.0-weixin-dingding.tar.gz 鏈接: https://pan.baidu.com/s/1WY1w0hvNQOUlPJfPOeVfmQ?pwd=dru9 提取碼: dru9
[root@m03 /app/tools/zbx_alert_weixin_dingding]# docker-compose build
[+] Building 198.2s (11/11) FINISHED docker:default=> [zbx_server internal] load build definition from Dockerfile-dingding-weixin 0.1s=> => transferring dockerfile: 675B 0.0s=> [zbx_server internal] load metadata for docker.io/zabbix/zabbix-server-mysql:7.0.9-ubuntu 0.0s=> [zbx_server internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [zbx_server 1/5] FROM docker.io/zabbix/zabbix-server-mysql:7.0.9-ubuntu 0.1s=> [zbx_server internal] load build context 0.0s=> => transferring context: 2.41kB 0.0s=> [zbx_server 2/5] ADD all-api-alert.py /usr/lib/zabbix/alertscripts/ 0.1s=> [zbx_server 3/5] ADD sources.list /etc/apt/sources.list 0.0s=> [zbx_server 4/5] RUN apt update && apt install -y python3 python3-requests 195.7s=> [zbx_server 5/5] WORKDIR /var/lib/zabbix 0.0s => [zbx_server] exporting to image 1.8s => => exporting layers 1.7s => => writing image sha256:1d0473248a344a66f71b5807e7ebdbb5b391eddead55d432809e4eb25f9de98b 0.0s => => naming to docker.io/zabbix/zabbix-server-mysql:7.0.9-ubuntu-python 0.0s => [zbx_server] resolving provenance for metadata file 0.0s
[root@m03 /app/tools/zbx_alert_weixin_dingding]# docker-compose up -d
[+] Running 4/4? Network zbx_alert_weixin_dingding_oldboy_zbx_net Created 0.1s ? Container zbx_db Started 0.9s ? Container zabbix-server-mysql-7.0 St... 1.1s ? Container zabbix-web-nginx-mysql Sta... 1.6s
[root@m03 /app/tools/zbx_alert_weixin_dingding]# docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
zabbix-server-mysql-7.0 zabbix/zabbix-server-mysql:7.0.9-ubuntu-python "/usr/bin/docker-ent…" zbx_server 5 seconds ago Up 3 seconds 0.0.0.0:10051->10051/tcp, :::10051->10051/tcp
zabbix-web-nginx-mysql zabbix/zabbix-web-nginx-mysql:7.0.9-ubuntu "docker-entrypoint.sh" zbx_web 4 seconds ago Up 3 seconds (health: starting) 8443/tcp, 0.0.0.0:80->8080/tcp, [::]:80->8080/tcp
zbx_db mysql:8.0-debian "docker-entrypoint.s…" db 5 seconds ago Up 3 seconds 3306/tcp, 33060/tcp
- 前端配置-告警媒介
4. 優雅展示-Grafana
Grafana 是一款開源的 數據可視化與分析平臺,主要用于監控、分析和展示時序數據(如服務器性能、應用指標、業務數據等)。它支持多種數據源(zabbix、Prometheus……),提供豐富的儀表盤(Dashboard)和圖表功能,廣泛應用于 DevOps、運維監控、IoT、業務分析 等領域。
- 官網:
https://grafana.com
4.1 部署grafana
- 安裝包:
grafana-enterprise-10.4.17-1.x86_64.rpm 鏈接: https://pan.baidu.com/s/1S-7IYaYkTH3eHW7xB5rduA 提取碼: rnf5
[root@m03 ~]# rpm -ivh grafana-enterprise-10.4.17-1.x86_64.rpm
……
[root@m03 ~]# systemctl enable --now grafana-server.service
[root@m03 ~]# ss -lntup |grep gra
tcp LISTEN 0 128 *:3000 *:* users:(("grafana",pid=927,fd=16))
- granfana的前端頁面端口是3000
4.2 配置數據源-zabbix
- 安裝zabbix插件,granfana默認 沒有
[root@m03 ~]# grafana-cli plugins install alexanderzobnin-zabbix-app
? Downloaded and extracted alexanderzobnin-zabbix-app v5.2.0 zip successfully to /var/lib/grafana/plugins/alexanderzobnin-zabbix-appPlease restart Grafana after installing or removing plugins. Refer to Grafana documentation for instructions if necessary.[root@m03 ~]# grafana-cli plugins ls
installed plugins:
alexanderzobnin-zabbix-app @ 5.2.0
[root@m03 ~]# systemctl restart grafana-server.service
4.3 編輯儀表盤面板
4.3.1 編輯Host name面板
- 顯示zabbix服務器主機名
4.3.2 編輯CPU面板
- 可以對監控項名稱使用正則,獲取多個參數
4.3.3 編輯System load(系統負載)面板
4.4 保存儀表盤配置
5. 踩坑記錄-granfana儀表盤:Failed to upgrade legacy queries
6. 思維導圖
https://kdocs.cn/join/gpuxq6r?f=101\r\n邀請你加入共享群「老男孩教育Linux運維99期-孫克旭」一起進行文檔協作