Zabbix监控系统的使用(一)

那年仲夏 提交于 2019-12-16 01:51:06

配置及使用Zabbix监控系统

使用1台RHEL7虚拟机,安装部署LNMP环境、Zabbix及相关的依赖包,配置数据库并对Zabbix监控平台进行初始化操作。使用2台被监控端,源码安装Zabbix Agent。完成Zabbix实验需要我们搭建一个实验环境,拓扑结构如表所示。通过Zabbix监控平台,添加被监控zabbixclient_web1主机(192.168.2.100)并链接监控模板即可,Zabbix默认模板就可以监控CPU、内存、进程、网络、磁盘等项目。
在这里插入图片描述

步骤一:添加监控主机
主机是Zabbix监控的基础,Zabbix所有监控都是基于Host主机。
使用火狐浏览器登录http://192.168.2.5,通过Configuration(配置)–>Hosts(主机)–>Create Host(创建主机)添加被监控Linux主机,如图所示。
在这里插入图片描述

添加被监控主机时,需要根据提示输入被监控Linux主机的主机名称(最好与电脑的主机名一致,但也允许不一致)、主机组、IP地址等参数,具体参考如图所示。
在这里插入图片描述
步骤二:为被监控主机添加监控模板

Zabbix通过监控模板来对监控对象实施具体的监控功能,根据模板来定义需要监控哪些数据,对于Linux服务器的监控,Zabbix已经内置了相关的模板(Template OS Linux),选择模板并链接到主机即可,如图所示。
在这里插入图片描述

步骤三:查看监控数据
查看监控数据,登录Zabbix Web控制台,点击Monitoring(监控中)—> Latest data(最新数据),正过滤器中填写过滤条件,根据监控组和监控主机选择需要查看哪些监控数据,如图所示。
在这里插入图片描述
找到需要监控的数据后,可以点击后面的Graph查看监控图形,如图所示。
在这里插入图片描述

自定义Zabbix监控项目

步骤一:被监控主机创建自定义key(在192.168.2.100操作)
1)创建自定义key
自定义key语法格式为:UserParameter=自定义key名称,命令。
自定义的key文件一般存储在/usr/local/etc/zabbix_agentd.conf.d/目录,这里还需要修改zabbix_agentd.conf文件,允许自定义监控key,来读取该目录下的所有文件 。

[root@zabbixclient_web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
Include=/usr/local/etc/zabbix_agentd.conf.d/                //加载配置文件目录
[root@zabbixclient_web1 ~]# cd /usr/local/etc/zabbix_agentd.conf.d/
[root@zabbixclient_web1 zabbix_agentd.conf.d]# vim count.line.passwd
UserParameter=count.line.passwd,wc -l /etc/passwd | awk ' {print $1} '
////自定义key语法格式:
//UserParameter=自定义key名称,命令

2)测试自定义key是否正常工作

[root@zabbixclient_web1 ~]# killall  zabbix_agentd
[root@zabbixclient_web1 ~]# zabbix_agentd                                //重启agent服务
[root@zabbixclient_web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd
21

注意:如zabbix_get命令执行错误,提示Check access restrictions in Zabbix agent configuration,则需要检查agent配置文件是否正确:

[root@zabbixclient_web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.2.5
ServerActive=127.0.0.1,192.168.2.5

步骤二:创建监控模板
模板、应用集与监控项目的关系图,参考图所示

在这里插入图片描述
1)添加监控模板
登录Zabbix Web监控控制台,通过Configuration(配置)–>Template(模板)–>Create template(创建模板),填写模板名称,新建模板群组,如图所示。
在这里插入图片描述
创建模板后,默认模板中没有任何应用、项目、触发器、图形等,如图-所示。
在这里插入图片描述
2)创建应用

创建完成模板后,默认模板中没有任何应用、项目、触发器、图形等资源。这里需要点击模板后面的Application(应用集)链接打开创建应用的页面,如图-所示。
在这里插入图片描述
点击Application(应用集)后,会刷新出图所示页面,在该页面中点击Create application(创建应用集)按钮。
在这里插入图片描述
设置应用名称如图所示。

在这里插入图片描述
3)创建监控项目item(监控项)
与创建应用一样,在模板中还需要创建监控项目,如图所示.
在这里插入图片描述
并在刷新出的新页面中选择Create items(创建监控项)创建项目,如图所示。
在这里插入图片描述

