zabbix

1、zabbix的定义

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。

 

2、zabbix的主要特点:

(1)、安装与配置简单,学习成本低

(2)、支持多语言(包括中文)

(3)、免费开源

(4)、自动发现服务器与网络设备

(5)、分布式监视以及WEB集中管理功能

(6)、可以无agent监视

(7)、用户安全认证和柔软的授权方式

(8)、通过WEB界面设置或查看监视结果

(9)、email等通知功能等等

 

3、Zabbix的主要功能:

(1)、CPU负荷

(2)、内存使用

(3)、磁盘使用

(4)、网络状况

(5)、端口监视

(6)、日志监视

(7)、服务监控

 

4、zabbix工作的原理

Zabbix支持四种工作方式分别是Snmp 、 zabbix(server/agent)、JMX、IPMI(基于硬件提供的专用接口)。

Snmp 协议介绍

Agent:代理在UDP的161端口接收NMS的读写请求消息,agent:161,被监控端

Manger:管理站在UDP的162端口接收代理的事件通告消息 ,NMS:162,监控端

工作原理图如图1所示

zabbix系列之服务端的安装部署(一)_zabbix

                                  图1

5、zabbix的协议

Zabbix 是基于zabbix协议工作的,其底层是依赖于snmp的工作方式来工作的,它的模型是Server/agent 方式。Service : 10051 :由三部分组成(zabbix-web gui[依赖lamp平台、配置接口、展示数据]、zabbix-server[周期性去agent端采集数据]、service database[负责存储数据])。Agent: 10050:收集本机数据、暂时存储、监听等待server端来采集数据部署应用场景。如图2所示

zabbix系列之服务端的安装部署(一)_zabbix_02

                                         图2

6、zabbix一次监控的全过程原理图

定义监控主机,主机添加到主机组,定义item(监控主机的监控项,[监控资源]),graphs绘图[不是必须、套用用模板就不用],teiggers:定义触发器,action:定义触发器触发后要执行的动作,比如服务重启,发邮件给管理员,动作升级,发邮件给部门主管。如图3所示

zabbix系列之服务端的安装部署(一)_server_03

                                    图3

7、zabbix一次全监控的工作流程

数据采集、数据存储、数据展示、服务报警与升级。如图4所示

zabbix系列之服务端的安装部署(一)_server_04

                                   图4


开始配置

环境:CentOS 7(最小化安装)


1、搭建LNMP环境

[root@localhost ~]# yum install make httpd php mysql-devel gcc net-snmp-devel curl-devel perl-DBI php-gd php-mysql php-bcmath php-mbstring php-xml unixODBC-devel OpenIPMI-devel libxml2-devel mariadb mariadb-server -y

注:我这里是使用之前编译安装的LNMP环境,如果不想那么麻烦,就直接按照上面的命令搭建LNMP环境


2、创建用户

[root@localhost ~]# useradd zabbix -s /sbin/nologin


3、创建zabbix数据库,并授权

[root@localhost ~]# mysql -uroot -p
Enter password: 

mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.04 sec)
mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected, 1 warning (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


4、下载zabbix,解压,并将zabbix导入数据库

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.7/zabbix-3.2.7.tar.gz
[root@localhost src]# tar -xf zabbix-3.2.7.tar.gz 
[root@localhost src]# cd zabbix-3.2.7
[root@localhost zabbix-3.2.7]#  cd database/mysql/
[root@localhost mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql          
[root@localhost mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@localhost mysql]# mysql -uzabbix -pzabbix zabbix < data.sql


5、编译安装zabbix


[root@localhost ~]# cd /usr/local/src/zabbix-3.2.7
[root@localhost zabbix-3.2.7]# ./configure --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --prefix=/usr/local/zabbix
[root@localhost zabbix-3.2.7]# make && make install

注:可能会遇到的问题

问题一:configure: error: unixODBC library not found
解决方法:yum install unixODBC-devel -y

问题二:configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config
解决方法:yum install net-snmp-devel -y

问题三:configure: error: Invalid OPENIPMI directory - unable to find ipmiif.h 
解决方法:yum -y install OpenIPMI-devel

问题四:configure: error: Curl library not found
解决方法: yum install curl-devel -y


6、修改Nginx.conf使其支持index.php

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
            index  index.html index.htm index.php;


7、修改zabbix对应的数据库账号和密码

[root@localhost ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix


8、配置启动脚本,并修改相关选项

[root@localhost ~]# cd /usr/local/src/zabbix-3.2.7
[root@localhost zabbix-3.2.7]# cp misc/init.d/fedora/core5/zabbix_server /etc/init.d/
[root@localhost zabbix-3.2.7]# cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/ 
[root@localhost zabbix-3.2.7]# sed -i 's\ZABBIX_BIN="/usr/local/sbin/zabbix_agentd"\ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"\g' /etc/init.d/zabbix_agentd 
[root@localhost zabbix-3.2.7]# sed -i 's\ZABBIX_BIN="/usr/local/sbin/zabbix_server"\ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server"\g' /etc/init.d/zabbix_server


9、启动服务

[root@localhost ~]# /etc/init.d/zabbix_server start
Reloading systemd:                                         [  OK  ]
Starting zabbix_server (via systemctl):                    [  OK  ]
[root@localhost ~]# /etc/init.d/zabbix_agentd start
Starting zabbix_agentd (via systemctl):                    [  OK  ]
[root@localhost ~]# chkconfig zabbix_server on
[root@localhost ~]# chkconfig zabbix_agentd on

注:

当启动zabbix服务端出现下面的问题时
[root@localhost zabbix-3.2.7]# /usr/local/zabbix/sbin/zabbix_server start
/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@localhost zabbix-3.2.7]# find / -name libmysqlclient.so.20
/usr/local/src/mysql-5.7.20/libmysql/libmysqlclient.so.20
/usr/local/mysql/lib/libmysqlclient.so.20
[root@localhost zabbix-3.2.7]# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf
[root@localhost zabbix-3.2.7]# ldconfig
[root@localhost zabbix-3.2.7]# /etc/init.d/zabbix_server start
Starting zabbix_server (via systemctl):                    [  OK  ]


10、需要修改php.ini支持的大小,不然web界面会报错

[root@localhost ~]# vim /usr/local/php/lib/php.ini
max_execution_time = 300
max_input_time = 300
date.timezone =Asia/Shanghai
post_max_size = 32M

##重启服务
[root@localhost ~]# systemctl restart nginx
[root@localhost ~]# service php-fpm restart


11、复制zabbix的PHP目录到Nginx的目录下


[root@localhost ~]# cd /usr/local/src/zabbix-3.2.7/frontends/
[root@localhost frontends]# cp -rf php /usr/local/nginx/html/zabbix
[root@localhost ~]# chown -R nginx:nginx /usr/local/nginx/html/zabbix


12、访问web界面(http://192.168.15.11/zabbix),如图5所示,一直默认下一步

zabbix系列之服务端的安装部署(一)_server_05

图5


13、下面的选项全部都要为OK,如图6所示

zabbix系列之服务端的安装部署(一)_zabbix_06

图6

注:如果是yum安装的则缺少什么就直接使用yum安装什么,我的是编译安装的,所以解决方法如下

PHP LDAP      off      Warning
PHP gettext   off      Warning
ldap的解决方法:
首先查看源码安装的php模块中是否有ldap.so
[root@localhost ~]# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/
如果有就直接在php.ini文件里添加extension=ldap.so,如果没有,则
[root@localhost ~]# cd /usr/local/src/php-5.5.38/ext/ldap
[root@localhost ldap]# /usr/local/php/bin/phpize
[root@localhost ldap]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-ldap
如果出现configure: error: Cannot find ldap.h的报错,则执行yum install openldap-devel openldap -y
如果出现configure: error: Cannot find ldap libraries in /usr/lib.的报错,则执行cp -frp /usr/lib64/libldap* /usr/lib/
[root@localhost ldap]# make && make install
[root@localhost ldap]# make test
[root@localhost ldap]# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/ ##查看有没有模块
[root@localhost ldap]# vim /usr/local/php/lib/php.ini
extension=ldap.so
然后重启服务

gettext的解决方法:
首先查看源码安装的php模块中是否有gettext.so
[root@localhost ~]# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/

如果有就直接在php.ini文件里添加extension=gettext.so,如果没有,则
[root@localhost ~]# cd /usr/local/src/php-5.5.38/ext/gettext/
[root@localhost gettext]# /usr/local/php/bin/phpize
[root@localhost gettext]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@localhost gettext]# make && make install
[root@localhost gettext]# make test
[root@localhost gettext]# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/ ##查看有没有模块
[root@localhost gettext]# vim /usr/local/php/lib/php.ini
extension=gettext.so
然后重启服务


14、连接数据库的相关配置如图7所示

zabbix系列之服务端的安装部署(一)_server_07

图7

注:

(1)、在配置数据库连接时,如果出现如图8所示的问题,解决方法如下

zabbix系列之服务端的安装部署(一)_server_08

                                                  图8

解决方法:


[root@localhost zabbix]# vim /usr/local/zabbix/etc/zabbix_server.conf
DBSocket=/usr/local/mysql/mysql.sock
[root@localhost ~]# vim /usr/local/php/lib/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock

然后重启服务即可


(2)、在下一步时,如果遇到如图9所示的问题时,由于它提供了解决方法,所以我们按照它提供的解决方法来做就好了,把配置文件下载下来,然后上传并保存为/usr/local/nginx/html/zabbix/conf/zabbix.conf.php,最后刷新页面,如图10所示,则表示我们已经成功安装好zabbix了。

zabbix系列之服务端的安装部署(一)_zabbix_09

                                                   图9

zabbix系列之服务端的安装部署(一)_server_10

                                                   图10

15、登录zabbix监控页面,如图11和图12所示,用户名默认为Admin,密码默认为zabbix。

zabbix系列之服务端的安装部署(一)_zabbix_11

图11

zabbix系列之服务端的安装部署(一)_server_12

图12


16、修改相关选项,使zabbix页面支持中文

在我们的Windows电脑(C:\Windows\Fonts)里,如图13所示,随便找一种字体上传到网站目录里(/usr/local/nginx/html/zabbix/fonts/),并把原来的字体删除掉,把刚上传的字体名改为原本字体的名字(即DejaVuSans.ttf),如图14所示,即可支持中文。然后修改用户的属性,把语言改为中文,如图15所示,查看中文状态下的页面,如图16所示。

zabbix系列之服务端的安装部署(一)_server_13

图13

zabbix系列之服务端的安装部署(一)_zabbix_14

                               图14

zabbix系列之服务端的安装部署(一)_zabbix_15

图15

zabbix系列之服务端的安装部署(一)_zabbix_16

图16


至此,zabbix服务端就已经搭建完成了。