zabbix的安装

简述:

    本章介绍Zabbix的安装和配置,这是在一个Server/Agent的架构环境中进行部署的,采用RPM包进行安装(推荐使用此种方法)

环境:

    Zabbix服务器运行的环境为Linux+PHP+WebService+DataBase,这里的WebService可以是Nginx、Apache;DataBase可以为MySQL、Oracle、PostgreSQL等。

硬件要求:       

环境 平台 CPU/内存 数 据 库 硬盘 监控主机数量
小型 Linux PII 350MHz 256MB SQLite 普通 20
中型 Linux 64 bit AMD Athlon 3200 2GB MySQL InnoDB 普通 500
大型 Linux 64 bit Intel Dual Core 6400 4GB MySQL InnoDB SAS或SSD > 1000
超大型 Linux 64 bit Intel Xeon 2xCPU 8GB MySQL InnoDB SAS或SSD > 10000

准备工作:

        时间同步:

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

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

部署:

     服务端配置:(centos6.5)

               zabbix server安装

                           采用RPM包安装方式(推荐)

                           安装Zabbix官方源和epel源:

                           rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm

                           rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

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

                            yum install -y zabbix zabbix-get zabbix-server zabbix-web-mysql zabbix-web zabbix-agent  (注意:由于服务器端也是需要监控的,故这里也一并安装Zabbix-Agent)

                           注意:yum安装时,epel源可能会报错,如下:

                                           Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

                                           解决方法:vi /etc/yum.repos.d/epel.repo

                                                     将所有baseurl行注释去掉

                                                     将所有mirrorlist行注释掉

                           注意安装zabbix的官方yum源后,在执行yum install -y zabbix zabbix-get zabbix-server zabbix-web-mysql zabbix-web zabbix-agent这个命令时会把httpd,mysql,php等相关的软件一并安装(若之前已经安装了httpd,先把之前安装的httpd卸载了: rpm -e httpd --nodeps,不然后面httpd的配置文件会有问题

               mysql的配置

                            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 #设置字符集为utf8

                            innodb_file_per_table=1 #让innodb的每个表文件单独存储

                            [mysqld_safe]

                            log-error=/var/log/mysqld.log

                            pid-file=/var/run/mysqld/mysqld.pid

###和上面mysql配置文件的数据是一样的:[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0character-set-server=utf8innodb_file_per_table=1[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid

                            chkconfig mysqld on             (启动服务)

                            service mysqld start

                            ps -ef | grep mysql             (看是否启动)

               创建zabbix库:

                             mysqladmin -uroot password  "xxxxx"     (设置密码)

                             mysql -uroot -pxxxxx           (登录mysql)

                             create database zabbix character set utf8;

                             grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';                                     (创建zabbix用户并授权)

                             flush privileges;

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

               导入Zabbix Server的数据库:

                             mysql -uzabbix -pzabbix        (以zabbix用户登录mysql)

                             use zabbix

                             source /usr/share/doc/zabbix-server-mysql-X.X.X/create/schema.sql;

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

                             source /usr/share/doc/zabbix-server-mysql-X.X.X/create/p_w_picpaths.sql;

                             source /usr/share/doc/zabbix-server-mysql-X.X.X/create/data.sql;

                             show tables;

               配置zabbix_server.conf:

                              mv  /etc/zabbix/zabbix_server.conf  /etc/zabbix/zabbix_server.conf.old                          (备份原配置文件)

                              vi /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

                              VMwareFrequency=60

                              VMwareCacheSize=8M

                              SNMPTrapperFile=/var/log/snmptt/snmptt.log

                              ListenIP=127.0.0.1

                              MaxHousekeeperDelete=500

                              CacheSize=256M

                              StartDBSyncers=40

                              HistoryCacheSize=128M

                              TrendCacheSize=128M

                              HistoryTextCacheSize=128M

                              ValueCacheSize=128M

                              Timeout=30

                              TrapperTimeout=300

                              UnreachablePeriod=45

                              UnavailableDelay=60

                              UnreachableDelay=15

                              AlertScriptsPath=/etc/zabbix/alertscripts

                              ExternalScripts=/etc/zabbix/externalscripts

                              FpingLocation=/usr/sbin/fping

                              LogSlowQueries=10000

                              StartProxyPollers=50

                              ProxyConfigFrequency=3600

###和上面zabbix配置文件数据一样:LogFile=/var/log/zabbix/zabbix_server.logLogFileSize=0PidFile=/var/run/zabbix/zabbix_server.pidDBHost=localhostDBName=zabbixDBUser=zabbixDBPassword=zabbixDBSocket=/var/lib/mysql/mysql.sockDBPort=3306 StartPollers=5StartIPMIPollers=10StartPollersUnreachable=10StartTrappers=10StartPingers=10StartDiscoverers=10VMwareFrequency=60VMwareCacheSize=8MSNMPTrapperFile=/var/log/snmptt/snmptt.logListenIP=127.0.0.1MaxHousekeeperDelete=500CacheSize=256MStartDBSyncers=40HistoryCacheSize=128MTrendCacheSize=128MHistoryTextCacheSize=128MValueCacheSize=128MTimeout=30TrapperTimeout=300UnreachablePeriod=45UnavailableDelay=60UnreachableDelay=15AlertScriptsPath=/etc/zabbix/alertscriptsExternalScripts=/etc/zabbix/externalscriptsFpingLocation=/usr/sbin/fpingLogSlowQueries=10000StartProxyPollers=50ProxyConfigFrequency=3600

                              注意:只需关注红色字部分,这部分为性能参数,需根据实际情况进行调整。默认只需修改DBPassword=zabbix即可

                              mkdir -p  /etc/zabbix/{alertscripts,externalscripts}  (创建两个脚本目录,邮件报警和短信报警的脚本都放在这个目录里)

                              service zabbix-server start           (启动zabbix server)

                              service httpd start

                              chkconfig zabbix-server on

                              chkconfig httpd on      

              防火墙,Selinux和权限的设置:

                          iptables -P INPUT ACCEPT          注意顺序,设置INPUT链默认为全接受)

                              iptables -F

                              chkconfig iptables on

                              iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

                              iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT                                                         (很重要,确保可以连接外网)

                              iptables -A INPUT -p tcp --dport 22 -j ACCEPT  (非常重要,确保可以远程登录)

                              iptables -P INPUT DROP            (设置INPUT链默认为全拒绝)

                              iptables -A INPUT -p tcp --dport 80 -j ACCEPT

                              iptables -A INPUT -p tcp --dport 10051 -j ACCEPT

                              iptables -A INPUT -p tcp --dport 10050 -j ACCEPT

                              iptables -A OUTPUT -p tcp --dport 10050 -j ACCEPT

                              /etc/init.d/iptables save

                              /etc/init.d/iptables status

                              注意:10050是Agent的端口,Agent采用被动方式,Server主动连接Agent的10050端口;10051是Server的端口,Agent采用主动或Trapper方式,会连接Server的10051端口

                              selinux:直接关闭

                php.ini配置文件的设置:

                             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中,这一步已经配置过了,所以无须修改。如:

                             vim /etc/httpd/conf.d/zabbix.conf

                             <Directory "/usr/share/zabbix">

                                 Options FollowSymLinks

                                 AllowOverride None

                                 Order allow,deny

                                 Allow from all

                                 php_value date.timezone Asia/Shanghai

                                 php_value max_execution_time 300

                                 php_value post_max_size 16M

                                 php_value max_input_time 300

                                 php_value memory_limit 128M

                                 php_value upload_max_filesize 2M

                              </Directory>

                              service httpd restart           (重启httpd即可)

                              注意:如果在后面配置Web时提示任何参数不满足安装配置要求,修改/etc/php.ini文件里对应的参数后重启Httpd即可

                配置web界面:

                              打开浏览器,输入“http://IP地址/zabbix”

                              可能会有如下报错:

                              解决办法:

                                   vi /etc/php.ini

                                   找到date.timezone参数

                                   添加一行

                                   date.timezone = Asia/Shanghai

                                   /etc/init.d/httpd  restart                 (OK)

                             

                              刷新后如下图:

 

  

                              点击next下一步后,出现如图:

                               根据上图所示,填写各参数的值

                               点击Test connection,无错误后,点击next下一步,出现如下图:

                              如上图:填写相应的值

                              注意:name参数的值的含义:zabbix在web界面的名称,如下图:

                             点击next--->next---->finish完成,如下图:

                               点击finish后,出现登录界面,如下图:

                                默认的账号是:admin,密码是zabbix

                                登录后进入zabbix,如下图:

                                注意:登录后,可能会出现如下图所示的错误:

                               解决方法:由上图画圈中发现,localhost的10051端口可能有问题,用telnet进行测试,如下:                                

                                由上图发现localhost的10051端口是不通的,而127.0.0.1的10051是通的,修改配置文件zabbix.conf.php

                                [root@scj ~]# find / -name zabbix.conf.php

                                /etc/zabbix/web/zabbix.conf.php       (找到文件路径)

                                vi /etc/zabbix/web/zabbix.conf.php

                                找到下面几行:

                                 将localhost改为127.0.0.1

                                 /etc/init.d/httpd restart           (重启httpd)

      

                                 注意:刚安装完zabbix后,web界面默认会有installation选项,重新安装zabbix的web界面,如下图:

                                 为了安全我们需要将其去掉,方法如下:

                                [root@scj ~]# find / -name menu.inc.php

                                 /usr/share/zabbix/include/menu.inc.php   (找到文件位置)

                                 vi /usr/share/zabbix/include/menu.inc.php

                                找到Installation,如下图:

                                 将其注释掉,如下图:

                                /etc/init.d/httpd restart           (重启httpd)

                                刷新下浏览器,发现没了,如下图:

           

              将web界面的英文改为中文:

                                对于初学者或者英语水平不是很好的运维人员来说,英文界面可能不是很好,那如何将英文界面改为中文界面呢?方法如下:

                                1、 在web界面的右上角有个profile选项,如下图:

                                2、 点击profile,进入如下图所示:

                                3、 选择Chinese,点击save保存即可

                                注意:对于zabbix-2.2版本来说,默认没有Chinese这个选项 (被隐藏了),解决方法如下:

                                [root@scj ~]# find / -name locales.inc.php

                                /usr/share/zabbix/include/locales.inc.php   (找到文件路径)

                                vi /usr/share/zabbix/include/locales.inc.php

                                找到zh_CN,如下图:                                   

                                     将false改为true即可

                                /etc/init.d/httpd restart           (重启httpd)

                                     如下图:

                              解决中文乱码:

                                    参考:

   客户端配置:

           注意:Zabbix可以采用Agent/Server的架构,客户端的采集方式分为Agent、SNMP等,这里采用Agent方式对客户端服务器进行监控采集数据(推荐)

           Zabbix-Agent客户端的安装 :

                      这里依然采用RPM方式安装(安装Zabbix官方的yum源)

                      rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm

                      yum -y install zabbix zabbix-agent

           防火墙的设置:

                      iptables -A INPUT -p tcp --dport 10050 -j ACCEPT

                      iptables -A OUTPUT -p tcp --dport 10050 -j ACCEPT

                      selinux:直接关闭

           配置zabbix_agentd.conf:

                      mv  /etc/zabbix/zabbix_agentd.conf   /etc/zabbix/zabbix_agentd.conf.old                          (备份下原配置文件)

                      vi /etc/zabbix/zabbix_agentd.conf

                      PidFile=/var/run/zabbix/zabbix_agentd.pid

                      LogFile=/var/log/zabbix/zabbix_agentd.log

                      LogFileSize=0

                      Server=127.0.0.1,192.168.186.130       #被动模式

                      ServerActive=192.168.186.130:10051     #主动模式

                      Hostname=Zabbix server

                      Include=/etc/zabbix/zabbix_agentd.d/

                      UnsafeUserParameters=1

