Zabbix报警机制、配置钉钉机器人、自动发现、主动监控概述、配置主动监控、zabbix拓扑图、nginx监控实例
day02
day02配置告警用户数超过50,发送告警邮件实施验证告警配置配置钉钉机器人告警创建钉钉机器人编写脚本并测试添加报警媒介类型为用户添加报警媒介创建触发器创建动作验证自动发现配置自动发现主动监控配置web2使用主动监控修改配置文件,只使用主动监控创建用于主动监控的主机拓扑图完善拓扑图监控Nginxstub_status模块
配置告警
- 默认情况下,监控项不会自动发送告警消息
- 需要配置触发器与告警,并且通过通知方式发送信息给联系人
- 触发器:设置条件,当条件达到时,将会执行某个动作
- 动作:触发器条件达到之后要采取的行为,比如发邮件或执行命令
用户数超过50,发送告警邮件
- 当web1的用户数超过50时,认为这是一个问题(Problem)
- 当出现问题时,将会执行动作。
- 执行的动作是给管理员发邮件。
- 给管理员发邮件,还要配置邮件服务器的地址,以及管理员的email地址
实施
- 创建触发器规则





上图中,点击“添加”后,出现下图:

上图中,点击“插入”后的结果如下:


- 创建邮件类型的报警媒介



- 为用户关联邮箱




- 创建动作:当出现Problem状态时,给admin发邮件








回到“创建动作”页面后,点击“操作”:





验证告警配置
- 在zabbixserver上配置邮件服务
# 配置postfix邮件服务和mailx邮件客户端
[root@pubserver zabbix]# vim 07-config-mail.yml
---
- name: config mail
hosts: zabbix
tasks:
- name: install mail # 安装postfix和mailx
yum:
name: postfix,mailx
state: present
- name: start postfix # 启动邮件服务postfix
service:
name: postfix
state: started
enabled: yes
[root@pubserver zabbix]# ansible-playbook 07-config-mail.yml
- 在web1创建用户,使总用户数超过50
[root@web1 ~]# for user in user{1..5}
> do
> useradd $user
> done
- 在zabbix web页面中查看



- 在zabbixserver上查看邮件
[root@zabbixserver ~]# mail # 查看邮件
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 2 messages 2 new
>N 1 zzg@tedu.cn Sat Dec 31 16:47 21/932 "Problem: usercnt_gt_50"
N 2 zzg@tedu.cn Sat Dec 31 16:48 21/932 "Problem: usercnt_gt_50"
& 1 # 查看1号邮件
Message 1:
From zzg@tedu.cn Sat Dec 31 16:47:59 2022
Return-Path: <zzg@tedu.cn>
X-Original-To: root@localhost.localdomain
Delivered-To: root@localhost.localdomain
From: <zzg@tedu.cn>
To: <root@localhost.localdomain>
Date: Sat, 31 Dec 2022 16:47:59 +0800
Subject: Problem: usercnt_gt_50
Content-Type: text/plain; charset="UTF-8"
Status: R
Problem started at 16:47:56 on 2022.12.31
Problem name: usercnt_gt_50
Host: web1
Severity: Warning
Operational data: 51
Original problem ID: 102
& q # 输入q退出
配置钉钉机器人告警
创建钉钉机器人
- 登陆钉钉网页版:https://im.dingtalk.com/ (或者在windows系统上下载电脑版钉钉)
- 下面以钉钉电脑版为例,配置钉钉群聊机器人
- 在群聊中点击设置,以新建机器人










