当前位置:   article > 正文

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

zabbix 钉钉机器人

目录

配置告警

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

实施

验证告警配置

配置钉钉机器人告警

创建钉钉机器人

编写脚本并测试

添加报警媒介类型

 为用户添加报警媒介

创建触发器

创建动作

验证

自动发现

配置自动发现

主动监控

配置web2使用主动监控

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

创建用于主动监控的主机

拓扑图

完善拓扑图

监控Nginx

stub_status模块


配置告警

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

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

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

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

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

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

  • 为用户关联邮箱

 

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

 

 

 

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

 

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

  • 在zabbixserver上查看邮件
  1. [root@zabbixserver ~]# mail # 查看邮件
  2. Heirloom Mail version 12.5 7/5/10. Type ? for help.
  3. "/var/spool/mail/root": 2 messages 2 new
  4. >N 1 zzg@tedu.cn Sat Dec 31 16:47 21/932 "Problem: usercnt_gt_50"
  5. N 2 zzg@tedu.cn Sat Dec 31 16:48 21/932 "Problem: usercnt_gt_50"
  6. & 1 # 查看1号邮件
  7. Message 1:
  8. From zzg@tedu.cn Sat Dec 31 16:47:59 2022
  9. Return-Path: <zzg@tedu.cn>
  10. X-Original-To: root@localhost.localdomain
  11. Delivered-To: root@localhost.localdomain
  12. From: <zzg@tedu.cn>
  13. To: <root@localhost.localdomain>
  14. Date: Sat, 31 Dec 2022 16:47:59 +0800
  15. Subject: Problem: usercnt_gt_50
  16. Content-Type: text/plain; charset="UTF-8"
  17. Status: R
  18. Problem started at 16:47:56 on 2022.12.31
  19. Problem name: usercnt_gt_50
  20. Host: web1
  21. Severity: Warning
  22. Operational data: 51
  23. Original problem ID: 102
  24. & q # 输入q退出

配置钉钉机器人告警

创建钉钉机器人

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

编写脚本并测试
  1. # 安装钉钉机器人脚本需要用到的模块
  2. [root@zabbixserver ~]# yum install -y python3-requests
  3. # 编写钉钉机器人脚本
  4. [root@zabbixserver ~]# vim /usr/lib/zabbix/alertscripts/dingalert.py
  5. #!/usr/bin/env python3
  6. import json
  7. import requests
  8. import sys
  9. def send_msg(url, remiders, msg):
  10. headers = {'Content-Type': 'application/json; charset=utf-8'}
  11. data = {
  12. "msgtype": "text",
  13. "at": {
  14. "atMobiles": remiders,
  15. "isAtAll": False,
  16. },
  17. "text": {
  18. "content": msg,
  19. }
  20. }
  21. r = requests.post(url, data=json.dumps(data), headers=headers)
  22. return r.text
  23. if __name__ == '__main__':
  24. msg = sys.argv[1]
  25. remiders = []
  26. url = '钉钉机器人Webhook地址' # 注意此处需输入机器人的webhook地址
  27. print(send_msg(url, remiders, msg))
  28. [root@zabbixserver ~]# chmod +x /usr/lib/zabbix/alertscripts/dingalert.py
  29. [root@zabbixserver ~]# /usr/lib/zabbix/alertscripts/dingalert.py 'warn: 测试消息' # 注意消息中要包含关键字warn
  30. {"errcode":0,"errmsg":"ok"}

添加报警媒介类型

 

 为用户添加报警媒介

 

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

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

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

自动发现

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

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

  • 自动发现流程:

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

配置自动发现

  • 创建自动发现规则

 

 

创建发现动作

 

 

  • 添加结果如下:

  • 验证

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

主动监控

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

配置web2使用主动监控

修改配置文件,只使用主动监控
  1. [root@web2 ~]# vim /etc/zabbix/zabbix_agentd.conf
  2. 117 # Server=127.0.0.1,192.168.88.5
  3. 142 StartAgents=0
  4. 171 ServerActive=192.168.88.5
  5. 242 RefreshActiveChecks=120
  6. # 重启服务
  7. [root@web2 ~]# systemctl restart zabbix-agent.service
  8. [root@web2 ~]# ss -tlnp | grep :10050 # 端口号消失
创建用于主动监控的主机

拓扑图

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

  • 添加元素:

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

完善拓扑图

  • 添加交换机图标

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

  • 添加web服务器

  • 添加链接

监控Nginx

stub_status模块

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/898474
推荐阅读
相关标签
  

闽ICP备14008679号