Zabbix 3.4编译安装全解读

2019-03-05 16:00:48 浏览数 (1)

前提准备

  • 准备系统环境yum -y install wget vim lrzsz epel-release bash-completion ntpdate ntp # setenforce 0 # vim /etc/sysconfig/selinux SELINUX=disabled # systemctl disable firewalld && systemctl stop firewalld # ntpdate TIME_SERVER

安装Zabbix

通过包管理器安装
  • 如果你希望快速构建测试环境或快速迭代生产环境下的监控系统,或许你应该选择通过包管理器安装,详情请参照:通过包管理器安装Zabbix Server及Agent
源码编译安装
  • 如果你希望构建稳定且持久的生产环境监控系统,你应该选择编译安装(但这不可避免的难以升级),且应尽可能选择LTS(长期支持)版本
  • 下载源码包 root@node2 ~# wget -O /usr/src/zabbix-3.4.7.tar.gz https://sourceforge.net/projects/zabbix/files/ZABBIX Latest Stable/3.4.7/zabbix-3.4.7.tar.gz/download root@node2 ~# cd /usr/src root@node1 src# tar zxvf zabbix-3.4.7.tar.gz
  • 创建用户账户 root@node1 src# groupadd zabbix root@node1 src# useradd -g zabbix -s /sbin/nologin zabbix

如果Zabbix server 和 agent 运行在同一台计算机上,建议使用不同的账户运行Server和Agent。否则,如果两个进程使用了同一个用户,Agent就可以访问Server的配置文件,并可轻易地读取Zabbix中任何管理员级别的用户,比如数据库密码。同时,应避免使用诸如root,bin或其他特殊权限的用户运行Zabbix,因为会存在潜在的安全风险。 ——来自Zabbix官方建议

  1. 准备Zabbix数据库 root@node1 src# yum -y install mariadb-server root@node1 src# systemctl enable mariadb.service root@node1 src# systemctl start mariadb.service root@node1 src# mysql_secure_installation #安全配置 root@node1 src# mysql -uroot -h<YOUR_IP> -p #连接服务器,请将IP更换为实际的数据库服务器地址 # 配置Mariadb Server MariaDB (none)> create database zabbix character set utf8; #创建zabbix数据库。注意,你应该在这里设置字符集,以免带来不必要的后期维护成本 Query OK, 1 row affected (0.01 sec) MariaDB (none)> grant all privileges on zabbix.* to zabbix@localhost identified by 'guomai'; Query OK, 0 rows affected (0.01 sec) #授予zabbix用户在zabbix数据库下的特权,否则无法正常运行 MariaDB (none)> exit Bye root@node1 src# cd zabbix-3.4.7/database/mysql/ root@node1 mysql# mysql -h<YOUR_IP> -uzabbix -p zabbix < schema.sql #导入zabbix数据库初始结构 root@node1 mysql# mysql -h<YOUR_IP> -uzabbix -p zabbix < images.sql root@node1 mysql# mysql -h<YOUR_IP> -uzabbix -p zabbix < data.sql
  2. 安装Zabbix
  3. 准备和检查编译环境 root@node1 mysql# cd ../../ root@node1 zabbix-3.4.7# yum -y install openssl-devel pcre-devel make gcc net-snmp-devel mysql-devel curl-devel libxml2-devel libevent-devel #安装编译及依赖组件 root@node1 zabbix-3.4.7# ./configure --help | less #获取编译帮助 root@node1 zabbix-3.4.7# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openssl # 添加SSL/TLS支持;如未指定prefix,将默认安装到/usr/local
  4. 看到如下图示,即可开始编译
  • 编译 root@node1 zabbix-3.4.7# make install
  • 查看Zabbix目录结构 root@node1 zabbix-3.4.7# cd /usr/local/zabbix/ root@node1 zabbix# yum -y install tree root@node1 zabbix# tree . ├── bin │   ├── zabbix_get │   └── zabbix_sender ├── etc │   ├── zabbix_agentd.conf │   ├── zabbix_agentd.conf.d │   ├── zabbix_server.conf │   └── zabbix_server.conf.d ├── lib ├── sbin │   ├── zabbix_agentd │   └── zabbix_server └── share ├── man │   ├── man1 │   │   ├── zabbix_get.1 │   │   └── zabbix_sender.1 │   └── man8 │   ├── zabbix_agentd.8 │   └── zabbix_server.8 └── zabbix ├── alertscripts └── externalscripts
  • directories, 10 files
  • 编辑Zabbix server主配置文件
  • 配置Zabbix数据库信息 root@node1 zabbix# vim etc/zabbix_server.conf # DBHost=localhost db服务器ip,本示例为本机,故localhost即可(注:需事先在Mariadb/MySQL中授权) DBName=zabbix #库名,默认zabbix DBUser=zabbix #账户名,默认zabbix DBPassword=guomai #数据库密码,需自行配置 DBPort=3306 #服务端口,默认3306
  • 添加PATH环境变量 root@node1 zabbix# echo "export PATH=/usr/local/zabbix/sbin:$PATH" >> /etc/profile.d/zabbix.sh root@node1 zabbix# source /etc/profile.d/zabbix.sh root@node1 zabbix# echo $PATH /usr/local/zabbix/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  • 设置开机自启 root@node1 zabbix# echo "/usr/local/zabbix/sbin/zabbix_server" >> /etc/rc.d/rc.local #zabbix server端 root@node1 zabbix# echo "/usr/local/zabbix/sbin/zabbix_agentd" >> /etc/rc.d/rc.local #zabbix agent端 root@node1 zabbix# chmod x /etc/rc.d/rc.local
  • 准备Web服务器并启动Zabbix Web。注:如果你是在CentOS 6上使用Zabbix 3.X,那么你可能需要编译安装PHP(≥5.4),当然你也可以直接在CentOS 6上使用较低版本的Zabbix版本,例如:Zabbix 2.X root@node1 zabbix# yum -y install php #安装php会自动安装Httpd,反之不成立;如果web服务器打算使用Nginx,则建议使用php-fpm # cp -r /usr/src/zabbix-3.4.8/frontends/php/ /usr/local/nginx/html/zabbix #如果是Nginx root@node1 zabbix# cp -r /usr/src/zabbix-3.4.7/frontends/php/ /var/www/html/zabbix #安装Zabbix Web # 配置web server中的php root@node1 zabbix# systemctl enable httpd.service root@node1 zabbix# systemctl start httpd.service root@node1 zabbix# zabbix_server #如果你想使用特定的配置文件启动Zabbix-server守护进程,可以使用zabbix_server -c CONFIG_FILE_PATH
  • 访问Web install页面
  • 打开浏览器,输入:http://YOUR_ZABBIX_SERVER_IP/zabbix
  • 你可能遇到如下的错误提示(这取决于你的系统环境)