###和上面zabbix客户端配置文件数据一样PidFile=/var/run/zabbix/zabbix_agentd.pidLogFile=/var/log/zabbix/zabbix_agentd.logLogFileSize=0Server=127.0.0.1,192.168.186.130ServerActive=192.168.186.130:10051Hostname=Zabbix serverInclude=/etc/zabbix/zabbix_agentd.d/UnsafeUserParameters=1

                      注意:获取数据的方式分为主动模式(ServerActive)和被动模式(Server),(主动,被动是以agent为中心的),如上:server端ip是192.168.186.130,agent端ip是192.168.186.128;主动模式是指:agent端会主动把数据推送给server端,因此要指定server端ip和监听端口;被动模式是指:agent端搜集本机相应数据,server端会到agent端获取agent端搜集的数据,所以要指定server端ip(允许哪台机器能连接agent端)

                      chkconfig zabbix-agent on             (启动zabbix agent)

                      service zabbix-agent start   

           配置SNMP监控方式:

                      注意:因为我们上面已经采用了agent方式监控采集数据,所以snmp这步不需要安装,忽略即可

                      yum -y install net-snmp

                      mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.old

                      vi /etc/snmp/snmpd.conf

                      com2sec mynetwork 192.168.186.130 public_monitor

                      com2sec mynetwork 127.0.0.1 public

                      group MyROGroup v2c mynetwork

                      access MyROGroup "" any noauth prefix all none none

                      view all included .1 80

                      chkconfig snmpd on                     (启动snmpd)

                      service snmpd restart