接下来,还需要给项目设置名称及对应的自定义key,如图所示。
在这里插入图片描述
4)创建图形
为了后期可以通过图形的方式展示监控数据,还需要在模板中创建图形,设置方法与前面的步骤一致,在监控模板后面点击Graph(图形)即可创建图形,设置监控图形基于什么监控数据,如图所示。
在这里插入图片描述
5)将模板链接到被监控主机
将完整的监控模板制作完成后,就可以将模板链接到主机实现监控功能了。首先找到被监控主机Configuration(配置)–>Hosts(主机),如图所示。
在这里插入图片描述
点击需要的被监控主机链接,打开监控主机设置页面,在Template(模板)页面中选择需要链接到该主机的模板,在此选择刚刚创建的模板count_line.passwd添加即可,如图所示。
在这里插入图片描述

6)查看监控数据图形
点击Monitoring(监控中)–>Craphs(图形),根据需要选择条件,查看监控图形,如图所示。
在这里插入图片描述
在这里插入图片描述

自定义监控案例

步骤一:监控Nginx服务状态
1)准备环境,部署nginx软件
安装nginx软件,开启status模块

[root@zabbixclient_web1 nginx-1.12.2]# ./configure \
> --with-http_stub_status_module 
[root@zabbixclient_web1 nginx-1.12.2]# make && make install
[root@zabbixclient_web1 ~]# cat /usr/local/nginx/conf/nginx.conf
… …
location /status {
                stub_status on;
        }
… …
[root@zabbixclient_web1 ~]# curl  http://192.168.2.100/status
Active connections: 1 
server accepts handled requests
10 10 3 
Reading: 0 Writing: 1 Waiting: 0

2)自定义监控key
语法格式:
UserParameter=key,command
UserParameter=key[*],
key里的所有参数,都会传递给后面命令的位置变量

如:
UserParameter=ping[*],echo $1
ping[0], 返回的结果都是0
ping[aaa], 返回的结果都是aaa

注意:被监控端修改配置文件,注意要允许自定义key并设置Include!
创建自定义key

[root@zabbixclient_web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/nginx.status
UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1
[root@zabbixclient_web1 ~]# killall zabbix_agentd
[root@zabbixclient_web1 ~]# zabbix_agentd

自定义监控脚本(仅供参考,未检测完整状态)

[root@zabbixclient_web1 ~]# vim /usr/local/bin/nginx_status.sh
#!/bin/bash
case $1 in
active)
    curl -s http://192.168.2.100/status |awk '/Active/{print $NF}';;
waiting)
    curl -s http://192.168.2.100/status |awk '/Waiting/{print $NF}';;
accepts)
    curl -s http://192.168.2.100/status |awk 'NR==3{print $2}';;
esac
[root@zabbixclient_web1 ~]# chmod +x  /usr/local/bin/nginx_status.sh

测试效果:

[root@zabbixclient_web1 ~]# zabbix_get  -s 127.0.0.1 \
 -k 'nginx.status[accepts]'

登陆Zabbix监控Web,创建监控项目item,点击Configuration(配置)–>Hosts(主机),点击主机后面的items(项目),点击Create item(创建项目)。修改项目参数如图所示。
在这里插入图片描述
步骤二:监控网络连接状态
1)查看网络连接状态
模拟多人并发连接

[root@zabbixclient_web1 ~]# ab -c 1000 -n 100000 http://192.168.2.100/

查看网络连接状态,仔细观察、分析第二列的数据

[root@zabbixclient_web1 ~]# ss -antup
//-a显示所有
//-t显示TCP连接状态
//-u显示UDP连接状态
//-n以数字形式显示端口号和IP地址
//-p显示连接对应的进程名称

3)创建自定义key
注意:被监控端修改配置文件,注意要允许自定义key并设置Include。

[root@zabbixclient_web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/net.status
UserParameter=net.status[*],/usr/local/bin/net_status.sh $1
[root@zabbixclient_web1 ~]# killall zabbix_agentd
[root@zabbixclient_web1 ~]# zabbix_agentd

自定义监控脚本(仅供参考,未检测完整状态)

[root@zabbixclient_web1 ~]# vim /usr/local/bin/net_status.sh 
#!/bin/bash
case $1 in
estab)
ss -antp |awk '/^ESTAB/{x++} END{print x}';;
close_wait)
	ss -antp |awk '/^CLOSE-WAIT/{x++} END{print x}';;
