首先,大家应该了解一下,什么是zabbix?

       Zabbix是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的Agent(代理),也可以支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其他监控系统不能比的。相对来说,他的总体功能做得非常优秀,其界面也很简洁美观。

       在国内,BAT的部分业务、豆瓣、58同城、PPTV、搜狐、Letv、人人、网易、小米、360等公司都在使用Zabbix。

       Zabbix适合中小型企业、大中型企业的用户使用。单个Server节点可以支持上万台设备,每秒可以处理1.5万次请求,理论上可以支持5万台设备。

       Zabbix自身的定位是中型企业和大型企业,如果在特大型环境中使用,需要解决大并发、大压力的问题,这对使用者提出了更高的要求。

       Zabbix的通用架构是C/S架构,分布式架构为C/P/S或C/N/S,Zabbix-Server将采集到的数据持久地存储到数据库中,用前端的UI友好地展示给用户。

       下面是Zabbix的架构图,可以更直观的帮助初学者理解Zabbix的原理及各部分的作用

zabbix企业级分布式监控系统--zabbix-server和zabbix-agent的配置过程_第1张图片

下面介绍Zabbix的安装和配置

       安装环境描述:Zabbix服务器的运行环境为Linux(Unix)+PHP+Web Service+Database,这里的Web Service可以为Nginx、Apache,Database可以为MySQL、Oracle、PostgreSQL等。

       其次,还有一点需要注意的是时间同步。Zabbix-Server对时间的精准要求比较高,时间对数据的计算等都有影响,因此,最好设置NTP自动同步时间。也可以用crontab进行同步(实际的生产环境中不推荐这么做),如下所示,使用crontab进行时间同步。

*/30    *    *    *    *     /usr/sbin/ntpdate    pool.ntp.org

       最后一点,部署环境的考虑。Zabbix-Server尽量部署在核心业务所在的机房,要求到各分节点的网络稳定。另外,要考虑到网络流量的问题,做好安全策略。

(一)Zabbix-Server服务器端的安装

       注意:下面以CentOS6.5_X64为例介绍如何安装Zabbix-Server服务器端。本例采用的是RPM包安装方式,这也是我比较推荐的方式,该方式较简介。源码安装的方式我会在在下次文章中介绍。

       准备好CentOS6.5_X64系统,配置IP地址,确保与互联网连接正常。进入系统,测试网路,方法如下:

[root@zabbix-server ~]# ping -c 4 www.baidu.com
PING www.a.shifen.com (119.75.218.70) 56(84) bytes of data.
64 bytes from 119.75.218.70: icmp_seq=1 ttl=54 time=3.31 ms
64 bytes from 119.75.218.70: icmp_seq=2 ttl=54 time=6.31 ms
64 bytes from 119.75.218.70: icmp_seq=3 ttl=54 time=10.5 ms
64 bytes from 119.75.218.70: icmp_seq=4 ttl=54 time=4.16 ms

--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 12023ms
rtt min/avg/max/mdev = 3.313/6.078/10.530/2.793 ms

        1. 安装Zabbix官方源和epel源,如下所示:

[root@zabbix-server ~]# rpm -ivh http://repo.zabbix.com/zabbix/2.0/rhel/6/x86_64/zabbix-release-2.0-1.el6.noarch.rpm
[root@zabbix-server ~]# rpm -ivh  http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

注意:由于软件版本更新,以上链接可能会失效,请读者下载并安装相应的版本。

        2. 安装服务器端(注意:由于服务器端也是需要监控的,股这里也一并安装Zabbix-Agent,如下所示。)

[root@zabbix-server ~]# yum -y install zabbix zabbix-get zabbix-server zabbix-web-mysql zabbix-web  zabbix-agent

        安装可以看到,yum方式安装并没有自动安装mysql-server。

        注意:由于RHEL系统(Cent OS不存在这个问题)缺少php-bcmath和php-mbstring这两个包,会导致Web页面的安装提示缺少组件,所以读者可以在Cent OS源中下载这两个包安装即可(注意与系统版本对应)。

http://vault.centos.org/

        3. 安装MySQL数据库服务,命令如下:

[root@zabbix-server ~]# yum -y install mysql-server

修改MySQL配置文件如下(*星号标记部分很重要)

