文章目录
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-app
Please 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期-孙克旭」一起进行文档协作