在CentOS上通过编译源码安装Zabbix服务端

一、环境描述

  1. 虚拟机配置
    CPU:单核
    内存:2 GB
    硬盘:120 GB
    IP:10.24.17.206

  2. 操作系统
    版本:CentOS 6.6 x86_64
    安装方式:Minimal

  3. 虚拟化环境
    VMware Workstation 12.1.0

  4. MySQL
    版本:mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz
    安装方式:TAR压缩包

  5. nginx
    版本:nginx-1.10.1.tar.gz
    安装方式:编译源码安装

  6. PHP
    版本:php-5.6.22.tar.gz
    安装方式:编译源码安装

  7. Java
    版本:jdk-8u51-linux-x64.gz
    安装方式:TAR压缩包

  8. Zabbix
    版本:zabbix-2.4.8.tar.gz
    安装方式:编译源码安装

二、安装MySQL

按照《在CentOS上安装MySQL数据库》的步骤进行安装。

三、安装nginx

按照《在CentOS上安装nginx服务器》的步骤进行安装。

四、安装PHP

按照《在CentOS上安装PHP》的步骤进行安装。

五、安装Java

按照《在CentOS上安装Java》的步骤进行安装。

六、从源码编译安装Zabbix

1. 下载Zabbix源码包

在Shell中运行以下命令:

  1. cd /root/Downloads
  2. wget http://tenet.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.8/zabbix-2.4.8.tar.gz

2. 安装依赖包

在Shell中运行以下命令,安装编译时必须的依赖包:

  1. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/iksemel-1.4-2.el6.x86_64.rpm
  2. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/iksemel-devel-1.4-2.el6.x86_64.rpm
  3. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/fping-2.4b2-10.el6.x86_64.rpm
  4. wget http://cdn.mysql.com//Downloads/Connector-ODBC/5.3/mysql-connector-odbc-5.3.6-1.el6.x86_64.rpm
  5. yum --disablerepo=* --enablerepo=c6-media localinstall -y iksemel-1.4-2.el6.x86_64.rpm iksemel-devel-1.4-2.el6.x86_64.rpm fping-2.4b2-10.el6.x86_64.rpm mysql-connector-odbc-5.3.6-1.el6.x86_64.rpm
  6. yum --disablerepo=* --enablerepo=c6-media install -y OpenIPMI OpenIPMI-devel libssh2 libssh2-devel libcurl libcurl-devel net-snmp net-snmp-devel libxml2 libxml2-devel openldap openldap-devel unixODBC unixODBC-devel

3. 解压缩Zabbix源码包

在Shell中运行以下命令:

  1. tar xvzf zabbix-2.4.8.tar.gz
  2. cd zabbix-2.4.8

4. 创建用户账户

在Shell中运行以下命令,创建用户和组:

  1. groupadd zabbix
  2. useradd -g zabbix zabbix

5. 创建Zabbix数据库

在Shell中运行以下命令,登录MySQL命令行:

  1. mysql -uroot -p

在MySQL命令行中运行以下命令,创建Zabbix数据库:

  1. create database zabbix character set utf8 collate utf8_bin;
  2. grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
  3. GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
  4. FLUSH PRIVILEGES;
  5. quit

若要安装Zabbix Server,则在Shell中运行以下命令,建立服务端数据库的表结构(本文会安装Zabbix Server):

  1. cd /root/Downloads/zabbix-2.4.8/database/mysql/
  2. mysql -uroot -p zabbix < schema.sql
  3. mysql -uroot -p zabbix < images.sql
  4. mysql -uroot -p zabbix < data.sql

若要安装Zabbix Proxy,则在Shell中运行以下命令,建立代理器数据库的表结构(本文不会安装Zabbix Proxy):

  1. cd /root/Downloads/zabbix-2.4.8/database/mysql/
  2. mysql -uroot -p zabbix < schema.sql

若要安装Zabbix Agent,因为探针不需要数据库,所以不用建立数据库的表结构(本文也会安装Zabbix Agent)。

6. 配置源码

Zabbix Server/Proxy/Agent的编译配置选项有所不同,如下所示:

  • 若要编译安装Zabbix Server,则需要使用--enable-server选项(本文会安装Zabbix Server)。

  • 若要编译安装Zabbix Proxy,则需要使用--enable-proxy选项(本文不会安装Zabbix Proxy)。

  • 若要编译安装Zabbix Agent,则需要使用--enable-agent选项(本文也会安装Zabbix Agent)。

本文会安装Zabbix的服务端和探针,编译配置选项如下所示:

  1. cd /root/Downloads/zabbix-2.4.8
  2. ./configure --prefix=/usr/local/Zabbix --enable-server --enable-agent --enable-java --enable-ipv6 --with-mysql --with-jabber --with-libxml2 --with-unixodbc --with-net-snmp --with-ssh2 --with-openipmi --with-ldap --with-libcurl --with-iconv --with-iconv-include --with-iconv-lib

