⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 民工哥技术之路 blog.csdn.net/weixin_47019016/article/details/111040042 www.zabbix.com/documentation/6.0/zh/manual/installation/upgrade/packages/rhel 「民工哥技术之路」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

前面介绍了 常见运维工具、数据库监控、Zabbix 等开源监控系统对比分析、Zabbix入门与安装等相关的知识点,今天我将详细的为大家介绍 Zabbix 基础配置相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发朋友圈支持一波!!!

Zabbix特点

Zabbix是一个高度集成的网络监控解决方案,具备如表所示的特点。

数据采集

可用性和性能检查支持SNMP(trapping或polling),IPMI,JMX,VMware的监控,自定义检测,按照自定义时间间隔收集所需数据,通过server/proxy和agent来执行监控。

灵活的阈值定义

可以定义非常灵活的问题阈值,称为触发器(triggers),从后端数据库调用数值。

高度可配置的告警

可以自定义警告升级(escalation),接受者及告警方式,告警信息可以配置并允许使用宏(macro)变量,通过远程命令实行自动化动作(action)。

实时绘图

通过内置的绘图方法实现监控数据实时绘图。

Web监控能力

Zabbix可以模拟鼠标单击网站并检查其功能性和响应时间。

广泛的可视化选项

能够创建自定义图表,可以组合多个项到一个单一的视图中网络拓扑,自定义屏幕和侧边栏作为仪表盘(dashboard)样式显示报告,监视资源的高级视图(商业)。

历史数据存储

用数据库来存储数据配置历史,内置的管理程序。

容易配置

添加监控设备作为主机,一旦在数据库中,主机即可被监控,将模版应用到监控监控设备。

使用模版

模版中的可以组监控,模版中可以继承其他模版。

网络发现

网络设备的自动发现,代理(agent)自动注册,自动发现文件系统,网络接口,SNMP OID。

快速的web接口

Web前端采用php编写,按照自定义的方式单击审计日志。

Zabbix API

Zabbix API 提供可编程接口面向Zabbix大规模操作,方便第三方软件集成,安全的用户认证。

权限系统

某些用户可以受限于某些试图。

功能齐全且易于扩展的代理(agent)

部署在监控目标上,Linux和windows上都可以部署,用C语言写的,高性能且内存占用小。

二进制守护进程

易移植,通过使用zabbix proxy可以轻松进行远程监控。

Zabbix 基础配置

页面中文乱码这块在安装部署的时候,已经解决了,不再赘述了。

监控一台主机

这里以监控Win10主机为例来描述具体步骤。关闭防火墙、IP地址为192.168.59.128。

首先在C盘根目录下创建zabbix的文件夹,将需要的文件拖到该文件夹内(bin/win64和conf下的所有文件)。

修改windows配置文件(zabbix.agent.win.conf)的三处如下

Server=192.168.59.137
ServerActive=192.168.59.137
Hostname=win10

Windows中启动zabbix(注意:以下操作请严格安装文档操作否则将会报错)

安装代理、启动服务

cd /zabbix
zabbix_agentd.exe -c zabbix_agentd.win.conf -i 安装
zabbix_agentd.exe -c zabbix_agentd.win.conf -s 启动
netstat -an|find "10050" 查看代理端口

Web图形操作:配置—>主机—>创建主机

配置—>主机—>win10—>名称、新群组、ip—>添加

配置—>主机—>模板–>指示器选择—>添加—>更新

等待一段时间后刷新(1-2分钟),ZBX变绿后操作。

监测—>图形—>群组—>服务器—>查看内容,显示如下:

分离zabbix数据库

开启一台centos7虚拟机,安装mariadb-server,创建zabbix数据库和用户。

[root@localhost ~]# hostname mariadb
[root@localhost ~]# bash
[root@mariadb ~]# systemctl stop firewalld
[root@mariadb ~]# setenforce 0
[root@mariadb ~]# yum -y install mariadb-server
[root@mariadb ~]# systemctl start mariadb
[root@mariadb ~]# systemctl enable mariadb
[root@mariadb ~]# mysql_secure_installation
[root@mariadb ~]# mysql -uroot -pasd123
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@'192.168.229.%' identified by 'asd123';

在zabbix服务器上备份导出zabbix数据库

[root@zabbix-server ~]# mysqldump -uroot -pasd123 --databases zabbix > `date +%F-%H`_zabbix.sql

在zabbix服务器上把备份的数据库文件导入到分布式数据库上

[root@zabbix-server ~]# cat 2020-07-04-08_zabbix.sql | mysql -h 192.168.229.160 -uzabbix -pasd123 zabbix

修改zabbix-server上的数据库连接信息

