当前位置: 首页 > news >正文

day62-可观测性建设-全链路监控zabbix+grafana

🌟监控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数据源

导入仪表盘

查看仪表盘

注意:仪表盘有些数据获取不到,需要调试

仪表盘调试

http://www.lryc.cn/news/598462.html

相关文章:

  • 深度分析Java内存结构
  • 排序查找算法,Map集合,集合的嵌套,Collections工具类
  • SSM之表现层数据封装-统一响应格式全局异常处理
  • Spring AI 系列之二十四 - ModerationModel
  • 从0到1学习c++ 命名空间
  • 【Linux】linux基础开发工具(一) 软件包管理器yum、编辑器vim使用与相关命令
  • 【YOLOv8改进 - 特征融合】FCM:特征互补映射模块 ,通过融合丰富语义信息与精确空间位置信息,增强深度网络中小目标特征匹配能力
  • Springboot儿童医院问诊导诊系统aqy75(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 免费生成文献综述的网站推荐,助力高效学术写作
  • 408——数据结构(第二章 线性表)
  • 线段树学习笔记 - 练习题(2)
  • Flowable + Spring Boot 自定义审批流实战教程
  • 「iOS」黑魔法——方法交换
  • 词嵌入维度与多头注意力关系解析
  • 51c视觉~3D~合集4
  • 【C语言进阶】柔性数组
  • 11款Scrum看板软件评测:功能、价格、优缺点
  • C++标准库算法实战指南
  • Java基础day16-Vector类-Stack类-Collection子接口Set接口
  • 基础NLP | 02 深度学习基本原理
  • EasyExcel 模板导出数据 + 自定义策略(合并单元格)
  • 亚马逊云科技 EC2 部署 Dify,集成 Amazon Bedrock 构建生成式 AI 应用
  • 货车手机远程启动的扩展功能有哪些
  • QML 模型
  • java如何声明函数
  • Vulnhub Matrix-Breakout-2-Morpheus靶机攻略
  • jd h5st参数纯算
  • 现代C++的一般编程规范
  • Linux内核中动态内存分配函数解析
  • MYSQL中NOT IN和NOT EXISTS