zabbix搭建
Zabbix 是由 Alexei Vladishev 开发的⼀种⽹络监视、管理系统,基于 Server-Client 架构。可⽤于监视各种⽹络服务、服务器和⽹络机器等状态。 使⽤各种 Database-end 如 MySQL, PostgreSQL, SQLite, Oracle 或 IBM DB2 储存资料。Server 端基于 C语⾔、Web 管理端 frontend 则是基于 PHP 所 制作的。 Zabbix 可以使⽤多种⽅式监视。可以只使⽤ Simple Check 不需要安装 Client 端,亦可基于 SMTP 或 HTTP … 各种协议定制监视。 在客户端如 UNIX, Windows 中安装 Zabbix Agent 之后,可监视 CPU Load、⽹络使⽤状况、硬盘容量等各种状态。⽽就算没有安装 Agent 在监视对象 中,Zabbix 也可以经由 SNMP、TCP、ICMP、利⽤ IPMI、SSH、telnet 对⽬标进 ⾏监视。 Zabbbix⾃带的Item⾜够满⾜普通⼩公司的监控需求,对于⼤公司也可以设定⾃定义 的Item,⾃动⽣成报表,也有API可以和其他系统集成
zabbix就是可以满足理想化的监控系统需求
⽀持⾃定义监控脚本,提供需要输出的值即可 zabbix存储的数据库表结构稍有复杂但是逻辑清晰 zabbix存在模板的概念,可以⽅便的将⼀组监控项进⾏部署 zabbix每⼀个item也就是监控项,都可以看到历史记录,且web界⾯友好 zabbix有强⼤的Trigger(触发器)定义规则,可以定义复杂的报警逻辑 zabbix提供了ack报警确认机制 zabbix⽀持邮件,短信,微信等告警 zabbix在触发告警后,可以远程执⾏系统命令 zabbix有原⽣的PHP绘图模块
基础配置
主机名 | IP地址 | 配置 | 系统 |
server | 192.168.200.131 | 2vCPU、4G内存、40G硬盘 | centos7 |
agent | 192.168.200.132 | 2vCPU、4G内存、40G硬盘 | centos7 |
修改主机名
将两台虚拟机修改为指定的名称
LNMP环境部署(Zabbix服务端):
上传LNMP环境部署包
解压LNMP环境部署源码包
# tar zxvf lnmp1.6-full.tar.gz
一键部署LNMP环境
# cd lnmp1.6-full
修改MySQL数据目录:
# vi lnmp.conf
MySQL_Data_Dir='/data/mysql'
# ./install.sh lnmp #执行脚本
选择MySQL版本:
设置MySQL密码;
选择InnoDB引擎是否开启:
选择PHP版本:
选择不安装内存分配器:
按Enter键开始安装:
部署成功显示:
测试访问网页:
zabbix安装部署
zabbix server 编译安装
安装依赖包
# yum install -y libevent-devel wget tar gcc gcc-c++ make net-snmp-devel libxml2-devel libcurl-devel
创建zabbix用户
# useradd -s /sbin/nologin zabbix
zabbix-4.0.3.tar.gz传到/usr/local/src目录下解压编译安装
# tar zxvf zabbix-4.0.3.tar.gz #解压源码包 # mkdir /usr/local/zabbix # mv /usr/local/src/zabbix-4.0.3/* /usr/local/zabbix #迁移到安装目录 # cd /usr/local/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
with-libxml2
选项说明:
● --prefix指定安装目录
● --enable-server安装Zabbix server
● --enable-agent安装Zabbix agent
● --with-mysql用MySQL来存储
编译完成结果:
# make && make install #编译安装
环境变量设置
# vi /etc/profile
export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/
# source /etc/profile
# echo $PATH
# zabbix_server --version #查看zabbix版本
配置启动脚本
# cp /usr/local/zabbix/misc/init.d/fedora/core/zabbix_server /etc/init.d/
#cp /usr/local/zabbix/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
# vi /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix #zabbix安装目录
# vi /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix #zabbix安装目录
添加权限:
# chmod 755 /etc/init.d/zabbix_*
启动Zabbix服务及启动状态:
# systemctl start zabbix_server
# systemctl start zabbix_agentd
# systemctl status zabbix_server
# systemctl status zabbix_agentd
登录数据库创建Zabbix用户和导入Zabbix库
Mysql数据库 mysql -h 127.0.0.1 -uroot -p000000
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; ##查看导入的表格
编辑Zabbix server的配置(记得先备份配置文件)
# cp /usr/local/zabbix/etc/zabbix_server.conf{,.bak} # 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目录的权限:
# chown zabbix:zabbix -R /usr/local/zabbix/
重启服务生效:
# systemctl restart zabbix_server
编译安装完成后,配置Nginx虚拟主机,修改PHP相关参数,完成Zabbix Web界面的部署安装。
配置Nginx虚拟主机
# vi /usr/local/nginx/conf/vhost/zabbix.com.conf server { listen 80; 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文件目录当中:
# mkdir -p /data/nginx/zabbix # /etc/init.d/nginx reload ##生效服务 # cp -rf /usr/local/zabbix/frontends/php/* /data/nginx/zabbix
修改php.ini的配置文件
# vi /usr/local/php/etc/php.ini
post_max_size = 32M
max_execution_time = 350
max_input_time = 350
date.timezone = Asia/Shanghai
修改php-fpm.conf的配置文件
# vi /usr/local/php/etc/php-fpm.conf
[www]
listen = 127.0.0.1:9000
重启php-fpm服务
/etc/init.d/php-fpm restart
检查端口是否启动
# 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 Web界面的部署安装之后,了解Zabbix客户端部署安装,了解配置主动模式与被动模式的区别,检测是否安装成功。
下载Zabbix客户端安装包
# yum -y install wget
# wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.3-1.el7.x86_64.rpm
通过wget命令下载安装包。
安装Zabbix客户端
# 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日志文件路径
备份配置文件
# cp /etc/zabbix/zabbix_agentd.conf{,.bak} # egrep -v '^$|#' /etc/zabbix/zabbix_agentd.conf.bak > /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表示被动模式关闭。
重启生效配置:
# systemctl restart zabbix-agent
查看日志:
# tail -f /var/log/zabbix/zabbix_agentd.log
查看端口10050是否启动
# netstat -lntp | grep zabbix
Zabbix Web界面的使用管理操作
了解Web页面中的操作,如中文乱码处理、用户管理、主机和主机组的管理等
1. 首先设置中文
解决中文乱码问题
从Windows控制面板找到字体,选择字体文件,拷贝到Zabbix服务器的/data/nginx/zabbix/fonts目录下。
将DejaVuSans.ttf字体备份起来,然后用simhei.ttf重命名成DejaVuSans.ttf
重新刷新页面后中文乱码消失:
创建客户端监控主机
创建群组
找到配置→主机→创建主机
接着配置主机链接模板,选择Template OS Linux,单击“添加”按钮。
之后在最新数据中查看结果
创建模板
选择配置→模板→创建模板→添加监控项
选择自带的监控项:
Zabbix自定义监控项
创建自定义监控脚本,并部署自定义监控项,实现监测。
配置自定义监控脚本,修改agent配置文件
# vi /etc/zabbix/zabbix_agentd.d/users.conf
UnsafeUserParameters=1
UserParameter=users, /bin/bash /scripts/user.sh ##存放脚本位置
配置监控脚本:
# mkdir /scripts
# vi /scripts/user.sh
#!/bin/bash
user=$(who |wc -l)
if [ $user -gt 3 ];then
echo '1'
else
echo '2'
fi
添加权限
# chown -R zabbix.zabbix /scripts/
# chmod 777 /scripts/user.sh
测试脚本
如果返回值为1说明在线用户超过3个,如果返回值为2,说明在线用户不超过3个;
生效配置
# systemctl restart zabbix-agent
# systemctl status zabbix-agent
# netstat -lntp | grep zabbix ##查看端口是否都启动了
服务端测试
# zabbix_get -s [ip地址] -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 命令寻找自己想要找的参数,如下:
进入Zabbix Web配置
流程:配置→主机→监控项→创建监控项;配置→主机→触发器→创建触发器。
具体配置参数如图所示
验证
客户端主机开多于三个用户,看是否会触发报警!