[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
定位修改
DBHost=192.168.229.160
DBName=zabbix
DBUser=zabbix
DBPassword=asd123
[root@zabbix-server ~]# vim /etc/zabbix/web/zabbix.conf.php
定位修改
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '192.168.229.160';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'asd123';

重启zabbix和httpd服务

[root@zabbix-server ~]# systemctl restart zabbix-server httpd

自定义监控–磁盘吞吐量

检查磁盘的tps

[root@zabbix-agent ~]# yum -y install sysstat
[root@zabbix-agent ~]# iostat | awk '/^sda/{print $2}'
0.64

在agent客户端的配置文件目录下新增监控配置文件(键值对命名法)

[root@zabbix-agent ~]# vim /etc/zabbix/zabbix_agentd.d/iostat.conf
添加:
UserParameter=iostat,iostat | awk '/^sda/{print $2}'
[root@zabbix-agent ~]# systemctl restart zabbix-agent

客户端查看监控项

[root@zabbix-agent ~]# zabbix_agentd -p | grep iostat
iostat [t|0.66]

在服务端安装zabbix-get,查看客户端新增监控项

[root@zabbix-server ~]# yum -y install zabbix-get
[root@zabbix-server ~]# zabbix_get -s 192.168.229.209 -p10050 -k iostat
0.66

在zabbix web界面进行监控项关联

配置–主机–找到对应主机–监控项–创建监控项–命名–键值(iostat)–信息类型(浮点数)–应用集名监测–最新数据

zabbix报警音报警

前端声音报警

右上角小人(用户)--正在发送信息--勾选

添加触发器:配置–主机–找到对应主机–触发器–创建触发器–命名–严重性–添加表达式–选择监控项–间隔–结果–添加

zabbix邮件报警

  • (1)配置–动作–启用report–应用

  • (2)右上角小人(用户)–报警媒介–添加–收件人邮箱地址(推荐使用qq邮箱)

  • (3)管理–报警媒介类型–email–添加SMTP服务器:smtp.qq.com–端口:465–HELO:qq.com–SMTP电邮:xxxxx@qq.com--SSL/TLS–勾选–用户名称:xxxxxx@qq.com–密码:授权码(打开邮箱–设置–开启smtp服务–获取授权码–保存配置)

  • (4)微信关联qq邮箱,实现微信报警

    • 首先点击进入微信“设置”选项。
  • 然后点击进入“账号与安全”设置选项。
  • 再点击进入“更多安全设置”选项。
  • 接着点击“邮箱地址”设置选项。
  • 最后输入需要绑定的邮箱地址,点击确定即可完成绑定

zabbix官方使用说明文档:https://www.zabbix.com/documentation/4.0/zh/manual/

邮件脚本报警

使用原因:企业使用centos6,zabbix2.*,zabbix没有email报警媒介模块。

关闭zabbix-server上的邮件服务,安装mailx。
[root@zabbix-server ~]# systemctl stop postfix
[root@zabbix-server ~]# systemctl disable postfix
[root@zabbix-server ~]# yum -y install mailx
编辑mailx的配置,指定收件邮箱和用户密码。
[root@zabbix-server ~]# vim /etc/mail.rc
末尾添加:
set from=1599840577@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=1599840577@qq.com
set smtp-auth-password=yuemqwmhdizdbjeg
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
[root@zabbix-server ~]# echo 123 | mail -s test 1599840577@qq.com #测试邮件
zabbix-server编写邮件报警脚本
[root@zabbix-server ~]# yum -y install dos2unix
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]# vim email_notice.sh
添加:
#!/bin/bash
# export UTF-8
FILE=/tmp/mail.txt
echo "$3" > $FILE
dos2unix -k $FILE
/bin/mail -s "$2" $1 < $FILE
[root@zabbix-server alertscripts]# chmod +x email_notice.sh
zabbix web控制台关联邮件报警脚本

管理–报警媒介类型–关闭已有的email报警–右上角“创建媒体类型”“名称,类型(脚本),脚本名称(必须写对),参数添加3个:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}”,添加:右上角–小人(用户)–报警媒介–“类型(邮件脚本,收件人:真实邮箱地址)”,添加–更新。

微信报警

申请企业微信

我的企业–复制企业ID:ww15f160c1bf39f6b1,应用管理–创建应用–名称:报警机器人–选择部门–创建应用–点开报警机器人,复制:AgentId 1000002,Secret ptoSa9IMqSOinnOJ2Bq6-4i_EBKJbZ8tcG6R6TlhknU

编写python微信报警脚本,并修改企业id和用户密码

复制weixin.py到zabbix-server的/usr/lib/zabbix/alertscripts/下

[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]# vim weixin.py
修改:
corpid='ww15f160c1bf39f6b1' #企业ID
appsecret='ptoSa9IMqSOinnOJ2Bq6-4i_EBKJbZ8tcG6R6TlhknU' #报警机器人密码
agentid=1000002 #报警机器人ID

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import requests
import sys
import os
import json
import logging

logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/tmp','weixin.log'),
filemode = 'a')

corpid='微信企业号corpid'
appsecret='应用的Secret'
agentid=应用的id
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']

#发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken

touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]