上述选项的具体含义,请参考《Zabbix 2.4.8源码配置选项解析》。

7. 编译安装

在Shell中运行以下命令:

  1. make install

七、配置Zabbix后台

1. 将Zabbix Server配置为自启动服务

在Shell中运行以下命令,新建自启动脚本:

  1. mkdir -p /usr/local/Zabbix/lock
  2. vi /etc/init.d/zabbix-server

在上述文件中输入以下内容:

  1. #!/bin/sh
  2. #
  3. # chkconfig: - 85 15
  4. # description: Zabbix server daemon
  5. # config: /usr/local/Zabbix/etc/zabbix_server.conf
  6. #
  7. ### BEGIN INIT INFO
  8. # Provides: zabbix
  9. # Required-Start: $local_fs $network
  10. # Required-Stop: $local_fs $network
  11. # Default-Start:
  12. # Default-Stop: 0 1 2 3 4 5 6
  13. # Short-Description: Start and stop Zabbix server
  14. # Description: Zabbix server
  15. ### END INIT INFO
  16. # Source function library.
  17. . /etc/rc.d/init.d/functions
  18. if [ -x /usr/local/Zabbix/sbin/zabbix_server ]; then
  19. exec=/usr/local/Zabbix/sbin/zabbix_server
  20. else
  21. exit 5
  22. fi
  23. prog=${exec##*/}
  24. conf=/usr/local/Zabbix/etc/zabbix_server.conf
  25. if [ -f /etc/sysconfig/zabbix-server ]; then
  26. . /etc/sysconfig/zabbix-server
  27. fi
  28. lockfile=/usr/local/Zabbix/lock/zabbix-server
  29. start()
  30. {
  31. echo -n $"Starting Zabbix server: "
  32. daemon $exec -c $conf
  33. rv=$?
  34. echo
  35. [ $rv -eq 0 ] && touch $lockfile
  36. return $rv
  37. }
  38. stop()
  39. {
  40. echo -n $"Shutting down Zabbix server: "
  41. killproc $prog
  42. rv=$?
  43. echo
  44. [ $rv -eq 0 ] && rm -f $lockfile
  45. return $rv
  46. }
  47. restart()
  48. {
  49. stop
  50. start
  51. }
  52. case "$1" in
  53. start|stop|restart)
  54. $1
  55. ;;
  56. force-reload)
  57. restart
  58. ;;
  59. status)
  60. status $prog
  61. ;;
  62. try-restart|condrestart)
  63. if status $prog >/dev/null ; then
  64. restart
  65. fi
  66. ;;
  67. reload)
  68. action $"Service ${0##*/} does not support the reload action: " /bin/false
  69. exit 3
  70. ;;
  71. *)
  72. echo $"Usage: $0 {start|stop|status|restart|try-restart|force-reload}"
  73. exit 2
  74. ;;
  75. esac

在Shell中运行以下命令:

  1. chkconfig zabbix-server on
  2. chmod 755 /etc/init.d/zabbix-server

2. 将Zabbix Agent配置为自启动服务

在Shell中运行以下命令,新建自启动脚本:

  1. vi /etc/init.d/zabbix-agent

在上述文件中输入以下内容:

  1. #!/bin/sh
  2. #
  3. # chkconfig: - 86 14
  4. # description: Zabbix agent daemon
  5. # processname: zabbix_agentd
  6. # config: /usr/local/Zabbix/etc/zabbix_agentd.conf
  7. #
  8. ### BEGIN INIT INFO
  9. # Provides: zabbix-agent
  10. # Required-Start: $local_fs $network
  11. # Required-Stop: $local_fs $network
  12. # Should-Start: zabbix zabbix-proxy
  13. # Should-Stop: zabbix zabbix-proxy
  14. # Default-Start:
  15. # Default-Stop: 0 1 2 3 4 5 6
  16. # Short-Description: Start and stop Zabbix agent
  17. # Description: Zabbix agent
  18. ### END INIT INFO
  19. # Source function library.
  20. . /etc/rc.d/init.d/functions
  21. if [ -x /usr/local/Zabbix/sbin/zabbix_agentd ]; then
  22. exec=/usr/local/Zabbix/sbin/zabbix_agentd
  23. else
  24. exit 5
  25. fi
  26. prog=${exec##*/}
  27. conf=/usr/local/Zabbix/etc/zabbix_agentd.conf
  28. if [ -f /etc/sysconfig/zabbix-agent ]; then
  29. . /etc/sysconfig/zabbix-agent
  30. fi
  31. lockfile=/usr/local/Zabbix/lock/zabbix-agent
  32. start()
  33. {
  34. echo -n $"Starting Zabbix agent: "
  35. daemon $exec -c $conf
  36. rv=$?
  37. echo
  38. [ $rv -eq 0 ] && touch $lockfile
  39. return $rv
  40. }
  41. stop()
  42. {
  43. echo -n $"Shutting down Zabbix agent: "
  44. killproc $prog
  45. rv=$?
  46. echo
  47. [ $rv -eq 0 ] && rm -f $lockfile
  48. return $rv
  49. }
  50. restart()
  51. {
  52. stop
  53. start
  54. }
  55. case "$1" in
  56. start|stop|restart)
  57. $1
  58. ;;
  59. force-reload)
  60. restart
  61. ;;
  62. status)
  63. status $prog
  64. ;;
  65. try-restart|condrestart)
  66. if status $prog >/dev/null ; then
  67. restart
  68. fi
  69. ;;
  70. reload)
  71. action $"Service ${0##*/} does not support the reload action: " /bin/false
  72. exit 3
  73. ;;
  74. *)
  75. echo $"Usage: $0 {start|stop|status|restart|try-restart|force-reload}"
  76. exit 2
  77. ;;
  78. esac