[root@zabbix-server ~]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8    *
innodb_file_per_table=1      *

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

启动服务。

[root@zabbix-server ~]# chkconfig mysqld on
[root@zabbix-server ~]# service mysqld start

查看服务是否启动成功,如下所示:

[root@zabbix-server ~]# ps -ef | grep mysql
root       1199      1  0 09:56 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql      1307   1199  0 09:56 ?        00:00:29 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
root       4503   2691  0 14:09 pts/4    00:00:00 grep mysql
[root@zabbix-server ~]# netstat -nlput | grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      1307/mysqld

        3.1 创建Zabbix的数据库

设置MySQL的root用户密码。

[root@zabbix-server ~]# mysqladmin -uroot password admin
[root@zabbix-server ~]# mysql -uroot -padmin
mysql> create database zabbix character set utf8; 
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> flush privileges;

        注意:这里容易出现的问题是创建Zabbix的数据库字符集不为utf,这会导致Web界面切换到中文环境时出现乱码。

        3.2 导入Zabbix-Server的数据库

[root@zabbix-server ~]# mysql -uzabbix -pzabbix
mysql> use zabbix;
mysql> source /usr/share/doc/zabbix-server-mysql-2.0.15/create/schema.sql;

需要注意的是,如果安装Zabbix-Proxy,只导入schema.sql即可,无须导入下面的SQL,否则Zabbix-Proxy无法正常工作。

mysql> source /usr/share/doc/zabbix-server-mysql-2.0.15/create/p_w_picpaths.sql;
mysql> source /usr/share/doc/zabbix-server-mysql-2.0.15/create/data.sql;
mysql> show tables;

        3.3 配置 Zabbix_server.conf

配置zabbix_server.conf文件如下。

3.3.1 修改参数。

[root@zabbix-server ~]# egrep -v "(^#|^$)" /etc/zabbix/zabbix_server.conf 
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost                                     *可修改
DBName=zabbix                                        *默认
DBUser=zabbix                                        *默认
DBPassword=zabbix                                    *需修改
DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306                                          *默认
StartPollers=5                                       *
StartIPMIPollers=10
StartPollersUnreachable=10
StartTrappers=10
StartPingers=10
StartDiscoverers=10
SNMPTrapperFile=/var/log/snmptt/snmptt.log
ListenIP=127.0.0.1
MaxHousekeeperDelete=500
CacheSize=256M                                        *
StartDBSyncers=40
HistoryCacheSize=128M
TrendCacheSize=128M
HistoryTextCacheSize=128M
Timeout=30
TrapperTimeout=300
UnreachablePeriod=45
UnavailableDelay=60
UnreachableDelay=15
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
FpingLocation=/usr/sbin/fping
LogSlowQueries=10000
StartProxyPollers=50
ProxyConfigFrequency=3600

以上参数只需关注*星号标记的部分,这部分为性能参数,需根据实际情况进行调整。默认只需修改DBPassword=zabbix 即可。

[root@zabbix-server ~]# mkdir /etc/zabbix/alertscripts    /etc/zabbix/externalscripts

3.3.2 启动Zabbix-Server服务

[root@zabbix-server ~]# service zabbix-server start
[root@zabbix-server ~]# service httpd start
[root@zabbix-server ~]# chkconfig zabbix-server on
[root@zabbix-server ~]# chkconfig httpd on

        3.4 防火墙、Selinux和权限的设置

1) 防火墙设置

[root@zabbix-server ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10051 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 10050 -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 10050 -j ACCEPT
[root@zabbix-server ~]# service iptables restart

上述代码中,10050是Agent的端口,Agent采用被动方式,Server主动连接Agent的10050端口;10051是Server的端口,Agent采用主动或Trapper方式,会连接Server的10051端口。

2) Selinux的设置

如果开启Selinux,安装时提示不能写入文件,出文件权限不是Web用户外,还有一个原因是Selinux默认不允许写入文件,设置语句如下:

[root@zabbix-server ~]# chcon -R -t httpd_sys_content_rw_t  /usr/share/zabbix/conf
[root@zabbix-server ~]# setsebool -P httpd_can_network_connect=true
[root@zabbix-server ~]# semanage  port -a -t http_port_t  -p tcp 10051