params={
"touser": touser,
# "toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}

req=requests.post(msgsend_url, data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
[root@zabbix-server alertscripts]# chmod 777 weixin.py
[root@zabbix-server alertscripts]# dos2unix -k weixin.py #格式转换
[root@zabbix-server alertscripts]# touch /tmp/weixin.log
[root@zabbix-server alertscripts]# chown zabbix:zabbix /tmp/weixin.log #赋权weixin.log
[root@zabbix-server alertscripts]# ./weixin.py ZhangJie(企业微信账号) test 123456 #测试发送微信
zabbix web关联

管理–报警媒介类型–右上角“创建媒体类型”“名称(微信报警),类型(脚本),脚本名称(必须写对),参数添加3个:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}”,更新:右上角–小人(用户)–报警媒介–“类型(微信报警,收件人:微信账号)”–添加–更新

修改邮件通知内容

配置–动作–Report problems to Zabbix administrators

操作:修改默认标题,修改消息内容

主题:Problem: {EVENT.NAME}故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

内容:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

恢复操作:修改默认标题,修改消息内容
恢复主题:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

恢复信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

2.修改后,更新

创建图形

配置–主机–web1–图形–右上角“创建图形”–填写“名称”–添加“监控项” 点击最后一行“添加”。

查看图形:监测–图形–选择“群组”–选择”主机”–选择“图形名称”。

创建聚合图形

监测–聚合图形–创建聚合图形–填写聚合图形“名称”–添加–选择新建聚合图 –编辑聚合图形

版本升级

上一篇讲解的是从头安装,但在现实的情况中,多数都是版本升级的居多。

升级前你需要判断一下你的系统,基础组件,例如 PHP-FPM 版本,数据库版本,是否支持最新版本的 ZABBIX。

从 5.0LTS 到 6.0,只要保证 PHP-FPM 版本>7.2 即可。

备份

停掉现有的 Zabbix-Server,并备份数据库,备份相关配置文件。

service zabbix-server stop
mysqldump zabbix > zabbix_20220220.sql
mkdir /opt/zabbix-backup-20220220/
cp -R /usr/share/zabbix/ /opt/zabbix-backup-20220220/
cp -R /usr/share/doc/zabbix-* /opt/zabbix-backup-20220220/
升级软件包

删掉老的 Zabbix 源,下载 Zabbix-Release 包,需要格外注意的是,请下载与你系统相匹配的软件包,可以访问 ZABBIX 下载 页面,使用页面提供的选择器,进行选择。

注意,执行 apt-get install –only-upgrade 时,因为我用的 Nginx 作为 WebServer,所以升级了 zabbix-nginx-conf,如果你是 Apache,请替换成 zabbix-apache-conf。

rm -Rf /etc/apt/sources.list.d/zabbix.list
wget https://repo.zabbix.com/zabbix/6.0/raspbian/pool/main/z/zabbix-release/zabbix-release_6.0-2+debian11_all.deb
dpkg -i zabbix-release_6.0-2+debian11_all.deb
apt update
apt-get install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent zabbix-nginx-conf

升级完毕,启动相关服务。

systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm

重新访问,Zabbix Web,能看到新版 Web 界面,采集状态正常。如果 Web 提示数据库版本不一致,等一会,ZABBIX 正在处理数据库的升级和迁移操作,一会就好了。

文章目录
  1. 1. Zabbix特点
    1. 1.0.0.0.1. 数据采集
    2. 1.0.0.0.2. 灵活的阈值定义
    3. 1.0.0.0.3. 高度可配置的告警
    4. 1.0.0.0.4. 实时绘图
    5. 1.0.0.0.5. Web监控能力
    6. 1.0.0.0.6. 广泛的可视化选项
    7. 1.0.0.0.7. 历史数据存储
    8. 1.0.0.0.8. 容易配置
    9. 1.0.0.0.9. 使用模版
    10. 1.0.0.0.10. 网络发现
    11. 1.0.0.0.11. 快速的web接口
    12. 1.0.0.0.12. Zabbix API
    13. 1.0.0.0.13. 权限系统
    14. 1.0.0.0.14. 功能齐全且易于扩展的代理(agent)
    15. 1.0.0.0.15. 二进制守护进程
  • 2. Zabbix 基础配置
    1. 2.0.1. 监控一台主机
    2. 2.0.2. 分离zabbix数据库
    3. 2.0.3. 自定义监控–磁盘吞吐量
    4. 2.0.4. zabbix报警音报警
    5. 2.0.5. zabbix邮件报警
    6. 2.0.6. 邮件脚本报警
      1. 2.0.6.0.1. 关闭zabbix-server上的邮件服务,安装mailx。
      2. 2.0.6.0.2. 编辑mailx的配置,指定收件邮箱和用户密码。
      3. 2.0.6.0.3. zabbix-server编写邮件报警脚本
      4. 2.0.6.0.4. zabbix web控制台关联邮件报警脚本
  • 2.0.7. 微信报警
    1. 2.0.7.0.1. 申请企业微信
    2. 2.0.7.0.2. 编写python微信报警脚本,并修改企业id和用户密码
    3. 2.0.7.0.3. zabbix web关联
    4. 2.0.7.0.4. 修改邮件通知内容
  • 2.0.8. 创建图形
  • 2.0.9. 创建聚合图形
  • 2.0.10. 版本升级
    1. 2.0.10.0.1. 备份
    2. 2.0.10.0.2. 升级软件包