在Shell中运行以下命令:

  1. chkconfig zabbix-agent on
  2. chmod 755 /etc/init.d/zabbix-agent

3. 配置PHP

在Shell中运行以下命令,配置php.ini文件:

  1. vi /usr/local/PHP/etc/php.ini

在上述文件中配置以下参数:

  1. post_max_size = 16M
  2. max_execution_time = 300
  3. max_input_time = 300
  4. date.timezone = Asia/Shanghai
  5. always_populate_raw_post_data = -1

4. 配置unixODBC

在Shell中运行以下命令,创建软链接:

  1. ln -s /usr/lib64/libmyodbc5w.so /usr/lib64/libmyodbc5.so
  2. ln -s /usr/local/MySQL/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18

在Shell中运行以下命令,创建ODBC数据源配置文件:

  1. vi /etc/odbc.ini

上述文件的内容如下所示:

  1. [localhost]
  2. Description = MySQL Localhost Database
  3. Driver = MySQL
  4. Server = 127.0.0.1
  5. User = zabbix
  6. Password = zabbix
  7. Port = 3306
  8. Database = zabbix

在Shell中运行以下命令,测试ODBC数据源配置:

  1. isql -v localhost

若上述命令返回信息如下图所示,则表示ODBC数据源配置正确(若配置正确,则可以使用quit命令退出SQL命令行):

检查ODBC数据源配置

若要利用unixODBC监控其他MySQL数据,则只要仿照该文件中的localhost部分配置即可。

5. 配置Zabbix服务端

在Shell中运行以下命令,配置Zabbix Server:

  1. vi /usr/local/Zabbix/etc/zabbix_server.conf

在上述文件中配置以下参数:

  1. DBHost=localhost
  2. DBName=zabbix
  3. DBUser=zabbix
  4. DBPassword=zabbix
  5. DBSocket=/usr/local/MySQL/sock/mysql.sock

6. 安装Zabbix前端页面

在Shell中运行以下命令,安装前端页面:

  1. mkdir -p /home/www/zabbix
  2. cp -a /root/Downloads/zabbix-2.4.8/frontends/php/* /home/www/zabbix/
  3. chown -R nginx.nginx /home/www/zabbix

7. 重启服务器

在Shell中运行以下命令,重启服务器:

  1. reboot

八、配置Zabbix前端页面

在WEB浏览器中访问如下URL:

  1. http://10.24.17.206/zabbix

进入Zabbix前端安装页面的首页,如下图所示:

Zabbix前端安装页面首页

点击“Next”按钮,进入必要条件检查页面,如下图所示:

必要条件检查页面

若各项配置检查无误,则点击“Next”按钮,进入数据库连接配置页面,如下图所示:

数据库连接配置页面

数据库连接配置完成之后,必须首先点击“Test Connection”按钮,确保配置无误之后,才能点击“Next”按钮,进入Zabbix服务端详情页面,如下图所示:

Zabbix服务端详情页面

填写好服务端主机的IP、端口号和主机名之后,点击“Next”按钮,进入安装前预览页面,如下图所示:

安装前预览页面

确认安装配置信息无误之后,点击“Next”按钮,进入安装结束页面,如下图所示:

安装结束页面

点击“Finish”按钮,Zabbix前端页面便安装完成了。此时,会自动跳转到Zabbix的登录页面,如下图所示:

Zabbix登录页面

默认的用户名和密码分别是Admin和zabbix,进入Zabbix监控的首屏,如下图所示:

Zabbix监控首屏

进入首屏之后,点击首屏菜单中的“Configuration → Hosts”,进入主机配置页面,如下图所示:

主机配置页面

由上图可知,作为Zabbix服务端的这台主机监控状态为“Disabled”,也就是没有对自己进行监控。此时,可以点击红色的“Disabled”,使监控状态变为绿色的“Enabled”,过几分钟刷新页面之后,便会发现Availability栏中的Z图标也会变绿,这就表明这台服务器目前是可用状态,如下图所示:

主机配置页面-可用

至此,在CentOS上通过编译源码来安装Zabbix的过程已经顺利结束,接下来只要在待监控的服务器上安装Zabbix探针,并进行相应的配置就可以了!