要解决上面的问题,你需要进行如下配置:

代码语言:javascript复制
[root@node1 zabbix-3.4.7]# yum -y install php-xmlwriter php-xmlreader php-gd php-bcmath php-mbstring php-mysql #当然,你也可以事先安装这些用到的PHP组件
[root@node1 ~]# vim /etc/php.ini 
  #post_max_size = 8M
  post_max_size = 16M
  #max_input_time = 60
  max_input_time = 300
  #max_execution_time = 30
  max_execution_time = 300
  ;date.timezone =
  date.timezone = Asia/Shanghai
[root@node1 ~]# systemctl restart httpd
  • 继续安装。配置数据库连接,并确认Zabbix Server信息
  • 下载PHP配置文件到Zabbix Web的根目录下。如果你用的是SecureCRT或Xshell,使用rz将配置文件上传到Web home目录,然后刷新当前页面即可
  • 安装完成。

使用Zabbix

  • 访问:http://YOUR_ZABBIX_SERVER_IP/zabbix。默认登录账户:Admin,密码:zabbix
附:你可能会遇到的一些包依赖关系错误及解决方法
代码语言:javascript复制
① ERROR 1452 (23000) at line 8095: Cannot add or update a child row: a foreign key constraint fails (`zabbix`.`sysmaps_elements`, CONSTRAINT `c_sysmaps_elements_2` FOREIGN KEY (`iconid_off`) REFERENCES `images` (`imageid`)) 
#必须先导入images.sql,再导入data.sql,否则data.sql将因为找不到images资源而导入失败

② configure: error: MySQL library not found
# yum -y install mysql-devel

③ configure: error: LIBXML2 library not found
# yum -y install libxml2-devel

④ configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config
# yum -y install net-snmp-devel ##可通过yum provides PROGRAM_NAME反向查找

⑤ configure: error: Unable to use libevent (libevent check failed)
# yum -y install libevent-devel

⑥ configure: error: Curl library not found
# yum -y install curl-devel

⑦ zabbix_server: error while loading shared libraries: libmariadb.so.3: cannot open shared object file: No such file or directory
# vi /etc/ld.so.conf
  include ld.so.conf.d/*.conf
  /usr/local/mysql/lib #mysql编译安装的lib目录
# ldconfig
# zabbix_server

0 人点赞