Zabbix 使用教程

本文详细介绍了Zabbix的架构、关键组件(Server、Agent、Proxy和Web界面)、核心理念(Host、Template、Item、Trigger和Action),以及如何快速添加Agent、配置监控、自定义监控项和报警动作。涵盖了从基础安装到高级配置的完整流程。
摘要由CSDN通过智能技术生成

Zabbix 使用教程

1. Zabbix 架构图以及特点

  • Server服务端

Zabbix Server是Zabbix的核心组件,其功能是将Agent采集到的数据持久化存储到数据库里。

  • 数据库存储(MySQL,Oracle,PostgreSQL等)

存储所有由Agent采集到的数据

  • Web界面

Zabbix提供了UI界面,Web界面的运行环境可以是Nginx+PHP / Apache+PHP服务组成

Web界面也是ZabbixServer 组成的一部分

  • Proxy 代理端

对于分布式环境,它可以代替Zabbix Server收集多个Agent的数据,然后将收集到的数据汇总到

ZabbixServer里,它起到一个分担Server负载的作用

  • Agent客户端

Zabbix Agent被部署在需要被监控的主机上,用于采集监控数据并发送到Zabbix Server端

附上一张图

注明: 本教程暂时不涉及部署分布式的服务,所以我们接下来的agent 是和 server 直接通信的,不经过proxy。

在这里插入图片描述

2. Zabbix 核心知识理念

  • 主机(Host) : 就是具体的监控对象,广义称网络设备,可以是网站、数据库、操作系统。

  • 模板(Template):定义了具体的一类监控对象的抽象集成,就类似写作文一样,套模板写。

  • 监控项(Item): 就是具体的一项采集指标,比如CPU使用率,设备温度等

  • 触发器(Trigger):触发器是基于监控项存在的,通过定义【触发器表达式】创建。

  • 动作(Action): 动作是基于触发器存在的,创建动作的时候选择某个具体的触发器,当满足【触发器表达式】的条件后,

    ​ 就会触发相应的动作,例如当CPU温度大于70度,发邮件告警,发微信告警,或者执行某个Shell脚本等。

3. Zabbix快速添加 agent 以及关联模板和查看数据

3.1 实现自己监控自己,也就是监控server本身

# 上一节我们以及部署好了一台server,就用上一台的来操作 192.168.1.192
# 1.给目标机器安装zabbix-agent
$ rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.11-1.el7.x86_64.rpm

# 同步时间
$ ntpdate -u ntp.aliyun.com

# 2.修改zabbix-agent的配置文件
# https://www.zabbix.com/documentation/4.0/manual/appendix/config/zabbix_agentd # 官网配置文件解释