注意上面的Webhook地址,不要泄露,谁拥有此地址,谁就可以控制机器人说话。
编写脚本并测试
# 安装钉钉机器人脚本需要用到的模块
[root@zabbixserver ~]# yum install -y python3-requests
# 编写钉钉机器人脚本
[root@zabbixserver ~]# vim /usr/lib/zabbix/alertscripts/dingalert.py
#!/usr/bin/env python3
import json
import requests
import sys
def send_msg(url, remiders, msg):
headers = {'Content-Type': 'application/json; charset=utf-8'}
data = {
"msgtype": "text",
"at": {
"atMobiles": remiders,
"isAtAll": False,
},
"text": {
"content": msg,
}
}
r = requests.post(url, data=json.dumps(data), headers=headers)
return r.text
if __name__ == '__main__':
msg = sys.argv[1]
remiders = []
url = '钉钉机器人Webhook地址' # 注意此处需输入机器人的webhook地址
print(send_msg(url, remiders, msg))
[root@zabbixserver ~]# chmod +x /usr/lib/zabbix/alertscripts/dingalert.py
[root@zabbixserver ~]# /usr/lib/zabbix/alertscripts/dingalert.py 'warn: 测试消息' # 注意消息中要包含关键字warn
{"errcode":0,"errmsg":"ok"}


添加报警媒介类型






为用户添加报警媒介





创建触发器
- 创建触发器,用户数超过55则触发问题






创建动作
- 创建动作,用户数超过55则发送钉钉告警消息





验证
- 创建用户,使用户数超过55
[root@web1 ~]# for user in user{6..10}; do useradd $user; done
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k usercnt
56
- 查看结果



自动发现
-
当被监控的设备非常多的时候,手工添加将会变得非常不方便
-
可以使用自动发现功能,实现添加主机、添加到主机组、 链接模板
-
自动发现流程:
- 创建自动发现规则
- 创建动作,当主机被发现之后,执行什么操作
- 通过动作,添加主机,将模板应用到发现的主机
配置自动发现
- 创建自动发现规则





- 创建发现动作









- 添加结果如下:


- 验证

- 在web2上配置agent
[root@web2 ~]# vim /etc/zabbix/zabbix_agentd.conf
117 Server=127.0.0.1,192.168.88.5
182 Hostname=web2
[root@web2 ~]# systemctl enable zabbix-agent.service --now

主动监控
- 默认zabbix使用的是被动监控,主被动监控都是针对被监控主机而言的。
- 被动监控:Server向Agent发起请求,索取监控数据。此种模式常用
- 主动监控:Agent向Server发起连接,向Server汇报
配置web2使用主动监控
修改配置文件,只使用主动监控
[root@web2 ~]# vim /etc/zabbix/zabbix_agentd.conf
117 # Server=127.0.0.1,192.168.88.5
142 StartAgents=0
171 ServerActive=192.168.88.5
242 RefreshActiveChecks=120
# 重启服务
[root@web2 ~]# systemctl restart zabbix-agent.service
[root@web2 ~]# ss -tlnp | grep :10050 # 端口号消失
创建用于主动监控的主机





拓扑图
- 在zabbix中可以创建拓扑图,反映拓扑结构


-
添加元素:
- 地图元素:可以是一个装饰图形,也可以对应具体的设备
- 形状:长方形、圆形
- 链接:连线,多个设备之间才能使用链接
完善拓扑图
- 添加交换机图标



- 添加链接:按住ctrl键,点选两台设备,点链接边上的添加


- 添加web服务器

- 添加链接

