zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位解决存在的各种问题。
Zabbix支持多种网络方式下的监控,可以通过分布式的部署和安装监控代理Zabbix,通过C/S模式采集数据,通过B/S模式在Web端展示和配置。Zabbix Agent监控端口10050。
(1).zabbix的主要特点
安装配置简单,学习成本低,支持多语言(包括中文),免费开源,自动发现服务器与网络设备分布式监视,Web集中管理,可以无agent监视,用户安全认证和柔软的授权方式,通过Web设置或查看监视结果,email等功能。
(2).zabbix的主要功能
监控CPU负载、内存使用、磁盘使用、网络状态、端口监控、日志监控、插件开发自定义
(3).zabbix运行机制
zabbix由zabbix server与可选组件zabbix agent两部分组成。
Zabbix Server 可以通过 SNMP,Zabbix agent,Ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集功能,可以在运行 Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,OS X,Windows多平台。
Zabbix Agent 安装在需要被监控的目标服务器上,主要完成对硬件信息与操作系统有关的内存,CPU 等信息收集。
Zabbix Server可以单独监视远程服务器的服务状态,同时也可以与Zabbix Agent结合。可以轮询Zabbix Agent主动接收监视数据(trapping传递 方式),同时还可以被动接收Zabbix Agent发送的数据。
(4).准备安装包和部署环境
注意:日志文件在/tmp/目录下。
下载Zabbix的源码包:https://www.zabbix.com/download_sources。注意下,下载提供了两种版本:LTS版和标准版。LTS是长期支持(Long Term Support)的缩写,Zabbix将为客户提供5年的支持服务。前三年完全支持与后两年有限制支持。前三年包括一般、关键、安全性问题解决,后两年包括关键、安全性问题解决。超出时间不提供技术支持服务;标准版只提供6+1月支持。
现在自己电脑上的C:WindowsFonts目录下查看是否存在微软雅黑字体,如果有上传一份(ttf格式),如果没有网上下载微软雅黑字体的ttf格式文件。
Zabbix自带了数据库导入包,其中包括ibm_db2、mysql、oracle、postgresql和sqlite3。但是Web界面只提供了PHP。所以我这里选择在LNMP环境下部署。
(5).Zabbix监控端部署
主机名:youxi1 IP地址:192.168.5.101 环境:LNMP(Mysql5.7.19、PHP7.1.24)
在Zabbix监控服务器上部署Zabbix Server和Zabbix Agent(监控本身)。
1)解压文件,进行数据库操作
[root@youxi1 ~]# tar zxf zabbix-3.4.3.tar.gz -C /usr/local/src/ //解压 [root@youxi1 ~]# mysql -uroot -p12345678 mysql> create database zabbix; //创建zabbix需要的数据库 Query OK, 1 row affected (0.01 sec) mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix'; //授权 Query OK, 0 rows affected, 1 warning (0.06 sec) mysql> flush privileges; //刷新 Query OK, 0 rows affected (0.03 sec) mysql> use zabbix; //选择数据库 Database changed mysql> source /usr/local/src/zabbix-3.4.3/database/mysql/schema.sql //导入数据,如果不是mysql可以选择其他数据库类型 mysql> source /usr/local/src/zabbix-3.4.3/database/mysql/images.sql //数据导入顺序不可变。 mysql> source /usr/local/src/zabbix-3.4.3/database/mysql/data.sql mysql> show tables; //最后查看下,我是出现了140行 mysql> exit Bye [root@youxi1 ~]# mysql -uzabbix -pzabbix //mysql登录测试 mysql>
2)创建zabbix用户
[root@youxi1 ~]# useradd -M -s /sbin/nologin zabbix
也可以groupadd zabbix && useradd -s /sbin/nologin -g zabbix zabbix。
3)安装依赖包
[root@youxi1 ~]# yum install -y net-snmp-devel libevent libevent-devel
4)编译安装Zabbix
[root@youxi1 ~]# cd /usr/local/src/zabbix-3.4.3/ [root@youxi1 zabbix-3.4.3]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/var/lib/mysql/bin/mysql_config --with-net-snmp --with-libcurl //编译完会提示你直接make install [root@youxi1 zabbix-3.4.3]# make install [root@youxi1 zabbix-3.4.3]# echo $? 0 [root@youxi1 zabbix-3.4.3]# ls /usr/local/zabbix/ bin etc lib sbin share
参数说明:
--prefix 指定路径
--enable-server 支持Zabbix Server
--enable-agent 支持Zabbix Agent
--with-mysql 指定mysql库,可以选择自定义路径mysql_config。mysql_config是脚本文件,用于编译 mysql 客户端程序。
--with-net-snmp 支持SNMP协议(简单网络管理协议),需要依赖包net-snmp-devel
--libcurl libcurl库,libcurl当前支持http, https, ftp, gopher, telnet, dict, file,和ldap 协议
其他参数:
--enable-proxy 支持Zabbix proxy,一般代理服务器才会启用。
zabbix proxy 是一个监控代理服务器,它收集到监控数据,先存放在缓冲区(保存时间可以通过配置文件设置),然后再发送到 zabbix server。监控代理服务需要一个独立的数据库。用 zabbix proxy的好处:进程监控,当监控的位置通信不便时或当通讯上千台设备的时候,使用zabbix_proxy可以简化维护分布式监控,降低 zabbix server 的负载。
5)修改Zabbix Server的配置信息
[root@youxi1 zabbix-3.4.3]# vim /usr/local/zabbix/etc/zabbix_server.conf # DBHost=localhost //第85行,指定Mysql的地址,默认本地localhost,如果不是本地就写Mysql所在服务器的IP地址 DBName=zabbix //第95行,指定使用的数据库 DBUser=zabbix //第111行,指定登录数据库的用户 DBPassword=zabbix //第119行,指定登录数据库的密码 # DBSocket=/tmp/mysql.sock //第126行,如果不是yum安装的mysql需要注意修改,指向mysql.sock # DBPort=3306 //第134行,指定登录数据库的端口号,默认3306
6)修改Zabbix Agent的配值信息
[root@youxi1 zabbix-3.4.3]# vim /usr/local/zabbix/etc/zabbix_agentd.conf Server=127.0.0.1 //第93行,只接受这里指定的IP地址或主机名的传入连接,逗号分隔 # ListenPort=10050 //第101行,指定Zabbix Agent的监听端口号,默认10050 ServerActive=127.0.0.1 //第134行,主动连接的Zabbix Server的IP地址 Hostname=Zabbix server //第145行,Zabbix Server查看时这台主机的名称 UnsafeUserParameters=1 //第280行,是否允许特殊字符存在于用户自定义的参数名称中。默认为0,不允许
Server和ServerActive都是指向Zabbix Server服务器,但前者使用于被动模式(Zabbix Agent被动等待连接),后者使用于主动模式(Zabbix Agent主动连接Zabbix Server)。
UnsafeUserParameters里的特殊字符包括 ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
7)启动Zabbix,并加入开机自启
启动Zabbix Server时如果报错信息如下,这是找不到mysql文件中的libmysqlclient.so.20,则将地址添加到/etc/ld.so.conf
[root@youxi1 zabbix-3.4.3]# /usr/local/zabbix/sbin/zabbix_server //启动 /usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory [root@youxi1 zabbix-3.4.3]# vim /etc/ld.so.conf /var/lib/mysql/lib //添加libmysqlclient.so.20所在的地址 [root@youxi1 zabbix-3.4.3]# ldconfig //重载库文件
之后再启动,并加入开机自启
[root@youxi1 zabbix-3.4.3]# /usr/local/zabbix/sbin/zabbix_server //Zabbix Server启动 [root@youxi1 zabbix-3.4.3]# echo /usr/local/zabbix/sbin/zabbix_server >> /etc/rc.local //添加开机自启 [root@youxi1 zabbix-3.4.3]# ll /etc/rc.d/rc.local //确保源文件有执行权限 -rwxr-xr-x 1 root root 516 7月 1 14:55 /etc/rc.d/rc.local [root@youxi1 zabbix-3.4.3]# /usr/local/zabbix/sbin/zabbix_agentd //Zabbix Agent启动 [root@youxi1 zabbix-3.4.3]# echo /usr/local/zabbix/sbin/zabbix_agentd >> /etc/rc.local //添加开机自启 [root@youxi1 zabbix-3.4.3]# ss -antup | grep zabbix //可以看到10050是Zabbix Agent,10051是Zabbix Server tcp LISTEN 0 128 *:10050 *:* users:(("zabbix_agentd",pid=16236,fd=4),("zabbix_agentd",pid=16235,fd=4),("zabbix_agentd",pid=16234,fd=4),("zabbix_agentd",pid=16233,fd=4)
,("zabbix_agentd",pid=16232,fd=4),("zabbix_agentd",pid=16231,fd=4)) tcp LISTEN 0 128 *:10051 *:* users:(("zabbix_server",pid=16204,fd=4),("zabbix_server",pid=16203,fd=4),("zabbix_server",pid=16202,fd=4),("zabbix_server",pid=16201,fd=4)
,("zabbix_server",pid=16200,fd=4),("zabbix_server",pid=16199,fd=4),("zabbix_server",pid=16198,fd=4),("zabbix_server",pid=16197,fd=4),("zabbix_server",pid=16196,fd=4),
("zabbix_server",pid=16195,fd=4),("zabbix_server",pid=16194,fd=4),("zabbix_server",pid=16193,fd=4),("zabbix_server",pid=16192,fd=4),("zabbix_server",pid=16190,fd=4),
("zabbix_server",pid=16189,fd=4),("zabbix_server",pid=16188,fd=4),("zabbix_server",pid=16184,fd=4),("zabbix_server",pid=16183,fd=4),("zabbix_server",pid=16181,fd=4),
("zabbix_server",pid=16180,fd=4),("zabbix_server",pid=16179,fd=4),("zabbix_server",pid=16177,fd=4),("zabbix_server",pid=16175,fd=4),("zabbix_server",pid=16174,fd=4),
("zabbix_server",pid=16173,fd=4),("zabbix_server",pid=16171,fd=4),("zabbix_server",pid=16170,fd=4),("zabbix_server",pid=16169,fd=4),("zabbix_server",pid=16168,fd=4),
("zabbix_server",pid=16167,fd=4),("zabbix_server",pid=16166,fd=4),("zabbix_server",pid=16165,fd=4),("zabbix_server",pid=16164,fd=4),("zabbix_server",pid=16163,fd=4))
另外,官方非常贴心的准备了启动脚本,所以也可以使用启动脚本来管理Zabbix
[root@youxi1 zabbix-3.4.3]# ls /usr/local/src/zabbix-.4.3/misc/init.d/fedora/core/ zabbix_agentd zabbix_server //我选择的是fedora系统的启动脚本,因为这是与CentOS一脉的分支。 [root@youxi1 zabbix-3.4.3]# cp /usr/local/src/zabbix-3.4.3/misc/init.d/fedora/core/* /etc/init.d/ [root@youxi1 zabbix-3.4.3]# vim /etc/init.d/zabbix_server //修改Zabbix Server启动脚本 BASEDIR=/usr/local/zabbix //第22行,修改zabbix的基本目录 [root@youxi1 zabbix-3.4.3]# vim /etc/init.d/zabbix_agentd //修改Zabbix Agent启动脚本 BASEDIR=/usr/local/zabbix //第22行,修改zabbix的基本目录 //然后正常使用chkconfig命令添加到管理,设置开机自启,最后启动。
8)复制Zabbix的php界面到指定目录,配置并重启nginx、Zabbix Server、php-fpm
目录可以是nginx的默认目录,也可以是nginx里自定义的目录
[root@youxi1 zabbix-3.4.3]# cp -r frontends/php/* /usr/local/nginx/html/ [root@youxi1 zabbix-3.4.3]# vim /usr/local/nginx/conf/nginx.conf location / { //第43~46行 root html; index index.php index.html index.htm; //添加一个index.php } [root@youxi1 zabbix-3.4.3]# /usr/local/nginx/sbin/nginx -s reload [root@youxi1 zabbix-3.4.3]# /etc/init.d/zabbix_server restart Reloading systemd: [ 确定 ] Restarting zabbix_server (via systemctl): [ 确定 ] [root@youxi1 zabbix-3.4.3]# /etc/init.d/php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done
9)使用Web页面配置
A.输入地址后应该显示如下页面
B.按Next step(下一步),出现如下界面,此时需要检测全部通过,才能下一步
可以根据提示一步步修改:
[root@youxi1 zabbix-3.4.3]# vim /usr/local/php/php.ini //提示Minimum required size of PHP post is 16M (configuration option "post_max_size"). post_max_size = 16M //第671行 //提示Minimum required limit on execution time of PHP scripts is 300 (configuration option "max_execution_time"). max_execution_time = 300 //第383行 //提示Minimum required limit on input parse time for PHP scripts is 300 (configuration option "max_input_time"). max_input_time = 300 //第393行 //提示Time zone for PHP is not set (configuration parameter "date.timezone"). date.timezone = Asia/Shanghai //第939行,指定上海的时区 //另外还需要指定两个参数 mysqli.default_socket =/var/lib/mysql/mysql.sock //第1170行,指定mysql.sock路径 always_populate_raw_post_data = -1 //必须禁用,php5.6.0及以上版本,需要自己添加,可以加在文件最后 [root@youxi1 zabbix-3.4.3]# /etc/init.d/php-fpm restart //重启php-fpm Gracefully shutting down php-fpm . done Starting php-fpm done
如果底下有一个PHP LDAP提示的Warning,这是由于在编译php时没有添加LDAP模块,需要添加这个模块
[root@youxi1 zabbix-3.4.3]# yum -y install openldap-devel openldap //安装依赖包 [root@youxi1 zabbix-3.4.3]# rsync -avz /usr/lib64/libldap* /usr/lib/ sending incremental file list libldap-2.4.so.2 -> libldap-2.4.so.2.10.7 libldap-2.4.so.2.10.7 libldap.so -> libldap-2.4.so.2.10.7 libldap_r-2.4.so.2 -> libldap_r-2.4.so.2.10.7 libldap_r-2.4.so.2.10.7 libldap_r.so -> libldap_r-2.4.so.2.10.7 sent 320,885 bytes received 66 bytes 641,902.00 bytes/sec total size is 734,112 speedup is 2.29 [root@youxi1 zabbix-3.4.3]# cd /usr/local/src/php-7.1.24/ext/ldap/ //到php解压后的文件 [root@youxi1 ldap]# /usr/local/php/bin/phpize //运行php内的phpize脚本 Configuring for: PHP Api Version: 20160303 Zend Module Api No: 20160303 Zend Extension Api No: 320160303 [root@youxi1 ldap]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-ldap [root@youxi1 ldap]# make && make install //编译安装 [root@youxi1 ldap]# echo $? 0 [root@youxi1 ldap]# vim /usr/local/php/php.ini extension=ldap.so //添加一行,可以加在文件最后 [root@youxi1 ldap]# /etc/init.d/php-fpm restart //重启php-fpm Gracefully shutting down php-fpm . done Starting php-fpm done
刷新界面,如果全部ok就可以点击下一步了
C.之后会出现如下界面,设置好后,点击下一步
D.出现如下页面,默认即可。设置的是Zabbix Server服务器的主机名或IP地址、端口号、安装名称。下一步
E.出现如下页面,这个页面是用于检查配置参数的。检测完成后下一步
F.如下界面一般都会有,只需下载文件上传到指明的地址
上传完成后刷新页面,如果出现如下页面则通过检测,按Finish结束
G.最后跳转登录页面,默认用户名admin,密码zabbix
H.成功登录后,可以在右上角的修改语言。Chinese(zh_CN),然后Update
I.尝试监控本机。
首先,启用自动发现
然后,启用Zabbix server的监控
启用之后等待几分钟,刷新页面,在可用性中必须至少有一个是绿色状态。如果可用性都是灰色,查看下Zabbix Agent是不是没有启动。
最后就可以查看了
J.解决中文图形出现方块字
[root@youxi1 ldap]# cd //回到上传地址 [root@youxi1 ~]# mv msyh.ttf /usr/local/nginx/html/fonts/DejaVuSans.ttf //将微软雅黑字体覆盖到指定文件,文件名固定 mv:是否覆盖"/usr/local/nginx/html/fonts/DejaVuSans.ttf"? y
然后刷新页面