结合nginx编译安装zabbix3.4

结合nginx编译安装zabbix3.4

Administrator 780 2018-07-11

本文主要演示如何编译安装zabbix3.4,并采用LNMP为zabbix提供web访问的相关配置。

编译安装

  • 首先需要安装php环境,编译安装php时,需要增加bcmath、ldap、sockets、gettext模块,安装ldap时需要安装openldap-devel依赖包,并执行cp -frp /usr/lib64/libldap* /usr/lib/命令;或者编译时增加--enable-bcmath --enable-sockets --with-gettext --with-ldap=shared;

  • 下载zabbix源码包并解压,并安装依赖包net-snmp-devellibevent-devel

  • 进入zabbix源码目录,执行编译安装,编译参数如下:

    ./configure --prefix=/usr/local/zabbix-3.4.11/ --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
    
    make && make install
    

    如果需要开启zabbix-proxy功能,可以增加--enable-proxy参数。

  • 添加zabbix用户:

    useradd -s /sbin/nologin -M zabbix
    
  • 为zabbix创建数据库、设置字符集,并为其创建MySQL登陆用户,在MySQL命令行内执行下面的SQL语句:

    create database zabbix default character set utf8 collate utf8_bin;
    
    grant all on zabbix.* to 'zabbix'@'localhost' identified by '123456';
    
  • 然后导入zabbix提供的数据库sql文件,sql文件在zabbix源码包的database目录内,根据使用的数据库选择对应的数据库目录,这里使用MySQL,zabbix提供了三个sql文件,分别是data.sqlimages.sqlschema.sql,如果是proxy服务,则只需要导入schema.sql,zabbix-server则需要导入全部的三个数据库文件:

    mysql -uroot -p123456 zabbix < database/mysql/schema.sql
    mysql -uroot -p123456 zabbix < database/mysql/images.sql
    mysql -uroot -p123456 zabbix < database/mysql/data.sql
    

    需要注意导入的数据库文件顺序不能错,否则会报错。

配置zabbix

服务端配置

  • 编译安装的zabbix,配置文件在安装目录下的etc目录中:

    $ ls /usr/local/zabbix-3.4.11/etc/
    zabbix_agentd.conf  zabbix_agentd.conf.d  zabbix_server.conf  zabbix_server.conf.d
    
  • 修改zabbix_server.conf配置文件中下面几个参数:

    DBHost=localhost
    DBName=zabbix
    DBUser=zabbix
    DBPassword=123456
    DBPort=3306
    
  • 然后从源码包复制启动脚本到/etc/init.d目录下:

    cp /usr/local/src/zabbix-3.4.11/misc/init.d/fedora/core5/* /etc/init.d/
    
  • 修改启动脚本里zabbix启动命令路径:

    # 修改/etc/init.d/zabbix_server
    ZABBIX_BIN="/usr/local/sbin/zabbix_server"
    修改为
    ZABBIX_BIN="/usr/local/zabbix-3.4.11/sbin/zabbix_server"
    
    # 修改/etc/init.d/zabbix_agentd
    ZABBIX_BIN="/usr/local/sbin/zabbix_agentd"
    修改为
    ZABBIX_BIN="/usr/local/zabbix-3.4.11/sbin/zabbix_agentd"
    
  • 启动zabbix,出现报错libmysqlclient.so.20不存在:

    [root@evobot zabbix-3.4.11]# systemctl status zabbix_server -l
    ● zabbix_server.service - SYSV: Zabbix Monitoring Server
       Loaded: loaded (/etc/rc.d/init.d/zabbix_server; bad; vendor preset: disabled)
       Active: failed (Result: exit-code) since 二 2018-07-10 15:51:15 CST; 4s ago
         Docs: man:systemd-sysv-generator(8)
      Process: 21543 ExecStart=/etc/rc.d/init.d/zabbix_server start (code=exited, status=1/FAILURE)
    
    7月 10 15:51:15 evobot systemd[1]: Starting SYSV: Zabbix Monitoring Server...
    7月 10 15:51:15 evobot zabbix_server[21543]: Starting Zabbix Server: /usr/local/zabbix-3.4.11/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
    7月 10 15:51:15 evobot zabbix_server[21543]: [失败]
    7月 10 15:51:15 evobot systemd[1]: zabbix_server.service: control process exited, code=exited status=1
    7月 10 15:51:15 evobot systemd[1]: Failed to start SYSV: Zabbix Monitoring Server.
    7月 10 15:51:15 evobot systemd[1]: Unit zabbix_server.service entered failed state.
    7月 10 15:51:15 evobot systemd[1]: zabbix_server.service failed.
    
    
    • 这是因为我的MySQL不是yum安装,所以需要执行下面的命令:
    ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20
    
  • 默认编译安装的zabbix的日志文件在/tmp目录下,使用service zabbix_server start启动zabbix。

虚拟主机配置

  • 这里我使用nginx作为zabbix的web服务,安装nginx的步骤不再演示,在nginx虚拟主机目录创建新的虚拟主机配置文件zabbix.conf,内容如下:

    server
    {
        listen 80;
        server_name monitor.evobot.cn;
        index index.html index.htm index.php;
        root /var/www/zabbix;
        access_log /tmp/zabbix.log combined_realip;
    
        location ~ .php
        {
            include fastcgi_params;
            fastcgi_pass unix:/tmp/php-fcgi.sock;
            fastcgi_index index.php;
            set $path_info "";
            set $real_script_name $fastcgi_script_name;
            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$")
            {
                set $real_script_name $1;
                set $path_info $2;
            }
            fastcgi_param SCRIPT_FILENAME /var/www/wordpress$fastcgi_script_name;
            fastcgi_param SCRIPT_NAME $real_script_name;
            fastcgi_param PATH_INFO $path_info;
        }
    
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires 7d;
            access_log off;
        }
    
        location ~ .*\.(js|css)$
        {
            expires 12h;
            access_log off;
        }
    }
    
    
  • 拷贝zabbix的前端文件到nginx中配置的虚拟主机目录/var/www/zabbix下,zabbix的前端文件位于源码包的frontends/php/目录下:

    $ mkdir /var/www/zabbix
    $ cp -rp /usr/local/src/zabbix-3.4.11/frontends/php/* /var/www/zabbix/
    
    
  • 完成后使用浏览器访问zabbix安装界面即可,在安装的最后一步时,会提示需要下载zabbix.conf.php文件,按提示下载并上传到/var/www/zabbix/conf完成安装。