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

news2024/11/18 5:46:49

day02

day02配置告警用户数超过50,发送告警邮件实施验证告警配置配置钉钉机器人告警创建钉钉机器人编写脚本并测试添加报警媒介类型为用户添加报警媒介创建触发器创建动作验证自动发现配置自动发现主动监控配置web2使用主动监控修改配置文件,只使用主动监控创建用于主动监控的主机拓扑图完善拓扑图监控Nginxstub_status模块

配置告警

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

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

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

实施

  • 创建触发器规则

 

image-20221231161641957

image-20221231161800123

image-20221231161918016

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

 

 

image-20221231162216441

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

image-20221231162527775

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

image-20221231162806961

image-20221231162907936

 

  • 为用户关联邮箱

 

 

 

image-20221231162958772

image-20221231163032257

image-20221231163212824

image-20221231163245788

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

image-20221231163401842

image-20221231163435927

image-20221231163519041

image-20221231163602261

image-20221231163632657

image-20221231163658101

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

 

 

image-20221231163835081

image-20221231164003048

image-20221231164048245

验证告警配置

  • 在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页面中查看

image-20221231164820967

image-20221231164852897

  • 在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系统上下载电脑版钉钉)
  • 下面以钉钉电脑版为例,配置钉钉群聊机器人
  • 在群聊中点击设置,以新建机器人

image-20221231173247554

image-20221231173323082

 

 

image-20221231173347359

image-20221231173416764

 

 

image-20221231173439884

image-20221231173502463

image-20221231173605449

image-20221231173634297

注意上面的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"}

image-20221231174806362

添加报警媒介类型

image-20221231182415291

image-20221231182600844

 

 

 

image-20221231182638787

image-20221231190625489

image-20221231182729332

为用户添加报警媒介

 

image-20221231182907139

image-20221231182941890

image-20221231183008455

image-20221231183039844

创建触发器

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

image-20221231183305468

 

 

image-20221231183329667

image-20221231183514699

image-20221231183545700

创建动作

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

image-20221231183754607

image-20221231183955374

 

 

image-20221231184051140

image-20221231184121455

验证

  • 创建用户,使用户数超过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
  • 查看结果

image-20221231184554147

image-20221231190759575

自动发现

 

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

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

  • 自动发现流程:

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

配置自动发现

  • 创建自动发现规则

 

image-20221231192401496

image-20221231192649096

image-20221231192713341

image-20221231193140459

  • 创建发现动作

 

 

 

image-20221231191200909

image-20221231191341309

image-20221231191428626

image-20221231191537605

image-20221231191605468

image-20221231191633759

image-20221231191703535

image-20221231191731305

  • 添加结果如下:

 

image-20221231191837042

  • 验证

 

image-20221231193513146

  • 在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

image-20221231194314392

 

主动监控

  • 默认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  # 端口号消失

创建用于主动监控的主机

 

image-20221231195058709

image-20221231195251001

image-20221231195553927

拓扑图

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

 

 

image-20221231195818158

image-20221231195838363

  • 添加元素:

    • 地图元素:可以是一个装饰图形,也可以对应具体的设备
    • 形状:长方形、圆形
    • 链接:连线,多个设备之间才能使用链接

完善拓扑图

  • 添加交换机图标

image-20221231200007304

image-20221231200111510

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

image-20221231200203039

  • 添加web服务器

 

image-20221231200322727

 

  • 添加链接

 

image-20221231200407274

监控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上创建监控项

 

 

image-20230101103845270

image-20230101103910457

image-20230101104012945

image-20230101104220486

知识点思维导图:https://flowus.cn/share/7875c0e1-ebbd-4dad-aa7e-f40e6ed6c6d3

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

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

相关文章

修改el-select或者el-input样式失效

下午改el-input和el-select这两个的样式真的烦&#xff0c;&#xff0c;&#xff0c;还不如写原生标签了。。 样式使用的是sass 我已经在样式器中挨着挨着去找了&#xff0c;把层级的类都写下来了 .select-wraper{//下拉框.el-select{.el-input .el-input__wrapper{backgrou…

复习之vsftp服务

一、vsftp服务简介 文件传输协议&#xff08;File Transfer Protocol&#xff0c;FTP&#xff09;是用于在网络上进行文件传输的一套标准协议&#xff0c;它工作在 OSI 模型的第七层 即应用层&#xff0c; 使用 TCP 传输而不是 UDP&#xff0c; 客户在和服务器建立连接前要经过…

浅说React-Dnd的使用

前言(学习原因) 近期在工作中遇到一个新的需求&#xff1a;具体大概效果看下面.gif 当时看到这个需求经师兄提醒知道了React-Dnd&#xff0c;想到了表格 Table - Ant Design里有一个可拖拽表格的效果&#xff0c;照搬到了项目里发现不太能满足我们的需求&#xff0c;就去搜了一…

逆波兰表达式求值

给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 、-、* 和 / 。每个操作数&#xff08;运算对象&#xff09;都可以是一个整数或者另一个表达式。两个…

语义检索系统【全】:基于Milvus+ERNIE+SimCSE+IBN实现学术文献语义检索系统完整版

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…

PCB添加二维码

