当前位置:   article > 正文

通过Zabbix配置钉钉机器人自动报警(从安装到配置)_zabbix创建钉钉报警

zabbix创建钉钉报警

安装zabbix 6.0

安装说明:Download and install Zabbix

中文手册:Zabbix 文档

环境准备:

主机名地址
zabbixserver192.168.88.5/24
web1192.168.88.100/24

关闭防火墙,将 SELinux 设置为宽容模式(Permissive)

先将Zabbix rpm包更新到yum仓库,安装包清单如下:

  • zabbix-nginx-conf-6.0.11-release1.el8.noarch.rpm      
  • zabbix-web-6.0.11-release1.el8.noarch.rpm
  • fping-3.16-1.el8.x86_64.rpm                  
  • zabbix-selinux-policy-6.0.11-release1.el8.x86_64.rpm
  • zabbix-web-deps-6.0.11-release1.el8.noarch.rpm
  • zabbix-agent-6.0.11-release1.el8.x86_64.rpm  
  • zabbix-server-mysql-6.0.11-release1.el8.x86_64.rpm    
  • zabbix-web-mysql-6.0.11-release1.el8.noarch.rpm
  • zabbix-get-6.0.12-release1.el8.x86_64.rpm    
  • zabbix-sql-scripts-6.0.11-release1.el8.noarch.rpm

1.在Zabbixserver上安装相应软件包

dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent mysql-server langpacks-zh_CN

2. 启动mysqld服务

[root@pubserver zabbix]# systemctl enable mysqld --now

3.配置数据库

  1. # 在zabbix上创建连接数据库的用户
  2. [root@zabbixserver ~]# mysql
  3. mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
  4. # 在binlog日志开启的情况下,打开函数生成器
  5. mysql> set global log_bin_trust_function_creators = 1;
  6. mysql> create user zabbix@localhost identified by 'zabbix';
  7. mysql> grant all privileges on zabbix.* to zabbix@localhost;
  8. mysql> quit;
  9. # 验证数据库配置,如果登陆不到数据库表示上一步配置不正确
  10. [root@zabbixserver ~]# mysql -uzabbix -pzabbix -hlocalhost zabbix
  11. # 在数据库中创建表并导入数据
  12. [root@zabbixserver ~]# cp /usr/share/zabbix-sql-scripts/mysql/server.sql.gz .
  13. [root@zabbixserver ~]# gzip -d server.sql.gz
  14. [root@zabbixserver ~]# mysql -uzabbix -pzabbix zabbix < server.sql

4.配置zabbix_server

  1. [root@zabbixserver ~]# vim +129 /etc/zabbix/zabbix_server.conf
  2. DBPassword=zabbix

5.配置Zabbix_agent

  1. [root@zabbixserver ~]# vim +182 /etc/zabbix/zabbix_agentd.conf
  2. Hostname=zabbixserver

6.配置Nginx展示Zabbix

  1. [root@zabbixserver ~]# vim /etc/nginx/conf.d/zabbix.conf
  2. # 打开第23行的注释,结果如下所示:
  3. server {
  4. listen 8080;
  5. server_name example.com;
  6. ...以下省略...

7.启动相关服务

  1. [root@pubserver zabbix]#systemctl enable zabbix-server --now
  2. [root@pubserver zabbix]#systemctl enable zabbix-agent --now
  3. [root@pubserver zabbix]#systemctl enable nginx --now
  4. [root@pubserver zabbix]#systemctl enable php-fpm --now

访问zabbixserver的8080端口,进行初始化:

注意:这里的用户名Admin,A是大写的!密码是小写的zabbix

  • 此时zabbix已经开始在监控自己了,查看默认监控配置

配置zabbix监控web1服务器

1.在web1上安装agent

安装配置启动agent

  1. [root@web1 ~]# dnf -y install zabbix-agent
  2. 修改web1配置文件
  3. [root@web1 ~]# vim /etc/zabbix/zabbix_agentd.conf
  4. 117 Server=127.0.0.1,192.168.88.5
  5. 182 Hostname=web1
  6. 启动服务
  7. [root@web1 ~]# systemctl enable zabbix-agent --now

在web页面中添加对web1的监控

  • 主机:安装了agent,被监控的主机
  • 主机组:根据需求,将多台主机加入到一个主机组中,方便管理。系统默认已经创建了一些主机组。
  • 模板:是监控项的集合。将模板应用到主机,主机就可以直接拥有模板中的所有监控项。系统中默认已经创建了一些模板。

常用监控指标
  • Space utilization:以百分比显示的磁盘利用率
  • Used space:已用磁盘空间
  • Available memory:可用内存
  • CPU idle time:CPU空闲时间。不宜过低。
  • Load average (1m avg)、Load average (5m avg)、Load average (15m avg):CPU1分钟、5分钟、15分钟的平均负载。这个值不应长期大于核心数。
  • Interface eth0: Bits received:网卡接收到的数据量
  • Interface eth0: Bits sent:网卡发送的数据量
  • Number of processes:系统运行的进程数
  • Number of logged in users:已登陆的用户数

自定义监控项

实现监控web1用户数量的监控项

  1. 在被控端创建key。被控端被监控的内容叫作key,可以理解为它就是一个变量名,具体的名字自己决定。
  2. 在web页面中创建监控项。监控项对应key值。

在被控端创建key
  • 创建key的语法

UserParameter=自定义key值,命令

# 命令的执行结果,是key的value

  • 创建自定义配置文件。文件名自定义。
  1. root@web1 ~]# vim /etc/zabbix/zabbix_agentd.d/usercnt.conf
  2. UserParameter=usercnt,sed -n '$=' /etc/passwd
  3. [root@web1 ~]# systemctl restart zabbix-agent.service
  • 验证自定义监控项
  1. # 1. 安装zabbix-get
  2. [root@zabbixserver ~]# yum install -y zabbix-get
  3. [root@web1 ~]# yum install -y zabbix-get
  4. # 2. 获取监控项的值
  5. [root@web1 ~]# zabbix_get -s 127.0.0.1 -k usercnt
  6. 46
  7. [root@zabbixserver ~]# zabbix_get -s 192.168.88.100 -k usercnt
  8. 46
创建模板
  • 创建模板

  • 创建监控项

应用模板到主机

查看结果

配置告警钉钉机器人提示消息

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

用户数超过50,钉钉机器人提示

  • 当web1的用户数超过50时,认为这是一个问题(Problem)
  • 当出现问题时,将会执行动作。
  • 执行的动作是钉钉机器人提示。
  • 通过钉钉机器人提示消息需要添加新的报警媒介
实施
  • 创建触发器规则

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

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

创建钉钉机器人

  • 创建机器人

  • 下面以钉钉手机版为例,配置钉钉群聊机器人
  • 进入组织群设置 点击机器人
  • 点击添加机器人
  • 点击刚才在开发者后台添加的应用

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

(这是之前测试的用户数量超过35的截图)

附监控原理图

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

闽ICP备14008679号