$ vim /etc/zabbix/zabbix_agentd.conf
# 第一行:得到一个pid数字
# 第二行: 监测agentd的日志文件
# 第三行: 日志是否切割,0 不切割,1 切割
# 第四行: 服务端IP地址
# 第五行: 导入配置文件
------------------------------------------------
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.1.192
Include=/etc/zabbix/zabbix_agentd.d/*.conf
------------------------------------------------

# 3.启动 zabbix-agent 
$ systemctl start zabbix-agent
# 4.查看是否启动 ,agent 的端口号是10050 server的端口号是10051
$ netstat -tunlp

3.2 查看web页面的监控

  • 这就是对server 的监控内容
  • 作一逐一说明
    • 名称: 正在监控的主机设备名称
    • 监控项:采集的指标
    • 触发器:基于监控项的触发器
    • 图形:将采集到的数据以图形展示的数量
    • 接口:agent的IP地址加端口
    • 模板:上述的监控项、触发器、图形,都是因为应用了这两个模板自动创建的
    • 状态:查看此时监控设备的状态
    • 可用性:分四个(绿色代表正常 红色代表异常)
      • ZBX:只要是装的zabbix-agent ,它的协议就是 [ZBX]
      • SNMP:采集如果是网络设备,这里就是SNMP
      • JMX:采集的如果是Java程序,这里就是JMX
      • IPMI:采集的如果是服务器的硬件信息,就是IPMI

在这里插入图片描述
在这里插入图片描述

3.3 练习监控另外一台机器,起名为agent-01

# 因为安装agent都是和上面一样的操作,所以为了方便,我们将它写成脚本放进agent-01
# 1. 脚本如下 起一个文件名叫 install_agent.sh
---------------------------------------------------------------------------------------------------
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.11-1.el7.x86_64.rpm
ntpdate -u ntp.aliyun.com

cat > /etc/zabbix/zabbix_agentd.conf << 'EOF'
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.1.192
Include=/etc/zabbix/zabbix_agentd.d/*.conf
EOF

systemctl start zabbix-agent && systemctl enable zabbix-agent
netstat -tunlp | grep zabbix
---------------------------------------------------------------------------------------------------
# 完了你要记得添加10050的端口号,允许防火墙放行

然后去zabbix-UI界面去添加主机

  • 我们先来创建一个主机群组,比如叫Test群组

在这里插入图片描述

在这里插入图片描述

  • 然后去添加主机

在这里插入图片描述

在这里插入图片描述

4. Zabbix-get 检查

上一步你做完之后,你的ZBX肯定没亮小绿灯,所以 我们用两种方式排除这个问题

来检查Server和Agent是否通信

  • 方式一,看日志
# 在agent-01 上查看日志
$ tail -f /var/log/zabbix/*
  • 方式二 ,安装zabbix-get 查看
# 在server机器上安装zabbix-get
$ yum install -y zabbix-get

进行检查

# 在Server机器上执行命令
$ zabbix_get -s 192.168.1.193 -k agent.ping  # 得到1
# 得到 1 那么Server和Agent是通的

最后一步,给你的主机绑定模板,就可以使用这个key 就可以亮灯

在这里插入图片描述

在这里插入图片描述

好,我们来总结一下上述添加一个主机的所有操作步骤

  • 安装agent于被监控的客户端,检查配置文件,启动agent。
  • 在Server中安装zabbix_get组件,利用zabbix_get主动检测是否和agent通信。
  • 最后 , 去图形化界面添加这台主机。

5. Zabbix添加Web组以及关联模板和图形查看

5.1 如何查看zabbix默认提供的模板

这些模板你可以去用,可以点进去查看都有啥,也可以不选择模板,可以自定义模板
默认的模板支持自定义更改

在这里插入图片描述

  • 查看agent-01主机的CPU load

在这里插入图片描述

  • 查看agent-01系统登陆的用户是几个

在这里插入图片描述

我们还可以利用命令行来实现这一操作

  • 在server里,zabbix_get -s 192.168.1.193 -k system.users.num # 这个key可以在监控项里找到

在这里插入图片描述

6. 自定义监控项以及报警动作

  • 示例:测试一个网站是否存活

模板里没有相应的模板,我们自己创建一个监控项。

具体步骤

  1. 写命令和脚本
  2. 编写zabbix的自定义监控的配置文件
  3. 重启zabbix-agent
  4. 测试zabbix-_get能否拿到数据
  5. 去zabbix-ui添加监控项
  • 采集TCP状态
# 1.知道web服务器的状态,就要去采集TCP的状态
$ netstat -ant | grep -c 'TCP状态'  # 具体有 listen(监听)  ESTABLISHED(建立了链接) TIME_WAIT(等待)等等
# 2.图解zabbix_agent自定义key的配置文件
#如图,在agent机器里进入到 /etc/zabbix/zabbix-agentd.d目录下,有一个 userparameter_mysql.conf文件

在这里插入图片描述

# 3. 写入我们自定义的key的值 ,配置文件起名为 tcp_status.conf
cat > /etc/zabbix/zabbix_agentd.d/tcp_status.conf << 'EOF'
UserParameter=LISTEN,netstat -ant | grep -c LISTEN
UserParameter=TIME_WAIT,netstat -ant | grep -c TIME_WAIT
UserParameter=ESTABLISHED,netstat -ant | grep -c ESTABLISHED
EOF

# 改了配置文件,务必要重启
$ systemctl restart zabbix-agent.service

# 4.本地验证(在Sever里来写命令行验证)
$ zabbix_get -s 192.168.1.193 -k LISTEN    # 出现了结果 我这边是 11 个

# 这里小小的扩展一下,如果让你监控11个tcp状态,那么岂不是要写11行,太挫了,zabbix提供传参的方式
----------------------------------------------------
cat > /etc/zabbix/zabbix_agentd.d/tcp_status.conf << 'EOF'
UserParameter=tcp_status[*],netstat -ant | grep -c $1
EOF
----------------------------------------------------
# 这里的tcp_status是我们自定义的key哦 $1是第一个参数哦,就是第几个*
# 那该怎么用呢?
# 这样用! 
$ zabbix_get -s 192.168.1.193 -k tcp_status[LISTEN/TIME_WAIT...]




# 5.去zabbix-ui里配置监控项
# 我这里给agent-01添加监控项(3种)

# 点击agent-01那一行的【监控项】-->右上角的【创建监控项】
# 然后如下图

在这里插入图片描述

然后依次创建其他两个,我们可以采用简便方式【克隆】

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

我三个都加了

在这里插入图片描述

上面不是添加完监控项了嘛,然后我们来添加一下这三个的图形,只示例一个

点击【主机】—>点击agent-01的【图形】—>右上角【添加图形】

然后选择监控项三个即可。

在这里插入图片描述

紧接着我们来给这三个创建触发器

跟上面一样,找到并点击【创建触发器】

我们做那个tcp状态的触发器呢,我们就以time_wait为例吧,我们假使当它的数量大于等于500个的时候,就触发我们这个触发器。

????如何让它数量大于500,我们可以手动模拟给agent-01发http链接

如: ab -c 10 -n 1000 http://192.168.1.193/ 这个意思自己查吧,好吧…

但是,这个是给web服务器要发的,我们还要下载一个web服务器来作为测试工具,就拿nginx举例吧,在agent-01里下载nginx

nginx的默认端口就是80,nginx就是一个web服务器,我们呢就是给web服务器发连接请求的,所以要下载一个web服务器。

$ rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ yum install -y nginx
#输入如下命令,没有报错,则启动成功
$ nginx
# 记得放行80端口,也就是http服务

在这里插入图片描述

点击添加

在这里插入图片描述

在这里插入图片描述

一下子就报警了,当我们执行完ab -c 10 -n 1000 http://192.168.1.193/ 后

7.定义报警媒介

报警的触发器已经弄好了,但是人不打开这个网站就不会看到这个报警信息,所以我们希望,给我们发邮件、

或者短信、或者微信,来提示我们这个告警信息

称之为:报警媒介

7.1 邮件报警的配置
设定一个报警的条件
- 监测tcp 的状态,
- 监测当前机器的登陆用户数量,当用户的数量超过3个就发邮件告警(演示这个)
7.1.1 配置监控用户的自定义key
# 1.判断当前机器用户的数量
$ who | wc -l

#【拓展】 送你一个知识点,如何判断某个网页是否可访问,也就是判断 是否相应结果是 200
$ curl -s -I https://www.yucongming.com/ | awk '/^HTTP/{print $2}' # 得到的值为200

# -s参数:静默参数,不会显示进度表或者错误信息
# -I参数:只获得请求的头部信息


# 2.新增配置文件,加入key值
$ cd /etc/zabbix/zabbix_agentd.d/
$ vim userparameter_login_user.conf # 写入下面这一行
-------------------------------------
UserParameter=login.user,who | wc -l
-------------------------------------

# 3.重启agent
$ systemctl restart zabbix-agent.service

# 4.创建模板,添加监控项

在这里插入图片描述

添加监控项

在这里插入图片描述

# 5.给agent-01主机添加创建的模板,然后在最新数据里查看一下是否取到了

在这里插入图片描述

# 6. 给模板添加触发器

在这里插入图片描述

测试触发器的结果正确即可
在这里插入图片描述

【拓展】更正Linux新机器的时间

$ crontab -e
-------------------------------------
* * * * * ntpdate -u ntp1.aliyun.com
-------------------------------------
$ ntpdate -u ntp1.aliyun.com

报警媒介邮件

# 1.对zabbix-server设置发邮件的账户
# 2.要给谁发,发什么格式的。

这个是配置发件人的信息

我们这里使用qq邮箱来作为zabbix的发件人
去自己的qq邮箱里开启pop3服务(重新开启生成授权码),记下授权码,待会填入zabbix

在这里插入图片描述

这个是配置收件人的信息

然后点击添加,填入收件人的地址即可
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

可以发现,报警信息并不合理,并不完善,不清楚

我们可以自定义报警信息(粘贴进去)

这些自定义的信息,是zabbix的宏语法,可以去查看官方文档

https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location

# 这个是告警信息

默认标题: 
	故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!

消息内容:
	告警主机:{HOSTNAME1} {HOST.IP}
	告警时间:{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} {HOST.IP}
	告警时间:{EVENT.DATE}{EVENT.TIME}
	告警等级:{TRIGGER.SEVERITY}
	告警信息:{TRIGGER.NAME}
	告警项目:{TRIGGER.KEY1}
	问题详情:{ITEM.NAME}:{ITEM.VALUE}
	当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
	事件ID:{EVENT.ID}

在这里插入图片描述
在这里插入图片描述

  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值