如果读者对Selinux不是特别熟悉,可以选择关闭Selinux。在实际的生产环境中,大部分用户也是选择关闭Selinux的。

[root@zabbix-server ~]# setenforce 0  #设置为警告模式,只给出提示,不会阻止操作,不用重启
                                      #服务器即生效
[root@zabbix-server ~]# getenforce    #获取当前Selinux的运行状态

直接关闭Selinux的方法。

[root@zabbix-server ~]# vim /etc/selinux/config
SELINUX=disabled

注意:此种方法需要重启服务器才能生效。

3) php.ini配置文件的设置

[root@zabbix-server ~]# vim /etc/php.ini
date.timezone = Asia/Shanghai
max_execution_time = 300
post_max_size = 16M
max_input_time = 300
memory_limit = 128M
mbstring.func_overload = 2

在LAMP环境中,也可以按下述方式配置PHP参数,比修改php.ini更方便。而在Zabbix的官方RPM中,这一步已经配置过了,所以无须修改。

[root@zabbix-server ~]# vim /etc/httpd/conf.d/zabbix.conf

    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    php_value date.timezone  Asia/Chongqing    *
    php_value max_execution_time 300           *
    php_value memory_limit 128M                *
    php_value post_max_size 16M                *
    php_value upload_max_filesize 2M           *
    php_value max_input_time 300               *
 
[root@zabbix-server ~]# service httpd restart

如果在后面配置Web时提示任何参数不满足安装配置要求,修改对应的参数后重启Httpd即可。

        3.5 配置Web界面

打开浏览器,输入“http://IP地址/zabbix ”,会出现如下图所示的界面。

zabbix企业级分布式监控系统--zabbix-server和zabbix-agent的配置过程_第2张图片

zabbix企业级分布式监控系统--zabbix-server和zabbix-agent的配置过程_第3张图片


        PHP提示的各项参数都满足后,可以继续往下进行,单击“Next”按钮。如果提示参数不通过,修改php.ini配置文件,并重启Web(httpd)服务。

        配置数据库连接的各项参数如下图所示:


zabbix企业级分布式监控系统--zabbix-server和zabbix-agent的配置过程_第4张图片

   

        测试结果为OK后,单击“Next”按钮进行下一步操作,如下图所示:


zabbix企业级分布式监控系统--zabbix-server和zabbix-agent的配置过程_第5张图片


        下图中的这些配置信息将会写入/${PATH}/zabbix/conf/zabbix.conf.php文件中。


zabbix企业级分布式监控系统--zabbix-server和zabbix-agent的配置过程_第6张图片

zabbix企业级分布式监控系统--zabbix-server和zabbix-agent的配置过程_第7张图片


进入如下图所示的登录界面,默认账户是admin,密码是zabbix,登陆成功的页面如下图。


zabbix企业级分布式监控系统--zabbix-server和zabbix-agent的配置过程_第8张图片


        Zabbix是支持多语言的,可以为每个用户配置不同的语言环境。单击菜单栏Administration——》Users——》User name——》Language修改用户的语言(虽然Zabbix支持中文,但本人并不推荐读者使用中文界面,原因是中文界面的翻译不准确,会误导读者,故本人使用英文界面讲解)。

        另外,在个人用户设置中,可以开启声音告警的提示信息和前端消息的声音提示。


zabbix企业级分布式监控系统--zabbix-server和zabbix-agent的配置过程_第9张图片


       如果提示不能正常运行,分别检查zabbix_server.conf中的各项配置文件、Selinux、Iptables等。

       配置文件请检查一下文件的正确配置参数。

       ①/etc/zabbix/zabbix_server.conf中的参数。

DBHost=X.X.X.X                       #数据库的IP地址
DBName=zabbix                        #数据库的名称
DBUser=zabbix                        #数据库的用户
DBPassword=zabbix                        #数据库的密码

       ②/usr/share/zabbix/conf/zabbix.conf.php中的配置。

zabbix企业级分布式监控系统--zabbix-server和zabbix-agent的配置过程_第10张图片

          安装成功后,请务必禁用Guset账户,防止非法访问。

另:关于zabbix-server初始配置时的几种常见故障及处理方法,我将会在下次详细列出,以及Zabbix-Agent的配置方法一同