PCB添加二维码 1、PCB上添加二维码 在PCB上添加二维码&#xff0c;可以清楚的展示PCB板子的信息&#xff0c;包括&#xff1a;制板人员、时间以及这个板子所用的仪器。 2、如何在PCB上添加二维码&#xff08;错误示例&#xff09; 首先说一种错误的方法&#xff0c;试了很多…

RS232转Profinet网关rs232串门转网门接法

在工业自动化领域&#xff0c;如何将扫码枪与PLC连接一直是一个重要的问题。而今天&#xff0c;我们将通过一个案例来展示如何通过RS232转Profinet网关&#xff0c;将X-9300扫码枪接入到PLC1200工业以太网总线上。在这个过程中&#xff0c;我们将会用到捷米的RS232自由协议转Pr…

文件系统的基本认知笔记

1.什么是文件系统 常规认知&#xff1a;Linux下的根目录文件系统是操作系统用于明确存储设备&#xff08;常见的是磁盘&#xff0c;也有基于NAND Flash的固态硬盘&#xff09;或分区上的文件的方法&#xff0c;即在存储设备上组织文件的方法&#xff0c;这种所谓的方法就是文件…

Linux【网络编程】之深入理解TCP协议

Linux【网络编程】之深入理解TCP协议 TCP协议TCP协议段格式4位首部长度---TCP报头长度信息 TCP可靠性&#xff08;确认应答&#xff09;&& 提高传输效率确认应答(ACK)机制32位序号与32为确认序号 16位窗口大小---自己接收缓冲区剩余空间的大小16位紧急指针---紧急数据处…

Unity 使用SharpZipLib解压时报错

报错信息&#xff1a; NotSupportedException: Encoding 936 data could not be found. Make sure you have correct international System.Text.Encoding.GetEncoding (System.Int32 codepage) ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToString。 出现问题分析&…

三种简单易用的制作符合要求的证件照片的方法

在生活和学习中&#xff0c;我们经常需要上传一些证件照片。但是在准备上传之前&#xff0c;我们可能会发现底色不正确&#xff0c;这会导致无法通过审核。重新拍照既费时间又浪费金钱&#xff0c;这让人感到非常困扰。然而&#xff0c;我们可以借助一些方法和工具来轻松更改证…

Java作业1

1.编写程序数一下 1到 100 的所有整数中出现多少个数字9 十位 n/10 个位 n%10 public static void main(String[] args) {int count 0;for (int i 1; i < 100; i) {if(i / 10 9){count;}if(i%109){count;}}System.out.println(count);} 2.给定一个数字&#xff0c;判…

过滤器,监听器与拦截器的区别

过滤器&#xff0c;监听器与拦截器的区别 ​ 过滤器和监听器不是Spring MVC中的组件&#xff0c;而是Servlet的组件&#xff0c;由Servlet容器来管理。拦截器是Spring MVC中的组件&#xff0c;由Spring容器来管理 ​ Servlet过滤器与Spring MVC 拦截器在Web应用中所处的层次如…

身为测试人“我“不再背锅,完整一套软件测试流程汇总...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 关于测试流程&…

FPGA优质开源模块 - SRIO

本文介绍一个FPGA常用模块&#xff1a;SRIO&#xff08;Serial RapidIO&#xff09;。SRIO协议是一种高速串行通信协议&#xff0c;在我参与的项目中主要是用于FPGA和DSP之间的高速通信。有关SRIO协议的详细介绍网上有很多&#xff0c;本文主要简单介绍一下SRIO IP核的使用和本…

【论文精读2】用于多文档摘要生成的层次Transformer方法

前言 论文分享 来自2019ACL的多文档摘要生成方法论文&#xff0c;作者来自英国爱丁堡大学&#xff0c;引用数310 Hierarchical Transformers for Multi-Document Summarization 代码地址hiersumm 多文档摘要抽取的难点在于没有合适的数据集&#xff0c;同时过长的文档文本也导…

剑指 Offer 55 - II. ! 平衡二叉树

剑指 Offer 55 - II. 平衡二叉树 输入一棵二叉树的根节点&#xff0c;判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1&#xff0c;那么它就是一棵平衡二叉树。 来自力扣K神的解法1&#xff0c;真的是太巧妙了&#xff01; 方法recur检查以nod…

什么是自动化测试框架?自动化测试框架有哪些?

一、自动化测试 1、为什么要做自动化测试&#xff1f; 自动化测试就是把以人为驱动的测试行为转化为机器执行的一种过程&#xff0c;即模拟手工测试的步骤&#xff0c;通过执行测试脚本自动地测试软件自动化测试就是程序&#xff08;脚本&#xff09;测试程序&#xff0c;使用…

LeNet卷积神经网络-笔记

LeNet卷积神经网络-笔记 手写分析LeNet网三卷积运算和两池化加两全连接层计算分析 基于paddle飞桨框架构建测试代码 #输出结果为&#xff1a; #[validation] accuracy/loss: 0.9530/0.1516 #这里准确率为95.3% #通过运行结果可以看出&#xff0c;LeNet在手写数字识别MNIST验证…

如何开启一个java微服务工程

安装idea IDEA常用配置和插件&#xff08;包括导入导出&#xff09; https://blog.csdn.net/qq_38586496/article/details/109382560安装配置maven 导入source创建项目 修改项目编码utf-8 File->Settings->Editor->File Encodings 修改项目的jdk maven import引入…