Zabbix分布式监控系统
基础环境准备
主机名 | IP地址 | 配置 | 系统 |
server | 192.168.100.30 | 2vCPU、4G内存、40G硬盘 | centos7.8 |
agent | 192.168.100.40 | 2vCPU、4G内存、40G硬盘 | centos7.8 |
修改主机名
关闭防火墙、se
yum:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
添加host映射
# vi /etc/hosts
192.168.100.30 zabbix-server
192.168.100.40 zabbix-agent
LNMP环境部署(Zabbix服务端)
(1)上传LNMP环境部署包
[root@server opt]# ls
lnmp1.6-full.tar
[root@server opt]# tar -zxf lnmp1.6-full.tar.gz
[root@server opt]# cd lnmp1.6-full
[root@server opt]# vi lnmp.conf
MySQL_Data_Dir='/data/mysql'
[root@server opt]# mkdir -p /data/mysql
[root@server opt]# ./install.sh lnmp
选择安装MySQL5.7 PHP7.0以上
4 Mysql
Mysql 密码:.....
选择InnoDB引擎是否开启:y
选择PHP版本:6
选择不安装内存分配器:1
按Enter键开始安装
部署成功显示:
(2)测试访问网页:
Zabbix服务端部署及配置
(1)安装依赖包
[root@server ]# yum install -y libevent-devel wget tar gcc gcc-c++ make net-snmp-devel libxml2-devel libcurl-devel
(2)创建zabbix用户
[root@server ]# useradd -s /sbin/nologin zabbix
(3)zabbix-4.0.3.tar.gz传到/usr/local/src目录下解压编译安装
[root@server ]# tar zxvf zabbix-4.0.3.tar.gz
[root@server ]# mkdir /usr/local/zabbix
[root@server ]# mv /usr/local/src/zabbix-4.0.3/* /usr/local/zabbix
[root@server ]# cd /usr/local/zabbix/
[root@server zabbix]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2
选项说明:
● --prefix指定安装目录
● --enable-server安装Zabbix server
● --enable-agent安装Zabbix agent
● --with-mysql用MySQL来存储
编译完成结果:
#编译安装
[root@server zabbix]# make && make install
(4)环境变量设置
#添加上去
[root@server zabbix]# vi /etc/profile export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/ #刷新环境
[root@server zabbix]# source /etc/profile [root@server zabbix]# echo $PATH
#查看版本
[root@server zabbix]# zabbix_server --version
(5)配置启动脚本
[root@server ]# cp /usr/local/zabbix/misc/init.d/fedora/core/zabbix_server /etc/init.d/
[root@server ]# cp /usr/local/zabbix/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@server ]# vi /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix #zabbix安装目录
[root@server ]# vi /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix #zabbix安装目录
#添加权限
[root@server ]#chmod 755 /etc/init.d/zabbix_*
#启动Zabbix服务及启动状态(如果开启不了则需要关机虚拟机重启才可以开启成功)
[root@server ]# systemctl start zabbix_server
[root@server ]# systemctl start zabbix_agentd
[root@server ]# systemctl status zabbix_server
[root@server ]# systemctl status zabbix_agentd
(6)登录数据库创建Zabbix用户和导入Zabbix库
[root@server ]# systemctl restart mysql
[root@server ]# mysql -h 127.0.0.1 -uroot -p上面设置的密码
mysql> create database zabbix character set utf8 collate utf8_bin; ##创建Zabbix库和设置格式
mysql> grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'zabbix'; ##创建Zabbix用户并分配权限
mysql> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
mysql> flush privileges; ##刷新权限
mysql> set names utf8; ##设置字符集
mysql> use zabbix ##切换到Zabbix库中
把源码/usr/local/zabbix/database/mysql/安装路径下的3个sql文件导入数据库:
mysql> source /usr/local/zabbix/database/mysql/schema.sql
mysql> source /usr/local/zabbix/database/mysql/data.sql
mysql> source /usr/local/zabbix/database/mysql/images.sql
mysql> show tables; ##查看导入的表格
(7)编辑Zabbix server的配置(记得先备份配置文件)
[root@server ]# cp /usr/local/zabbix/etc/zabbix_server.conf{,.bak}
# 查找到修改
[root@server ]# vi /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBHost=127.0.0.1 ##指定数据库信息(需配合参数 DBSocket 使用)
DBName=zabbix ##服务端连接数据库的库名
DBUser=zabbix ##连接数据库的用户
DBPassword=zabbix ##连接数据库的密码
DBPort=3306 ##指定连接数据库的端口
Timeout=30 ##与AGNET和其它外部设备通信超时设置,单位为秒
LogSlowQueries=3000 ##用于服务端数据库慢查询功能,单位是毫秒
DBSocket=/tmp/mysql.sock ##指定MYSQL的SOCK连接路径
#修改Zabbix目录的权限
[root@server ]# chown zabbix:zabbix -R /usr/local/zabbix/
#重启服务生效
[root@server ]# systemctl restart zabbix_server
Zabbix Web界面部署
(1)配置Nginx虚拟主机
# 输入进去
[root@server ]# vi /usr/local/nginx/conf/vhost/zabbix.com.conf
server
{
listen 81;
server_name zabbix.com www.zabbix.com;
index index.html index.htm index.php;
root /data/nginx/zabbix; ##Zabbix Web界面数据目录
location ~ [^/]\.php(/|$)
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/nginx/zabbix$fastcgi_script_name;
include fastcgi_params;
}
}
源码安装包路径下的文件cp到Zabbix Web文件目录当中:
[root@server ]# mkdir -p /data/nginx/zabbix
#生效服务 [root@server ]# /etc/init.d/nginx reload [root@server ]# cp -rf /usr/local/zabbix/frontends/php/* /data/nginx/zabbix
(2)修改PHP文件
# 查找修改
[root@server ]# vi /usr/local/php/etc/php.ini
post_max_size = 32M
max_execution_time = 350
max_input_time = 350
date.timezone = Asia/Shanghai
(3)修改php-fpm.conf的配置文件
# 删除第一个 listen
[root@server ]# vi /usr/local/php/etc/php-fpm.conf
[www]
listen = 127.0.0.1:9000
重启php-fpm服务:
[root@server ]# /etc/init.d/php-fpm restart
检查端口是否启动:
[root@server ]# netstat -lntp | grep php
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 2141/php-fpm: maste
Web界面部署安装
检查安装条件:(根据提示解决不满足条件的问题!)
配置数据库连接信息:
配置Zabbix服务端详细信息:
安装前确认信息:
安装报错:
点击蓝色的那个链接下载
根据提示下载,并把它放到指定路径/data/nginx/zabbix/conf/zabbix.conf.php
重新刷新界面:
登录界面:(账号:Admin 密码:zabbix)
登录后的界面:
Zabbix 客户端部署
任务描述
完成Zabbix Web界面的部署安装之后,了解Zabbix客户端部署安装,了解配置主动模式与被动模式的区别,检测是否安装成功。
(1)下载Zabbix客户端安装包
[root@agent ]# yum -y install wget
[root@agent ]# wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.3-1.el7.x86_64.rpm
(2)安装Zabbix客户端
[root@agent ]# rpm -ivh zabbix-agent-4.0.3-1.el7.x86_64.rpm
安装完后我们后面经常使用的文件如路径如下:
/etc/zabbix/zabbix_agentd.conf ##zabbix_agentd配置文件
/etc/zabbix/zabbix_agentd.d ##zabbix_agentd进程文件
/var/run/zabbix/zabbix_agentd.pid ##zabbix_agentd pid文件路径
/var/log/zabbix/zabbix_agentd.log ##zabbix_agentd日志文件路径
备份配置文件:
[root@agent ]# cp /etc/zabbix/zabbix_agentd.conf{,.bak}
[root@agent ]# egrep -v '^$|#' /etc/zabbix/zabbix_agentd.conf.bak > /etc/zabbix/zabbix_agentd.conf
修改配置文件:
[root@agent ]# vi /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0 ##指定日志文件的大小,单位MB。0表示禁用日志轮转
ListenPort=10050 ##指定监听端口
StartAgents=3 ##Zabbix启动之后开启被动监控的进程数量,如果设置 为0,那么Zabbix被动监控被禁用
ListenIP=0.0.0.0 ##监听IP地址,默认为所有接口
Server=192.168.100.30 ##允许哪个Zabbix server的IP地址监控本机
#ServerActive=192.168.100.30 ##Zabbix 主动监控server的ip地址
Hostname=zabbix agent
Include=/etc/zabbix/zabbix_agentd.d/*.conf ##自定义配置文件
主动模式和被动模式的区别:
● 主动模式:Zabbix的agent端,也就是客户端,主动把自己监测到的数据,上报给Zabbix服务器,Zabbix服务器不需要向agent发起请求。
注意:ServerActive是主动模式开关,注释掉主动模式关闭;与Server不能同时配置。
●被动模式:Zabbix服务器向agent发送请求,告诉agnet我需要哪些数据,然后agnet执行相关操作,把执行结果返回给服务端。
注意:StartAgents=0表示被动模式关闭。
重启生效配置:
#重启生效
[root@server ]# systemctl restart zabbix-agent
#查看日志
[root@server ]# tail -f /var/log/zabbix/zabbix_agentd.log
#查看端口10050是否启动
[root@server ]# netstat -lntp | grep zabbix
Zabbix Web界面的使用管理操作
任务描述
了解Web页面中的操作,如中文乱码处理、用户管理、主机和主机组的管理等
(1)首先设置中文
(2)解决中文乱码问题
从Windows控制面板找到字体,选择字体文件,拷贝到Zabbix服务器的/data/nginx/zabbix/fonts目录下。
将DejaVuSans.ttf字体备份起来,然后用simhei.ttf重命名成DejaVuSans.ttf
重新刷新页面后中文乱码消失
(3)创建客户端监控主机
创建群组
找到配置→主机→创建主机
接着配置主机链接模板,选择Template OS Linux,单击“添加”按钮
之后在最新数据中查看结果
创建模板
选择配置→模板→创建模板→添加监控项
选择自带的监控项:
Zabbix自定义监控项
任务描述
创建自定义监控脚本,并部署自定义监控项,实现监测。
(1)配置自定义监控脚本,修改agent配置文件
#空的文件写进去下面的代码
[root@agent ]# vi /etc/zabbix/zabbix_agentd.d/users.conf
UnsafeUserParameters=1
UserParameter=users, /bin/bash /scripts/user.sh
(2)配置监控脚本:
[root@agent ]# mkdir /scripts
[root@agent ]# vi /scripts/user.sh
#!/bin/bash
user=$(who |wc -l)
if [ $user -gt 3 ];then
echo '1'
else
echo '2'
fi
(3)添加权限:
[root@agent ]# chown -R zabbix.zabbix /scripts/
[root@agent ]# chmod 777 /scripts/user.sh
(4)测试脚本:
如果返回值为1说明在线用户超过3个,如果返回值为2,说明在线用户不超过3个;
生效配置:
[root@agent ]# systemctl restart zabbix-agent
[root@agent ]# systemctl status zabbix-agent
[root@agent ]# netstat -lntp | grep zabbix
(5)服务端测试:
[root@agent ]# zabbix_get -s 192.168.100.40 -k users
zabbix_get命令是在server端用来检查agent端的一个命令,在添加完主机或者触发器后,不能正常获得数据,可以用zabbix_get来检查能否采集到数据,以便判断问题症结所在。
Zabbix_get参数说明:
● -s --host:指定客户端主机名或者IP。
● -p --port:客户端端口,默认10050。
● -I --source-address:指定源IP,写上Zabbix server的IP地址即可,一般留空,服务器如果有多IP的时候,指定一个。
● -k --key:用户想获取的key
至于使用长参数还是短的,自己选择,我经常使用-s而不是-host,
如果不知道key参数可以使用 zabbix_agentd -p 命令寻找自己想要找的参数,如下:
(6)进入Zabbix Web配置
流程:配置→主机→监控项→创建监控项;配置→主机→触发器→创建触发器。
(7)验证
客户端主机开多于三个用户,看是否会触发报警!