time_wait)
	ss -antp |awk '/^TIME-WAIT/{x++} END{print x}';;
esac 
[root@zabbixclient_web1 ~]# chmod +x  /usr/local/bin/net_status.sh

测试效果:

[root@zabbixclient_web1 ~]# zabbix_get  -s 127.0.0.1 \
-k 'net.status[time_wait]'
  1. 监控netstatus
    在监控服务器,添加监控项目item,Configuration–>Hosts点击主机后面的items
    点击Create item,如图所示。
    在这里插入图片描述

实现Zabbix报警功能

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

什么是触发器(trigger)?
表达式,如内存不足300M,用户超过30个等
当触发条件发生后,会导致一个触发事件
触发事件会执行某个动作

什么是动作(action)?
动作是触发器的条件被触发后所执行的行为
可以是发送邮件、也可以是重启某个服务等

步骤一:创建触发器规则
1)创建触发器
创建触发器时强烈建议使用英文的语言环境,通过Configuration–> Templates,找到我们之前创建的count.line.passwd模板,点击模板后面的triggers,如图所示。
在这里插入图片描述
2)触发器表达式
创建触发器时需要定义表达式,触发器表达式(Expression)是触发异常的条件,触发器表达式格式如下:
{:.()}
{主机:key.函数(参数)}<表达式>常数
在如图所示的蓝色方框中编写触发器表达式,可以直接手写,也可以通过add选择表达式模板。
在这里插入图片描述
下面,我们看几个表达式的案例:
{web1:system.cpu.load[all,avg1].last(0)}>5 //0为最新数据
如果web1主机最新的CPU平均负载值大于5,则触发器状态Problem

{vfs.fs.size[/,free].max(5m)}<10G //5m为最近5分钟
根分区,最近5分钟的最大容量小于10G,则状态进入Problem

{vfs.file.cksum[/etc/passwd].diff(0)}>0 //0为最新数据
最新一次校验/etc/passwd如果与上一次有变化,则状态进入Problem

avg, count, last, min and max 等函数支持额外的第二个参数time_shift(时间偏移量),这个参数允许从过去一段时间内引用数据。

3)配置触发器
设置触发器名称,如图所示,点击add添加表达式,填写表达式:
在这里插入图片描述
监控项为账户数量,最近300秒账户数量大于26(根据系统账户数量实际填写),效果如图所示
在这里插入图片描述
选择触发器报警级别,如图所示
在这里插入图片描述
Add创建该触发器,如图所示。
在这里插入图片描述

步骤二:设置邮件
1)创建Media

通过Administration(管理)–>Media Type(报警媒体类型)–>选择Email(邮件),如图所示。
在这里插入图片描述
设置邮件服务器信息,设置邮件服务器及邮件账户信息,如图所示。
在这里插入图片描述
2)为用户添加Media
在Administration(管理)–>Users(用户)中找到选择admin账户,如图所示。
在这里插入图片描述
点击Admin账户后,在弹出的界面中选择Media(报警媒介)菜单–>点击Add(添加)报警媒介,如图-所示。
在这里插入图片描述
点击Add(添加)后,在Meida Type中填写报警类型,收件人,时间等信息,如图所示。

在这里插入图片描述
步骤三:创建Action动作
1)Action动作
Action(动作)是定义当触发器被触发时的时候,执行什么行为。
通过Configuration(配置)–>Actions(动作)–>Create action(创建动作),如图所示。
在这里插入图片描述
2)配置Action动作的触发条件
填写Action动作的名称,配置什么触发器被触发时会执行本Action动作(账户数量大于26),如图所示。
在这里插入图片描述
3)配置Action动作的具体行为
配置动作的具体操作行为(发送信息或执行远程命令),无限次数发送邮件,60秒1次,发送给Admin用户,如图所示。
在这里插入图片描述
在这里插入图片描述
4)测试效果
在被监控主机创建账户(让账户数量大于26),然后登录监控端Web页面,在仪表盘中查看问题报警(需要等待一段时间),如图所示。
在这里插入图片描述
查看报警邮件,在监控服务器上使用mail命令查收报警邮件.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!