Zabbix报警机制、配置钉钉机器人、自动发现、主动监控概述、配置主动监控、zabbix拓扑图、nginx监控实例

目录

配置告警

用户数超过50,发送告警邮件

实施

验证告警配置

配置钉钉机器人告警

创建钉钉机器人

编写脚本并测试

添加报警媒介类型

 为用户添加报警媒介

创建触发器

创建动作

验证

自动发现

配置自动发现

主动监控

配置web2使用主动监控

修改配置文件,只使用主动监控

创建用于主动监控的主机

拓扑图

完善拓扑图

监控Nginx

stub_status模块


配置告警

  • 默认情况下,监控项不会自动发送告警消息
  • 需要配置触发器与告警,并且通过通知方式发送信息给联系人
  • 触发器:设置条件,当条件达到时,将会执行某个动作
  • 动作:触发器条件达到之后要采取的行为,比如发邮件或执行命令

用户数超过50,发送告警邮件

  • 当web1的用户数超过50时,认为这是一个问题(Problem)
  • 当出现问题时,将会执行动作。
  • 执行的动作是给管理员发邮件。
  • 给管理员发邮件,还要配置邮件服务器的地址,以及管理员的email地址
实施
  • 创建触发器规则

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

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

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

  • 为用户关联邮箱

 

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

 

 

 

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

 

验证告警配置
  • 在zabbixserver上配置邮件服务
# 配置postfix邮件服务和mailx邮件客户端[root@pubserver zabbix]# vim 07-config-mail.yml---- name: config mailhosts: zabbixtasks:- name: install mail     # 安装postfix和mailxyum:name: postfix,mailxstate: present- name: start postfix    # 启动邮件服务postfixservice:name: postfixstate: startedenabled: 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 2022Return-Path: <zzg@tedu.cn>X-Original-To: root@localhost.localdomainDelivered-To: root@localhost.localdomainFrom: <zzg@tedu.cn>To: <root@localhost.localdomain>Date: Sat, 31 Dec 2022 16:47:59 +0800Subject: Problem: usercnt_gt_50Content-Type: text/plain; charset="UTF-8"Status: RProblem started at 16:47:56 on 2022.12.31Problem name: usercnt_gt_50Host: web1Severity: WarningOperational data: 51Original problem ID: 102& q   # 输入q退出

配置钉钉机器人告警

创建钉钉机器人
  • 登陆钉钉网页版:阿里巴巴-钉钉,是一个工作方式!超过1000w家企业正在使用钉钉! (或者在windows系统上下载电脑版钉钉)
  • 下面以钉钉电脑版为例,配置钉钉群聊机器人
  • 在群聊中点击设置,以新建机器人

注意上面的Webhook地址,不要泄露,谁拥有此地址,谁就可以控制机器人说话。

编写脚本并测试
# 安装钉钉机器人脚本需要用到的模块[root@zabbixserver ~]# yum install -y python3-requests# 编写钉钉机器人脚本[root@zabbixserver ~]# vim /usr/lib/zabbix/alertscripts/dingalert.py #!/usr/bin/env python3import jsonimport requestsimport sysdef 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.textif __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 usercnt56
  • 查看结果

自动发现

  • 当被监控的设备非常多的时候,手工添加将会变得非常不方便

  • 可以使用自动发现功能,实现添加主机、添加到主机组、 链接模板

  • 自动发现流程:

    • 创建自动发现规则
    • 创建动作,当主机被发现之后,执行什么操作
    • 通过动作,添加主机,将模板应用到发现的主机

配置自动发现

  • 创建自动发现规则

 

 

创建发现动作

 

 

  • 添加结果如下:

  • 验证

  • 在web2上配置agent
[root@web2 ~]# vim /etc/zabbix/zabbix_agentd.conf 117 Server=127.0.0.1,192.168.88.5182 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.5142 StartAgents=0171 ServerActive=192.168.88.5242 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 nginxhosts: webserverstasks:- name: install nginx   # 安装nginxyum:name: nginxstate: present- name: start nginx     # 启动nginxservice:name: nginxstate: startedenabled: 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/statusActive connections: 1 server accepts handled requests2 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/statusActive connections: 1 server accepts handled requests1097 1097 1003 Reading: 0 Writing: 1 Waiting: 0 
  • 编写脚本,用于获取各项数据
[root@web1 ~]# vim /usr/local/bin/nginx_status.sh#!/bin/bashcase $1 inactive)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 active1[root@web1 ~]# nginx_status.sh accepts1099[root@web1 ~]# nginx_status.sh waiting0
  • 创建zabbix用到的key,获取各项数据
# key的语法格式UserParameter=key[*],<command> $1# key[*]中的*是参数,将会传给后面的位置变量$1# 创建声明key的文件[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.d/nginx_status.confUserParameter=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上创建监控项

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/678871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Uni-app 学习笔记

H5访问页面跳转: 直接在浏览器输入页面 如: http://localhost:5174/#/pages/request/request 小程序访问页面跳转 pages.json中: "condition": { //模式配置,仅开发期间生效"current": 0, //当前激活的模式(list 的索引项)"list"…

《统计学简易速速上手小册》第5章:回归分析(2024 最新版)

文章目录 5.1 线性回归基础5.1.1 基础知识5.1.2 主要案例&#xff1a;员工薪资预测5.1.3 拓展案例 1&#xff1a;广告支出与销售额关系5.1.4 拓展案例 2&#xff1a;房价与多个因素的关系 5.2 多元回归分析5.2.1 基础知识5.2.2 主要案例&#xff1a;企业收益与多因素关系分析5.…

C#面:Property 和 Attribute 它们各有什么作用

Property&#xff08;属性&#xff09;&#xff1a; 用于封装类的字段。属性通常由get和set访问器组成。属性提供了对字段的访问和修改方法。通过定义属性可以控制对类的字段的访问权限。 Attribute&#xff08;特性&#xff09;&#xff1a; 用于为类、方法、属性等添加元数…

Linux上MySQL安装部署

准备工作 在/opt/software目录下创建mysql目录用来存放MySQL安装包: 链接&#xff1a;https://pan.baidu.com/s/1pjc-w6MSNlpptUjsZXNEdQ?pwd6666 cd /opt/softwaremkdir mysql 将安装包上传到mysql目录 安装部署 &#xff08;1&#xff09;卸载MySQL依赖&#xff0c;虽…

python:xml.etree 生成思维导图 Freemind文件

请参阅&#xff1a;java : pdfbox 读取 PDF文件内书签 或者 python&#xff1a;从PDF中提取目录 请注意&#xff1a;书的目录.txt 编码&#xff1a;UTF-8&#xff0c;推荐用 Notepad 转换编码。 xml 是 python 标准库&#xff0c;在 D:\Python39\Lib\xml\etree python 用 xm…

Java图形化界面编程——弹球游戏 笔记

Java也可用于开发一些动画。所谓动画&#xff0c;就是间隔一定的时间(通常小于0 . 1秒 )重新绘制新的图像&#xff0c;两次绘制的图像之间差异较小&#xff0c;肉眼看起来就成了所谓的动画 。 ​ 为了实现间隔一定的时间就重新调用组件的 repaint()方法&#xff0c;可以借助于…

图像的旋转不变特性及应用

想象一下&#xff0c;你有一张印着某个明显标志的纸张&#xff0c;例如一个黑色的字母 “X”。你将这张纸放在桌子上&#xff0c;用相机拍下了一张照片。然后&#xff0c;你将纸张顺时针旋转45度&#xff0c;并再次拍照。尽管纸张的方向变了&#xff0c;但上面的 “X” 还是那个…

js文件忽略ESLint语法检查

1. 整个文件忽略 /* eslint-disable */ // 代码开始位置2. 临时禁止 /* eslint-disable */ console.log(hello); /* eslint-enable */3. 对指定规则忽略 /* eslint-disable no-alert, no-console */ alert(foo); console.log(bar); /* eslint-enable no-alert, no-console …

