目录
1、安装 Zabbix
安装客户端
服务端测试通讯
Web页面添加主机
2、监控 Nginx
自定义脚本监控 Nginx
web配置台
3、监控 MySQL
配置模版文件
配置Web界面
1、安装 Zabbix
node-12 作为zabbix的被监控端,提供mysql服务器,配置zabbix监控node-12 客户端,安装zabbix_agent比较简单,只需要开启--enable-agent。
安装客户端
# 下载zabbix6.2
wget https://cdn.zabbix.com/zabbix/sources/stable/6.2/zabbix-6.2.1.tar.gz
# 安装依赖
yum -y install gcc gcc-c++ net-snmp net-snmp-devel curl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel OpenIPMI-devel libssh2-devel libevent libevent-devel mysql-devel
# 如果是本地yum源安装依赖包,需要安装zabbix_rpm.tar.gz包里的rmp包。
tar -zxvf zabbix_rpm.tar.gz
yum install -y zabbix_rpm/* --skip-broken
# 创建用户
useradd -s /sbin/nologin zabbix
# 安装zabbix
tar -zxvf zabbix-6.2.1.tar.gz -C /usr/local/src/
cd /usr/local/src/zabbix-6.2.1/
./configure --prefix=/usr/local/zabbix --enable-agent
make install
# 添加系统软连接
ln -s /usr/local/zabbix/bin/* /usr/local/bin/
ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
--------------------------------------------------------------
# 修改配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.1.11
ListenPort=10050
ServerActive=127.0.0.1,192.168.1.11
Hostname=192.168.1.12
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
UnsafeUserParameters=1
mkdir /usr/local/etc/zabbix_agentd.conf.d
#-----------------------添加启动脚本-----------------------------
# 添加zabbix启动脚本
cp /usr/local/src/zabbix-6.2.1/misc/init.d/fedora/core/* /etc/init.d/
vim /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix #修改zabbix安装目录
chkconfig --add zabbix_agentd
chkconfig zabbix_agentd on
# 启动zabbix_agent
/etc/init.d/zabbix_agentd start
netstat -antup | grep 10050
服务端测试通讯
# 测试客户端信息收集
[root@cong11 ~]zabbix_get -s 192.168.137.112 -p10050 -k system.uname
Web页面添加主机
① 添加host主机:点击配置--主机--新建主机--配置主机
- 模板:
Templates -> Linux by Zabbix agent
——zabbix提供多种模板共用户来选择,用户可以根据自己需求选择不同的模板提供的监控项来监控自己的主机,用户也可以自定义模板。单台主机可以选择多个模板。 - 主机群组:Linux Servers——主机群组可以自己创建新的,也可以使用zabbix提供好的群组,主要来区分不同主机,方便管理,主机群组可以多选。
- 接口选择:Agent——我们使用的是zabbix_agent来收集信息,所以选择agent
- 资产记录:zabbix提供资产记录功能,可以手动填写,也可以自动生成
2、监控 Nginx
自定义脚本监控 Nginx
zabbix默认自带了很多有用的监控模板,通常对主机运行状态使用默认的模板就可以了,有时候我们需要根据实际情况自定义一些监控信息。下面就介绍一下zabbix监控nginx服务的配置过程。整个配置过程大致如下:
① 确定监控内容
Nginx内置了一个status状态的功能,通过配置可以看到nginx的运行情况,status显示的内容包括当前连接数,处于活动状态的连接数,已经处理的请求数等等。
# 在nginx的配置文件中,添加status配置
[root@cong11 ~] vim /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 192.168.1.11;
deny all;
}
nginx -s reload
# 测试访问
curl http://192.168.1.11/status
注意:在访问效率很高,请求很快被处理完毕的情况下,Waiting 数比较多是正常的。如果 reading + writing 数较多,则说明并发访问量很大,正在处理过程中。
② 编写agent端的监控脚本
编写脚本,放于/usr/local/zabbix/scripts目录下, 通过脚本获取status页面信息的关键值,zabbix server通过这些关键值才能生成数据图像。
[root@cong11 ~] 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
# 测试脚本
chmod +x /usr/local/zabbix/scripts/ngx_status.sh
# 本次测试输出4
sh /usr/local/zabbix/scripts/ngx_status.sh active
③ 配置zabbix_agentd.conf文件,定义监控脚本key
[root@cong11 ~] vim /usr/local/zabbix/etc/zabbix_agentd.conf
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
mkdir /usr/local/zabbix/etc/zabbix_agentd.conf.d/
# 定义监控参数:UserParameter=<key>,<command>
vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_status.conf
UserParameter=nginx.status[*],/usr/local/zabbix/scripts/ngx_status.sh $1
# 重启zabbix-agent
/etc/init.d/zabbix_agentd restart
④ zabbix服务端使用zabbix_get 测试获取数据
# zabbix服务端使用zabbix_get 测试获取数据
zabbix_get -s 192.168.137.111 -p 10050 -k nginx.status[ping]
zabbix_get -s 192.168.137.111 -p 10050 -k nginx.status[active]
zabbix_get -s 192.168.137.111 -p 10050 -k nginx.status[accepts]
web配置台
① 创建nginx模板:配置--模板--创建模板
② 给模板创建监控项
创建监控项要注意命名方式,能够见名知意,最关键的是键值,这里的键值一定要和agent端的配置文件中定义的键值一致。
③ 创建图像:一个图像中显示多个数据的线图,创建完图像之后“应用”
④ 关联模板:选择主机--Zabbix server--选择模板--更新
3、监控 MySQL
zabbix3.0 server已自带mysql的模板了,只需配置好agent客户端,然后在web端给主机增加模板就行了。
配置模版文件
# 建立数据库和 zabbix 的连接信息
[root@cong12 ~] vim /usr/local/zabbix/etc/.my.cnf
[client]
host=localhost
user='root'
password='123456'
# 修改zabbix_agentd 配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
# 复制模版
cp /usr/local/src/zabbix-6.2.1/conf/zabbix_agentd/userparameter_mysql.conf \
/usr/local/zabbix/etc/zabbix_agentd.conf.d/
# 修改userparameter_mysql.conf文件:指定.my.cnf路径和mysql命令绝对路径
[root@cong12 ~]vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
UserParameter=mysql.ping[*],HOME=/usr/local/zabbix/etc /usr/bin/mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*],HOME=/usr/local/zabbix/etc /usr/bin/mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*],HOME=/usr/local/zabbix/etc /usr/bin/mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*],HOME=/usr/local/zabbix/etc /usr/bin/mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*],HOME=/usr/local/zabbix/etc /usr/bin/mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*],HOME=/usr/local/zabbix/etc /usr/bin/mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*],HOME=/usr/local/zabbix/etc /usrbin/mysql -h"$1" -P"$2" -sNX -e "show slave status"
# 重启zabbix_agentd
/etc/init.d/zabbix_agentd restart
# 在服务器端测试:先执行数据库远程授权:
[root@cong11]zabbix_get -s 192.168.137.112 -p 10050 -k "mysql.ping[192.168.137.112,3306]"