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配置

流程:配置→主机→监控项→创建监控项;配置→主机→触发器→创建触发器。

具体配置参数如图所示

 

验证

客户端主机开多于三个用户,看是否会触发报警!