C++ 贪心 区间问题 区间分组

给定 N 个闭区间 [ai,bi] &#xff0c;请你将这些区间分成若干组&#xff0c;使得每组内部的区间两两之间&#xff08;包括端点&#xff09;没有交集&#xff0c;并使得组数尽可能小。 输出最小组数。 输入格式 第一行包含整数 N &#xff0c;表示区间数。 接下来 N 行&…

共享锁与独占锁的区别与死锁的预防

共享锁与独占锁的区别与死锁的预防 在数据库管理系统中&#xff0c;锁是一种重要的资源管理机制&#xff0c;用于控制对共享资源的访问。其中&#xff0c;共享锁和独占锁是两种基本的锁类型&#xff0c;它们在并发控制中扮演着重要的角色。本文将深入探讨共享锁与独占锁的区别…

记录 | C++ std::cout 二进制<< 没有找到可接受“std::string“类型的右操作数的运算符(或没有可接受的转换)

error C2679: 二进制“<<”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换) 【解决办法】 添加头文件 <string> 而在之前没有碰到过类似的问题&#xff0c;找了下问题突然发现是因为头文件的加载错误&#xff0c;加载<string>就编…

Linux cp命令注意事项

目录 一. 基本语法二. 文件复制到文件夹时的路径存在问题三. 文件复制到文件夹时&#xff0c;记得给文件夹路径加上/ 一. 基本语法 -r&#xff1a;递归地复制目录及其内容。-p&#xff1a;保留源文件或目录的属性&#xff08;包括权限、所有者、组、时间戳等&#xff09;。 c…

边缘计算的重要性与应用场景

今天&#xff0c;我们探讨边缘计算的重要性与应用场景。 随着数字化时代的到来&#xff0c;数据已经成为我们生活中不可或缺的元素。然而&#xff0c;随着数据量的不断增长&#xff0c;传统的云计算已经难以满足我们的需求。边缘计算的出现&#xff0c;为我们提供了一种新的解…

设计模式--桥接模式(Bridge Pattern)

桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它主要是用于将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。 桥接模式主要包含以下几个角色&#xff1a; Abstraction&#xff08;抽象类&#xff09;&#xff1a;定义抽象类的…

Hugging Face 刚刚推出了一款开源的 AI 助手制造工具,直接向 OpenAI 的定制 GPT 挑战

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Linux——动静态库

基础知识:动vs静 类型动静加载时机运行时编译时可复用性多个文件只需要加载一份库文件每个文件都需要加载一份文件性能链接次数越多越有优势链接次数越少越有优势 代码编写 静态库 生成静态库 libmath.a:add.o sub.oar -rc $ $^%.o:%.cgcc -c $<使用静态库 头文件和工…

《动手学深度学习(PyTorch版)》笔记8.6

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

vue3学习——路由进度条

安装 pnpm i nprogress创建permission.ts import router from /router/index.ts import NProgress from nprogress import nprogress/nprogress.css // 不加样式不显示 NProgress.configure({ showSpinner: false }) router.beforeEach((to, from, next) > {console.log(t…

HTTP与HTTPS:网络安全之门户

源码分享 ​​https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tabBB08J2​​ 在进行网页爬取和数据收集时&#xff0c;我们经常会与HTTP&#xff08;超文本传输协议&#xff09;和HTTPS&#xff08;安全的超文本传输协议&#xff09;打交道。这两种协议都用于互联网上的数据传…

数据结构(2) 线性表

线性表 线性表的定义线性表的基本操作lnitList(&L)DestroyList(&L)Listlnsert(&L,i,e)ListDelete(&L,i,&e)LocateElem(L,e)GetElem(L,i)Length(L)PrintList(L)Empty(L)Tips:引用值 小结 根据数据结构的三要素–逻辑结构、数据的运算、存储结构&#xff0c;…