监控Nginx
stub_status模块
- 用于实时监控nginx的网络连接,这个模块是nginx官方提供的一个模块。
- 配置nginx
[root@pubserver zabbix]# vim 08-config-nginx.yml
---
- name: config nginx
hosts: webservers
tasks:
- name: install nginx # 安装nginx
yum:
name: nginx
state: present
- name: start nginx # 启动nginx
service:
name: nginx
state: started
enabled: yes
[root@pubserver zabbix]# ansible-playbook 08-config-nginx.yml
# 修改配置文件,启用stub_status功能
[root@web1 ~]# vim /etc/nginx/nginx.conf
...略...
47 location / {
48 }
49
50 location /status { # 在此处添加3行
51 stub_status on;
52 }
53
54 error_page 404 /404.html;
55 location = /40x.html {
56 }
...略...
[root@web1 ~]# systemctl restart nginx
# 访问监控页面
[root@zabbixserver ~]# curl http://192.168.88.100/status
Active connections: 1
server accepts handled requests
2 2 2
Reading: 0 Writing: 1 Waiting: 0
# Active connections:当前客户端与nginx之间的连接数。它等于下面Reading / Writing / Waiting之和
# accepts:自nginx启动之后,客户端访问的总量
# handled:自nginx启动之后,处理过的客户端连接总数,通常等于accepts的值。
# requests:自nginx启动之后,处理过的客户端请求总数。
# Reading:正在读取客户端的连接总数。
# Writing:正在向客户端发送响应的连接总数。
# Waiting:空闲连接。
# 使用工具向服务器发起多个请求
[root@zabbixserver ~]# yum install -y httpd-tools
# 一共发1000个请求,每次并发数200
[root@zabbixserver ~]# ab -n1000 -c200 http://192.168.88.100/
[root@zabbixserver ~]# curl http://192.168.88.100/status
Active connections: 1
server accepts handled requests
1097 1097 1003
Reading: 0 Writing: 1 Waiting: 0
- 编写脚本,用于获取各项数据
[root@web1 ~]# vim /usr/local/bin/nginx_status.sh
#!/bin/bash
case $1 in
active)
curl -s http://192.168.88.100/status | awk '/Active/{print $NF}';;
waiting)
curl -s http://192.168.88.100/status | awk '/Waiting/{print $NF}';;
accepts)
curl -s http://192.168.88.100/status | awk 'NR==3{print $1}';;
esac
[root@web1 ~]# chmod +x /usr/local/bin/nginx_status.sh
[root@web1 ~]# nginx_status.sh active
1
[root@web1 ~]# nginx_status.sh accepts
1099
[root@web1 ~]# nginx_status.sh waiting
0
- 创建zabbix用到的key,获取各项数据
# key的语法格式
UserParameter=key[*],<command> $1
# key[*]中的*是参数,将会传给后面的位置变量$1
# 创建声明key的文件
[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.d/nginx_status.conf
UserParameter=nginx_status[*],/usr/local/bin/nginx_status.sh $1
# 测试
[root@web1 ~]# systemctl restart zabbix-agent.service
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k nginx_status[active]
1
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k nginx_status[waiting]
0
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k nginx_status[accepts]
1103
- 在zabbix上创建监控项





知识点思维导图:https://flowus.cn/share/7875c0e1-ebbd-4dad-aa7e-f40e6ed6c6d3
相关文章:
Zabbix报警机制、配置钉钉机器人、自动发现、主动监控概述、配置主动监控、zabbix拓扑图、nginx监控实例
day02 day02配置告警用户数超过50,发送告警邮件实施验证告警配置配置钉钉机器人告警创建钉钉机器人编写脚本并测试添加报警媒介类型为用户添加报警媒介创建触发器创建动作验证自动发现配置自动发现主动监控配置web2使用主动监控修改配置文件,只使用主动…...
ELK日志分析系统概述及部署
ELK 平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kibana 三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求。 一、ELK概述 1、组件说明 ①ElasticSearch ElasticSearch是基于Lucene(一个全文…...
HTML拖拽
拖拽的流程:鼠标按下(mousedown)→鼠标移动(mousemove)→鼠标松开(moveup) 需要理解的几个api: clientX/clientY: 相对于浏览器视窗内的位置坐标(不包括浏览器收藏夹和顶部网址部分)pageX/pageY: 该属性会考虑滚动,如…...
【vue】 vue2 监听滚动条滚动事件
代码 直接上代码,vue单文件 index.vue <template><div class"content" scroll"onScroll"><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容…...
k8s目录
k8s笔记目录,更新中... 一 概念篇 1.1概念介绍 1.2 pod 1.3 controller 1.3.1 deployment 1.3.2 statefulset 1.3.3 daemonset 1.3.4 job和cronJob1 1.4 serivce和ingress 1.5 配置与存储 1.5.1 configMap 1.5.2 secret 1.5.3 持久化存储 1.5.4 pv和…...
设计模式行为型——解释器模式
目录 什么是解释器模式 解释器模式的实现 解释器模式角色 解释器模式类图 解释器模式举例 解释器模式代码实现 解释器模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是解释器模式 解释器模式(Interpreter Pattern)属于行为型模式&…...
使用 Webpack 优化前端开发流程
在现代前端开发中,构建工具的选择和优化流程的设计至关重要。Webpack 是一个功能强大的前端构建工具,能够优化我们的开发流程,提高开发效率和项目性能。本文将介绍如何使用 Webpack 来优化前端开发流程。 代码优化和资源管理也是前端项目中不…...
mysql的分库分表脚本
目录 一.分库分表优点二.过程思路脚本实现验证 一.分库分表优点 1,提高系统的可扩展性和性能:通过分库分表,可以将数据分布在多个节点上,从而提高系统的负载能力和处理性能。 2,精确备份和恢复:分库分表备…...
JavaEE初阶之文件操作 —— IO
目录 一、认识文件 1.1认识文件 1.2树型结构组织 和 目录 1.3文件路径(Path) 1.4其他知识 二、Java 中操作文件 2.1File 概述 2.2代码示例 三、文件内容的读写 —— 数据流 3.1InputStream 概述 3.2FileInputStream 概述 3.3代码示例 3.4利用 Scanner 进行字…...
客户端代码 VS 服务端代码 简述
客户端代码和服务端代码是计算机网络交互中的两种重要代码类型。在计算机网络中,客户端和服务器是一对设备模型,客户端(Client)负责向服务器发送请求,服务器(Server)负责处理请求并返回给客户端…...
【娱乐圈明星知识图谱2】信息抽取
目录 1. 项目介绍 2. 信息抽取介绍 3. ChatGPT 信息抽取代码实战 4. 信息抽取主逻辑 5. 项目源码 1. 项目介绍 利用爬虫项目中爬取的大量信息 【娱乐圈明星知识图谱1】百科爬虫_Encarta1993的博客-CSDN博客娱乐圈明星知识图谱百度百科爬虫百度百科爬虫百度百科爬虫百度百…...
C++ rand的用法
C rand的用法 rand()介绍srand()介绍产生随机数的用法产生一定范围随机数的通用表示公式 我们知道 rand() 函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基…...
element时间选择器的默认值
概览:vue使用element组件,需要给时间选择器设置默认值,场景一:默认时间选择器,场景二:时间范围选择器,开始时间和结束时间。 一、默认时间选择器 实现思路: element组件的v-model绑…...
fiddler过滤器
1、fiddler Fiddler是一个免费、强大、跨平台的HTTP抓包工具。下载地址 2、为什么适用过滤器 不适用过滤器时,所有的报文都会被抓包。 我们在开发或测试时,只需要抓包某个域名下的报文 ,以“www.baidu.com”为例,不设置过滤器&…...
面试必考精华版Leetcode2130.链表最大孪生和
题目: 代码(首刷看解析 day22): class Solution { public:int pairSum(ListNode* head) {ListNode* slowhead;ListNode* fasthead->next;while(fast->next!nullptr){slowslow->next;fastfast->next->next;}//反转…...
qemu kvm 新建虚拟机
开始菜单打开虚拟机管理器...
Charles抓包工具使用(一)(macOS)
Fiddler抓包 | 竟然有这些骚操作,太神奇了? Fiddler响应拦截数据篡改,实现特殊场景深度测试(一) 利用Fiddler抓包调试工具,实现mock数据特殊场景深度测试(二) 利用Fiddler抓包调试工…...
2023年8月美团外卖3-18元红包优惠券天天领取活动日历及美团外卖红包领取使用
2023年8月美团外卖3-18元红包天天领取活动日历 根据上图美团外卖红包领取活动时间表以下时间可以天天领取3-18元美团外卖红包优惠券: 1、2023年8月18日 可领取美团外卖18元神券节红包; 2、2023年8月每周六、周日每天可领取12元美团外卖节红包ÿ…...
深度学习各层负责什么内容?
1、深度学习——神经网络简介 深度学习(Deep Learning)(也称为深度结构学习【Deep Structured Learning】、层次学习【Hierarchical Learning】或者是深度机器学习【Deep Machine Learning】)是一类算法集合,是机器学习的一个分支。 深度学习方法近年来,…...
【硬件设计】模拟电子基础二--放大电路
模拟电子基础二--放大电路 一、基本放大电路1.1 初始电路1.2 静态工作点1.3 分压偏置电路 二、负反馈放大电路三、直流稳压电路 前言:本章为知识的简单复习,适合于硬件设计学习前的知识回顾,不适合运用于考试。 一、基本放大电路 1.1 初始电…...
cool-admin(midway版)数据库索引维护:高级实践指南
cool-admin(midway版)数据库索引维护:高级实践指南 【免费下载链接】cool-admin-midway 🔥 cool-admin(midway版)一个很酷的后台权限管理框架,模块化、插件化、CRUD极速开发,永久开源免费,基于midway.js 3.x、typescri…...
PyTorch Subset类实战:自定义数据子集与高效训练技巧
1. PyTorch Subset类基础与应用场景 当你面对一个庞大的数据集时,直接加载全部数据进行训练往往会遇到内存不足、训练速度慢等问题。这时候PyTorch的torch.utils.data.Subset类就能派上大用场。这个类就像是一个智能的数据筛选器,可以让你轻松地从原始数…...
C标准库缓冲区溢出问题与安全编程实践
1. C标准库缓冲区溢出问题概述缓冲区溢出是C语言开发中最常见的安全漏洞之一。作为一名有十年经验的嵌入式开发者,我见过太多由于不当使用标准库函数导致的崩溃和安全问题。缓冲区溢出通常发生在程序向固定大小的缓冲区写入超过其容量的数据时,多余的数据…...
EVA-01效果展示:多场景图文问答案例,看AI如何精准识别与深度分析
EVA-01效果展示:多场景图文问答案例,看AI如何精准识别与深度分析 1. 视觉神经同步系统初体验 当你第一次打开EVA-01视觉神经同步系统,最直观的感受就是它独特的"暴走白昼"界面设计。与传统AI工具常见的深色背景不同,这…...
从MySQL到Doris:手把手教你无缝迁移数据模型(附分区分桶实战配置)
从MySQL到Doris:数据模型迁移实战与分区分桶深度优化 如果你正在使用MySQL处理海量数据分析任务,可能会遇到查询性能瓶颈、复杂聚合计算效率低下等问题。Apache Doris作为新一代MPP分析型数据库,兼容MySQL协议却提供了完全不同的底层架构设计…...
SonarQube实战:通过pom.xml配置sonar-maven-plugin实现自动化代码扫描
1. 为什么需要自动化代码扫描 在软件开发过程中,代码质量是决定项目成败的关键因素之一。想象一下,你正在建造一栋房子,如果砖块质量不过关,水泥配比不对,即使外观再漂亮,也可能随时倒塌。代码也是如此&…...
Electron 14+ 开发必看:WebContentsView 实战指南(含与 BrowserView 对比)
Electron 14 开发实战:WebContentsView 深度解析与性能优化 如果你正在使用 Electron 14 开发跨平台桌面应用,那么 WebContentsView 绝对是你需要重点掌握的核心组件。作为 Electron 团队在 14 版本引入的全新视图系统,WebContentsView 不仅解…...
嵌入式开发中数据结构的优化与应用实践
1. 数据结构在嵌入式开发中的核心价值作为一名在嵌入式领域摸爬滚打十年的老兵,我深刻体会到数据结构就像瑞士军刀里的各种工具——选对工具能让工作事半功倍。在资源受限的MCU环境中,一个精心选择的数据结构可能意味着程序能否流畅运行和内存是否会爆掉…...
万象视界灵坛实操案例:博物馆数字藏品图像‘青铜器’‘唐三彩’‘水墨画’三级语义识别
万象视界灵坛实操案例:博物馆数字藏品图像青铜器唐三彩水墨画三级语义识别 1. 项目背景与价值 在博物馆数字化进程中,如何准确识别和分类各类文物图像是一个重要课题。传统基于标签的分类系统往往难以捕捉文物深层的艺术风格和文化内涵。 万象视界灵坛…...
【数值分析】线性方程组求解的MATLAB实战:从高斯消元到追赶法
1. 线性方程组求解的数值方法概述 在工程计算和科学研究中,线性方程组的求解是一个基础而重要的问题。想象一下,你正在设计一座桥梁,需要计算各个节点的受力情况;或者你在分析电路时,需要确定各个支路的电流大小。这些…...
