高级运维学习(十五)Zabbix监控(二)

news2024/12/26 21:01:45

一  Zabbix 报警机制

1  基本概念

  • 自定义的监控项默认不会自动报警
  • 首页也不会提示错误
  • 需要配置触发器与报警动作才可以自动报警

2  概念介绍

(1)触发器 (trigger)

表达式,如内存不足300M,用户超过30个等

当触发条件发生后,会导致一个触发事件

触发事件会执行某个动作

(2)动作(action)

触发器的条件被触发后的行为

可以是发送邮件、也可以是重启某个服务等

3  配置告警

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

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

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

(1)创建触发器规则

 

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

(2)创建邮件类型的报警媒介

(3)为用户关联邮箱

 

 (4)创建动作

        当出现Problem状态时,给admin发邮件

 

 

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

(5)验证告警配置

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

4  配置钉钉机器人告警

(1)创建钉钉机器人

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

(2)编写脚本并测试

# 安装钉钉机器人脚本需要用到的模块
[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"}

(3)添加报警媒介类型

 

为用户添加报警媒介

 

(4)创建触发器

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

 

(5)创建动作

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

 

(6)验证

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

二  Zabbix 进阶操作

1  自动发现

(1)概述

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

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

  • 自动发现流程:

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

(2)配置自动发现

  • 创建自动发现规则

  • 创建发现动作

 

 

  • 验证

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

 

2  主被动监控

(1)概述

  • 默认zabbix使用的是被动监控,主被动监控都是针对被监控主机而言的。
  • 被动监控:Server向Agent发起请求,索取监控数据。此种模式常用
  • 主动监控:Agent向Server发起连接,向Server汇报

区别:Server不用每次需要数据都连接Agent,Agent会自己收集数据并处理数据,Server仅需要保存数据即可

 

当监控主机达到一定量级后,Zabbix服务器会越来越慢此时,可以考虑使用主动监控,释放服务器的压力另外,Zabbix也支持分布式监控,也是可以考虑的方案 

(2)配置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  # 端口号消失

(3)添加用于主动监控的主机

(4)查看数据 

 

三  拓扑图

1  拓扑图

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

  • 添加元素:

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

2  完善拓扑图

  • 添加交换机图标

  • 添加链接:按住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上创建监控项

 

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

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

相关文章

【自然语言处理】基于python的问答系统实现

一&#xff0c;文件准备 该问答系统是基于已知的问题和其一一对应的答案进行实现的。首先需要准备两个文本文件&#xff0c;分别命名为“question.txt”和“answer.txt”&#xff0c;分别是问题文件和答案文件&#xff0c;每一行是一个问题以及对应的答案。 问题文件: 中国的首…

Pytorch模型使用与修改、保存与加载

模型的使用及修改、保存与加载 以图像处理中torchvision为例&#xff0c;PyTorch通过torchvision.models模块提供了更多的预训练模型. 在图像分类当中&#xff0c;包括许多模型 import torchvision import warnings import torch warnings.filterwarnings("ignore&quo…

3D Gaussian Splatting:用于实时的辐射场渲染

Kerbl B, Kopanas G, Leimkhler T, et al. 3d gaussian splatting for real-time radiance field rendering[J]. ACM Transactions on Graphics (ToG), 2023, 42(4): 1-14. 3D Gaussian Splatting 是 Siggraph 2023 的 Best Paper&#xff0c;法国团队在会议上展示了其实现的最…

软件测试|iOS 自动化测试——技术方案、环境配置

移动端的自动化测试&#xff0c;最常见的是 Android 自动化测试&#xff0c;我个人觉得 Android 的测试优先级会更高&#xff0c;也更开放&#xff0c;更容易测试&#xff1b;而 iOS 相较于 Android 要安全稳定的多&#xff0c;但也是一个必须测试的方向&#xff0c;这个系列文…

Bean作用域

从笔者之前的博客&#xff0c;我们可以看出 Spring 是⽤来读取和存储 Bean&#xff0c;因此在 Spring 中 Bean 是最核⼼的操作 资源&#xff0c;所以接下来我们深⼊学习⼀下 Bean 对象&#xff1a;Bean作用域&#xff01; 限定程序中变量的可用范围叫做作用域&#xff01;或者…

【遮天】荒古禁地采取圣药,姬老自己走上绝路,故事扣人心悬

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫资讯。 深度爆料&#xff0c;《遮天》动漫第30话最新剧情解析&#xff0c;姬云峰&#xff0c;姬家的长老&#xff0c;地位崇高&#xff0c;深受家族成员的尊敬和信赖。他的智慧和经验在家族中享有极高的声望&#xf…

【MATLAB源码-第72期】基于matlab的OFDM-IM索引调制系统在高斯,瑞利,莱斯信道误码率对比,对比传统OFDM系统。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 OFDM-IM索引调制技术是一种新型的无线通信技术&#xff0c;它将正交频分复用&#xff08;OFDM&#xff09;和索引调制&#xff08;IM&#xff09;相结合&#xff0c;以提高频谱效率和系统容量。OFDM-IM索引调制技术的基本思想…

【字符串】【完整程序+倒序输出+每个区间倒序输出】KamaCoder55

【字符串】【完整程序倒序输出每个区间倒序输出】KamaCoder55 解法1 完整程序书写kama 倒序输出每个区间倒序输出 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- 解法1 完整程序书写kama 倒序输出每个区间倒序输出 时间…

docker部署redis6

前言&#xff1a;在离线服务器上&#xff08;无联网&#xff09;&#xff0c;部署redis的方式&#xff0c;采用docker是比较方便的。下面将描述如何使用docker部署单机版redis 环境&#xff1a;centos 7 redis&#xff1a;6.2.14 docker&#xff1a;20.10.9 1.下载 redis 镜像…

取产品之道、赚效率的钱,锅圈万店背后的赢家法则

万店&#xff0c;一个真正意义上的规模壁垒&#xff0c;当它出现在任何行业时&#xff0c;都意味着这个玩家身上存在许多领先于行业的优势。 这一点&#xff0c;在刚于近日登录港交所的锅圈食品&#xff08;以下简称“锅圈”&#xff09;身上尤其明显——2017年&#xff0c;锅…

浅谈插接母线温度在线监测系统研究与应用-安科瑞黄安南

摘要 低压封闭式插接母线是供配电设施的关键部件&#xff0c;安装在生产车间内部高空&#xff0c;不易保养和维护&#xff0c;在安装不良或保养不当时易发生故障。插接点温度的异常变化与母线故障的发生有着密切的关系&#xff0c;以汽车整车制造工厂为例&#xff0c;提出母线接…

梓航DIY无限建站-3.5.8(企业官网 应用首页 PC建站 14套模板切换,自由组合页面,无限多开)

梓航DIY无限建站是一款支持无限建站的公众号应用。 自定义网址 全局样式设置 极速建站 更灵活 更方便。 1、默认页面指定设置&#xff0c;更灵活、更方便&#xff1b; 2、全局样式设置&#xff0c;减少页面重复设置工作&#xff1b; 3、不限数量网站制作装修&#xff08;想做…

VR虚拟现实:VR技术如何进行原型制作

VR虚拟现实原型制作 利用VR虚拟现实软件进行原型制作可以用于增强原型测试期间的沉浸感&#xff0c;减少产品设计迭代次数&#xff0c;并将与产品原型制作相关的成本降低40-65%。 VR虚拟现实原型制作市场规模 用于原型制作的虚拟现实 (VR) 市场在 2017 年估计为 2.104 亿美元…

ChineseChess.2023.11.09.01

中国象棋残局模拟器ChineseChess.2023.11.09.01

淘宝天猫京东苏宁1688等平台关键词监控价格API接口(店铺商品价格监控API接口调用展示)

淘宝天猫京东苏宁1688等平台关键词监控价格API接口&#xff08;店铺商品价格监控API接口调用展示&#xff09;代码对接如下&#xff1a; item_get-获得淘宝商品详情 公共参数 请求地址: https://o0b.cn/anzexi 名称类型必须描述keyString是调用key&#xff08;必须以GET方式…

Android系统中设置TextView的行间距

Android系统中TextView默认显示中文时会比较紧凑&#xff0c;不是很美观。 为了让每行保持一定的行间距&#xff0c;可以设置属性android:lineSpacingExtra或android:lineSpacingMultiplier。 1、设置行间距&#xff1a;android:lineSpacingExtra&#xff0c;取值范围&#xf…

VsCode的一些配置

tab提示 代码的清晰显示

ZYNQ_project:key_breath

[Synth 8-327] inferring latch for variable led_breath_reg ["C:/Users/warrior/Desktop/ZYNQ/pl/key_breath/rtl/led_breath.v":66] 因为在组合逻辑中&#xff0c;用了非阻塞赋值的方式赋值信号。 组合逻辑自己给自己赋值会产生组合回环&#xff0c;输出不稳定。 …