目录
6.zabbix服务端使用 zabbix_get 测试获取数据
2)给模板依次添加相应 Item、Trigger、Graphs,如下图所示
一、监控远程主机
1.安装zabbix_agent
既然监控,就要添加主机监控,监控主机选择agent,安装agent比较简单
192.168.30.12(server02)作为zabbix的被监控端,提供LNMP应用
2.安装依赖
yum install -y curl curl-devel net-snmp net-snmp-devel perl-DBI
3.创建用户
[root@zabbix_server02 ~]# useradd -M -s /sbin/nologin zabbix
4.解压zabbix
我这里把11主机的zabbix源码包cp过来解压
scp zabbix-4.2.6.tar.gz root@192.168.30.12:~
解压zabbix:
tar zxf zabbix-4.2.6.tar.gz
cd zabbix-4.2.6
5.预编译zabbix_agent
[root@zabbix_server02 zabbix-4.2.6]# ./configure --prefix=/usr/local/zabbix --enable-agent
被监控端只需要部署 agnet
6.安装
make install
7.启动agent
/usr/local/zabbix/sbin/zabbix_agentd
netstat -anptl | grep zabbix_agent
8.配置zabbix_agent开机自启
1)生成启动脚本
zabbix自带启动脚本
cp /root/zabbix-4.2.6/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
2)修改安装目录
修改zabbix开机启动脚本中的zabbix安装目录
vim /etc/init.d/zabbix_agentd #编辑客户端配置文件
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd" #找到此行,并修改
3)添加开机自启
chkconfig --add zabbix_agentd
chkconfig zabbix_agentd on
拓展:core 和 core5 里面的文件都可以实现 zabbix 代理启动,core 里面是测试版本,core5 是稳定版本
4)修改zabbix_agent配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf
Server=192.168.30.11
ListenPort=10050
ServerActive=192.168.30.11
Hostname=server02
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
UnsafeUserParameters=1
注:
Server=192.168.30.11 #zabbix server 地址,可以多个,用“ , ”隔开
ServerActive=192.168.30.11 #主动检查的意思,主动检查,主机的数据发送给 Zabbix Server
其中 Server 和 ServerActive 都指定 Zabbix server 的 IP 地址,不同的是,前者是被动,后者是主动。也就是说前者允许192.168.30.11这个ip来我这取数据。而serverActive的192.168.30.11的意思是,客户端主动提交数据给它。
Hostname=server01,这个定义的名字必须和web页面里面host的名字一样。
UnsafeUserParameters=1 #允许所有的字符是在用户定义的参数,参数传递,也就是支持自定义脚本
5)启动服务
把前面启动的zabbix_agentd杀掉
pkill zabbix_agentd
systemctl daemon-reload
systemctl start zabbix_agentd
2.Server端测试通讯
/usr/local/zabbix/bin/zabbix_get -s 192.168.30.12 -p10050 -k system.uname
可以获取多方系统版本则证明没有问题
3.常见进程
默认情况下zabbix包含个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选的,需另安装
1)zabbix_agentd:
客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。
2)zabbix_get
zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令
通常用户排错,如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。
3)zabbix_sender
zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。
很多检查非常耗时,导致zabbix超时,于是在脚本执行完后,使用sender主动提交数据
4)zabbix_server
zabbix 服务端守护进程 。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server
备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。
5)zabbix_proxy
zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交到server里
6) zabbix_java_gateway
zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy
4.zabbix监控环境中基本概念
1. 主机(host): 要监控的网络设备或主机,可由IP或DNS名称指定
2. 主机群组 (host group):主机的逻辑容器(分类),可以包含主机和模板,对不同主机做的分类
3. 监控项 (item):一个特定监控指标的相关数据;这些数据来自被监控的对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由"key"标识
4.触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值,接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK"
5.事件(event):触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等
6.动作(action):指对于特定事件事先定义的处理方法,如发送通知,何时执行操作
7.报警升级(escalation):发送警报或者执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等
8.媒介(media):发送通知的手段或者通道,如Email、Jabber或者SMS等
9:通知(notification):通过选定的媒介向用户发送的有关某事件的信息
10:远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行
11:模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、appication以及low-level discovery rule;模板可以直接链接至某个主机
12:应用(application):一组item的集合
13:web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求
14:前端(frontend):Zabbix的web接口
5.添加Host主机
1)添加host主机
注: 主机名称要和zabbix_agentd.conf 配置文件里 Hostname字段里的名称一致
2)选择模块
3) 在弹出的模块选择自己需要的模块
我们是选择 liunx系统,选择liunx监控模板,模板就是相关应用的集合
点击添加,在更新模板
3)查看主机状态(绿色为连通)
ZBX是用agent采集被监控端的数据
二、配置zabbix 监控 nginx服务
如没有安装ngixn,需安装一个nginx
1.监控nginx
zabbix默认自带了很多有用的监控模板,通常对主机运行状态使用默认的模板就可以了,有时候我们需要根据实际情况自定义一些监控信息,zabbix没有提nginx监控模板需我们自己配置。
zabbix监控nginx服务的配置过程。整个配置过程大致如下:
1,确定监控内容
2,编写agent端的监控脚本
3,配置zabbix_agentd.conf文件,定义监控脚本key
4,zabbix服务端使用zabbix_get 测试获取数据
5,登录zabbix web配置台;
2.确定监控内容
nginx内置了一个status状态的功能,通过配置可以看到nginx的运行情况,status显示的内容包括当前连接数,处于活动状态的连接数,已经处理的请求数等等。
在nginx的配置文件中,添加status配置
vim /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 192.168.30.11;
deny all;
}
在虚拟主机 server {} 中加入上面配置,也可以单独定义一个专门用于监控的虚拟主机
deny all , 拒绝除 allow 中的主机之外所有主机访问此URL ,实现过程中如果遇到403 ,有可能是你把自己测试的机器拒绝了
重载nginx;
nginx -s reload
在zabbix_server上测试访问:
curl http://192.168.30.12/status
nginx status 详细说明;
字段 | 含义 |
Active connections | 当前活跃连接数,包含处于等待在状态的连接 |
accepts | 接收到的客户端发来的连接数 |
handled | 已经处理完成的来连接数,一般和accepts值相同,如果不同说明nginx性能出现瓶颈 |
requests | 客户端请求总数 |
Reading | 正在读取请求头信息的连接数 |
Writing | 正在发送响应报文的连接数 |
Waiting | 处于闲置状态正等待客户端发送请求的连接数 |
在访问效率很高,请求很快被处理完毕情况下,waiting数比较多是正常的。如果 reading + writing 数较多,则说明并发访问量很大,正在处理过程中
3.监控脚本编写
编写脚本放于/usr/local/zabbix/scripts目录下
通过脚本获取status页面信息的关键值,zabbix server通过这些关键值才能生成数据图形,
mkdir /usr/local/zabbix/scripts
vim /usr/local/zabbix/scripts/ngx_status.sh
#! /bin/bash
# Description:zabbix监控nginx状态
# Note:此脚本需要配置在被监控端
HOST="127.0.0.1"
PORT="80"
# 检测nginx进程是否存在
function ping {
/sbin/pidof nginx | wc -l #查看进程号,统计检查数
}
# 检测nginx性能
function active {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
# 执行function
$1
脚本写完先在本地测试一下:
sh /usr/local/zabbix/scripts/ngx_status.sh ping
sh /usr/local/zabbix/scripts/ngx_status.sh accepts
赋予执行权限:
chmod +x /usr/local/zabbix/scripts/ngx_status.sh
4.修改 zabbix-agentd.conf
使用脚本监控需要将zabbix-agentd.conf文件中的UnsafeUserParameters=1
开启
vim /usr/local/zabbix/etc/zabbix_agentd.conf
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
#启用引用此目录文件
5.定义监控脚本key
添加zabbix配置文件,放于/usr/local/zabbix/etc/zabbix_agentd.conf.d/目录下
(agent的配置文件/usr/local/zabbix/etc/zabbix_agentd.conf中定义了其他key的包含目录)创建配置文件nginx_status.conf
vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_status.conf
UserParameter=nginx.status[*],/usr/local/zabbix/scripts/ngx_status.sh $1
在脚本文件里$1,在执行脚本是后跟的值就是【*】
重启zabbix-agent
systemctl restart zabbix_agentd
6.zabbix服务端使用 zabbix_get 测试获取数据
使用zabbix_get收集想要获取的数据
[root@zabbix_server ~]# zabbix_get -s 192.168.30.12 -p 10050 -k nginx.status[ping]
zabbix_get -s 192.168.30.12 -p 10050 -k nginx.status[active]
zabbix_get -s 192.168.30.12 -p 10050 -k nginx.status[accepts]
7.WEB界面配置
服务端测试正常后就可以在web界面配置监控了,zabbix配置都是通过界面配置。
zabbix的配置流程大致如下:
创建主机组 -》添加主机 -》 创建监控模板 -》 创建应用集 -》创建监控项 -》 创建图像—》创建触发器 -》 创建事件 -》创建处理动作 -》 创建用户组与用户 -》创建告警方式
本章节只做 创建监控模板 -》 创建应用集 -》创建监控项 -》 创建图像 这三项的步奏。
1)创建模板
创建模板:Configuration(配置)-->Templates(模板)-->Greate template,创建模板名称:Template App NGINX,单击Add即可
2)给模板依次添加相应 Item、Trigger、Graphs,如下图所示
返回模板页已经看到创建的模板已经生成,这时创建的模板是空模板,要在这个模板中创建应用集,监控项等
点击我们创建的模板名创建应用集
3) 创建应用集
应用集可以理解为是给整个模板中的一部分监控项分类,一个模板中可以创建不同类别的监控项,创建应用集只是起一个名字
4)创建监控项
从应用集进入后就可以在应用集中创建监控项了
创建监控项 要注意命名方式,最关键的是键值 ,这里的键值一定要和agent端的配置文件中定义的键值一致
在监控脚本中,一共定义了8个监控项,所以这里的监控项页要创建8个,重复上面的步奏,创建脚本中相应的监控项
5)创建图像
监控项创建好后创建图像
创建图像在选择要显示图像的监控项时,可以选择多个监控项,这样就可以在一个图像中显示多个数据的线图
把添加的监控项加入图像
6)关联模板
把模板关联对先创建的模板做监控
查看图形查看效果: