0、安装zabbix-server之前需要把server依赖环境lnmp安装完成,首先安装依赖包: 1 2 yum groupinstall "Development tools" yum -y install gcc gcc-c++ cmake autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers pcre-devel libaio openssl openssl-devel
1、上传nginx软件包到服务器,如果没有可点击此处下载 创建nginx用户,创建nginx安装目录
1 2 useradd nginx -s /sbin/nologin -M mkdir /data/soft
解压安装包、编译安装
1 2 3 4 tar -zxvf nginx-1.9.15.tar.gz cd nginx-1.9.15 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module make && make install
检查语法
1 /usr/local/nginx/sbin/nginx -t
启动nginx
1 /usr/local/nginx/sbin/nginx
查看进程是否正常启动
1 netstat -tunlp|grep nginx
关闭nginx服务
1 /usr/local/nginx/sbin/nginx -s stop
2、Mysql数据库安装 下载mysql数据库(可自行下载自己喜欢的版本)
1 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
添加用户
1 useradd mysql -s /sbin/nologin -M
解压、重命名
1 2 tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz mv mysql-5.7.18-linux-glibc2.5-x86_64 /application/mysql
改变权限权限、初始化,初始化过程中会默认生成随机密码,记录以便后面更改:
1 2 3 chown -R mysql.mysql /data/mysql/ /data/mysql/bin/mysqld --initialize --user=mysql --basedir=/data/mysql/ --datadir=/data/mysql/data/ /data/mysql/bin/mysql_ssl_rsa_setup --datadir=/data/mysql/data/
修改配置文件 cat /data/mysql/support-files/my_default.cnf
1 2 3 4 5 6 7 8 9 10 [mysqld] user = mysql port = 3306 server_id = 1 socket=/tmp/mysql.sock basedir =/data/mysql/ datadir =/data/mysql/data/ character-set-server=utf8 [client] socket=/tmp/mysql.sock
配合mysql启动命令:
1 2 3 cp my_default.cnf /etc/my.cnf cp mysql.server /etc/init.d/mysqld chmod 755 /etc/init.d/mysqld
修改/etc/init.d/mysqld,文件数据和安装路径
1 2 basedir=/data/mysql/ datadir=/dadta/mysql/data/
启动mysql
1 /etc/init.d/mysqld start
修改mysql密码
1 2 3 4 mysql -u root -p set password=password('root'); grant all privileges on *.* to 'root'@'%' identified by 'root'; flush privileges;
3、安装php服务 安装依赖包
1 yum install -y zlib libxml2 libjpeg freetype libpng gd curl libiconv zlib-devel libxml2-devel libjpeg-devel freetype-devel libpng-devel gd-devel curl-devel openssl-devel libxslt-devel libxslt*
安装libiconv,下载链接
1 2 3 4 tar -zxvf libiconv-1.14.tar.gz cd libiconv-1.14 ./configure --prefix=/usr/local/libiconv make && make install
报错: ./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function) _GL_WARN_ON_USE (gets, “gets is a security hole - use fgets instead”);
vi srclib/stdio.in.h文件,接着搜索到在698行:
1 _GL_WARN_ON_USE (gets, “gets is a security hole - use fgets instead”);
这一行,然后把这个替换成下面三行:
1 2 3 #if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16) _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); #endif
安装Libmcrypt,下载链接
1 2 3 4 5 6 7 8 9 10 tar -zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8 ./configure make && make install /sbin/ldconfig cd libltdl/ ./configure --enable-ltdl-install make && make install cd ../../
安装mhash,下载链接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 tar -zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9 ./configure make && make install cd ../ rm -f /usr/lib64/libmcrypt.* rm -f /usr/lib64/libmhash* ln -s /usr/local/lib/libmcrypt.la /usr/lib64/libmcrypt.la ln -s /usr/local/lib/libmcrypt.so /usr/lib64/libmcrypt.so ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib64/libmcrypt.so.4 ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib64/libmcrypt.so.4.4.8 ln -s /usr/local/lib/libmhash.a /usr/lib64/libmhash.a ln -s /usr/local/lib/libmhash.la /usr/lib64/libmhash.la ln -s /usr/local/lib/libmhash.so /usr/lib64/libmhash.so ln -s /usr/local/lib/libmhash.so.2 /usr/lib64/libmhash.so.2 ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib64/libmhash.so.2.0.1 ln -s /usr/local/lib/libmcrypt-config /usr/lib/libmcrypt-config
安装mcrypt,下载链接
1 2 3 4 5 tar -xf mcrypt-2.6.8.tar.gz cd mcrypt-2.6.8/ /sbin/ldconfig ./configure LD_LIBRARY=/usr/local/lib && make &&make install cd ..
安装php,下载链接
1 2 3 4 5 6 7 tar -zxvf php-5.6.11.tar.gz cd php-5.6.11 修改mysql路径对应为自己的mysql安装路径 ./configure --prefix=/usr/local/php --with-mysql=/data/mysql --with-iconv-dir=/usr/local/libiconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-short-tags --enable-static --with-xsl --with-fpm-user=nginx --with-fpm-group=nginx --enable-ftp --enable-pdo --with-pdo-mysql --enable-opcache=no make && make install cd ..
安装过程提示缺少mysqlclient包的问题,根据版本差异执行以下命令:
1 2 3 ln -s /data/mysql/lib/libmysqlclient.so.18 /usr/lib64/ 或者 ln -s /data/mysql/lib/libmysqlclient.so.20 /usr/lib64/
缺少phar.phar文件
1 2 3 4 5 6 7 8 9 chmod: cannot access `ext/phar/phar.phar': No such file or directory make: [ext/phar/phar.phar] Error 1 (ignored) Build complete. Don't forget to run 'make test'. 解决方法 #cd ext/phar/ #cp ./phar.php ./phar.phar
配置文件(php.ini和php-fpm)
1 2 3 需要把php.ini文件放到lib下面,放到etc下面不生效: cp /data/soft/php-5.6.11/php.ini-production /usr/local/php/lib/php.ini cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
检查语法、启动
1 2 3 4 5 6 7 8 9 10 11 12 /usr/local/php/sbin/php-fpm -t /usr/local/php/sbin/php-fpm cp /data/soft/php-5.6.11/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod a+x /etc/init.d/php-fpm 加入开机启动 chkconfig --add php-fpm chkconfig --level 35 php-fpm on 启动 php-fpm service php-fpm start netstat -anpt | grep php-fpm 停止 php-fpm service php-fpm stop
4、配置nginx使其支持php cat /usr/local/nginx/conf/nginx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 server { listen 80; server_name localhost; location / { root html; index index.php index.html index.htm; # 加入 index.php } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { # 整段注释去掉 root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; # 修改为自己的根目录 include fastcgi_params; } }
创建测试页面
1 echo "<?php phpinfo(); ?>" > /usr/local /nginx/html/info.php
重启 Nginx 、php-fpm
1 2 3 4 service php-fpm stop service php-fpm start nginx -s stop nginx
浏览器访问测试页面
5、安装zabbix-server 下载安装包 wget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz 安装依赖包
1 yum -y install ntpdate net-snmp net-snmp-devel libcurl-devel libevent-devel
设置zabbix用户,编译安装zabbix
1 2 3 4 5 6 7 8 9 10 11 12 13 useradd -r -s /sbin/nologin zabbix tar -zxvf zabbix-4.0.3.tar.gz cd zabbix-4.0.3 ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-openssl # --prefix 指定安装路径 # --enable-server 安装 Server 端 # --enable-agent 安装 Agent 端 # --with-mysql 使用 Mysql 数据库 # --with-net-snmp 支持 SNMP 协议 # --with-libcurl 支持 libcurl URL 监控 make && make install
mysql数据库添加zabbix初始化数据
1 2 3 4 5 6 7 8 mysql> create database zabbixDB character set utf8; # 创建 zabbixDB 并设置编码为 utf8 mysql> grant all on zabbixDB.* to 'zabbix'@'%' identified by 'zabbix'; # 建立授权用户 mysql> flush privileges; # 刷新授权表 ( 虽然 grant 操作是不需要刷新授权表的,但那又如何 ? ) mysql> use zabbixDB; mysql> source /data/soft/zabbix-4.0.3/database/mysql/schema.sql # 导入数据 mysql> source /data/soft/zabbix-4.0.3/database/mysql/images.sql mysql> source /data/soft/zabbix-4.0.3/database/mysql/data.sql mysql> quit
配置 Zabbix 服务
1 2 3 4 5 6 # 服务端启动脚本 shell > cp /data/soft/zabbix-4.0.3/misc/init.d/fedora/core/zabbix_server /etc/init.d/ # 客户端启动脚本 shell > cp /data/soft/zabbix-4.0.3/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ # 网页文件 shell > cp -R /data/soft/zabbix-4.0.3/frontends/php/ /usr/local/nginx/html/zabbix
服务端配置文件 vim /usr/local/zabbix/etc/zabbix_server.conf
1 2 3 4 LogFile=/tmp/zabbix_server.log # 日志文件存放位置 DBName=zabbixDB # 数据库名 DBUser=zabbix # 连接用户 DBPassword=zabbix # 连接密码
服务端启动脚本
1 2 shell > vim /etc/init.d/zabbix_server BASEDIR=/usr/local/zabbix # 修改后的位置 ( 原:/usr/local )
客户端启动脚本
1 2 shell >vim /etc/init.d/zabbix_agentd BASEDIR=/usr/local/zabbix # 修改后的位置 ( 原:/usr/local )
配置zabbix开机启动,并启动Zabbix服务
1 2 3 4 5 6 7 8 shell > chkconfig --add zabbix_server shell > chkconfig --add zabbix_agentd shell > chkconfig --level 35 zabbix_server on shell > chkconfig --level 35 zabbix_agentd on shell > service zabbix_server start Starting zabbix_server: [确定] shell > service zabbix_agentd start Starting zabbix_agentd: [确定]
查看进程启动是否正常
1 2 3 shell > netstat -anpt | grep zabbix ( 注意:要来确认一下到底有没有启动成功,因为当授权用户无法连接数据库时,zabbix_server 是无法启动的,但是启动过程显示成功 ) tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 75399/zabbix_agentd tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 75321/zabbix_server
第一个页面是欢迎页面,直接 Next 第二个页面大多会有多处检测失败,也是出问题最多的位置,修改php文件一下参数: vim /usr/local/php/etc/php.ini
1 2 3 4 5 6 7 post_max_size = 16M max_execution_time = 300 max_input_time = 300 去掉date前面的分号,并添加时区 date.timezone = Asia/Shanghai 去掉always前面的分号 always_populate_raw_post_data = -1
根据页面提示报错还需要修改以下配置:
1 2 3 4 5 6 7 8 9 cd /root/php-5.6.11/ext/openssl/ cp ./config0.m4 ./config.m4 #重新编译php,添加mysqli模块 cd /data/soft/php-5.6.11/ext/mysqli /usr/local/php/bin/phpize ./configure --prefix=/data/soft/mysqli --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/data/mysql/bin/mysql_config make make test make install
配置完成后在php.ini下加入下来一行 vim /usr/local/php/etc/php.ini
安装过程中的其他报错
1 fatal error: ext/mysqlnd/mysql_float_to_double.h: No such file or directory
vim /data/soft/php-5.6.11/ext/mysqli/mysqli_api.c
1 2 3 4 把第36行的 #include "ext/mysqlnd/mysql_float_to_double.h" 修改为 #include "/data/soft/php-5.6.11/ext/mysqlnd/mysql_float_to_double.h"
点击下一步,配置数据库信息,根据自己配置的db信息填写 点击下一步,设置zabbix-server信息 点击下一步,预览设置的db和server的信息 点击下一步,按提示要求,将下载下来的文件放到相应的目录 zabbix-server安装完成
7、zabbix-proxy代理端安装 依赖包安装
1 2 yum -y groupinstall "Development tools" yum -y install gcc gcc-c++ cmake autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers pcre-devel libaio ntpdate net-snmp net-snmp-devel libcurl-devel libevent-devel vim telnet pcre-devel
添加zabbix用户,并编译安装zabbix-proxy
1 2 3 4 5 6 7 8 9 useradd -r -s /sbin/nologin zabbix tar -zxvf zabbix-3.4.2.tar.gz cd zabbix-3.4.2 ./configure --prefix=/usr/local/zabbix --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-openssl # --enable-agent 不是必须的 ( 如果不想监控 Proxy 的话 ) mysql路径如果安装路径不是默认,需要单独指定 ./configure --prefix=/usr/local/zabbix --enable-agent --enable-proxy --with-mysql=/data/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 --with-openssl make && make install
将proxy代理所需要的初始化数据导入到mysql数据库:
1 2 3 4 5 6 mysql -u root -p mysql> create database proxydb character set utf8; # 创建数据库 mysql> grant all on proxydb.* to 'proxy'@'%' identified by 'proxydb'; # 创建授权用户 mysql> flush privileges; # 刷新授权表,虽然不需要~ mysql> use proxydb; mysql> source /root/zabbix-3.4.2/database/mysql/schema.sql # 导入数据,只导入这一个就可以了
修改zabbix_proxy.conf配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@node1 ~]# grep -vP '^$|#' /usr/local/zabbix/etc/zabbix_proxy.conf ProxyMode=0 Server=192.168.197.135 ServerPort=10051 Hostname=node1 LogFile=/tmp/zabbix_proxy.log DBHost=localhost DBName=proxydb DBUser=proxy DBPassword=proxydb ConfigFrequency=60 DataSenderFrequency=60 Timeout=4 LogSlowQueries=3000
参数详解:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ProxyMode=0 # 0 代表 Proxy 处于主动模式,即:Proxy 主动去请求 Zabbix Server 获取监控项;1 代表被动模式 Server=192.168.188.30 #填写Server的IP,Proxy会将收集到的数据发往这个IP。 ServerPort=10051 # Zabbix Server 监听端口,同上只在 Proxy 为主动模式时生效 Hostname=node1 # 这个很重要啦,跟 Agent 的 Hostname 一样重要,注意修改Hostname与web界面的需要添加的主机名称一致 LogFile=/var/log/zabbix/zabbix_proxy.log # Proxy 日志文件位置 LogFileSize=0 PidFile=/var/run/zabbix/zabbix_proxy.pid DBHost=localhost # 连接哪里的数据库 DBName=proxydb #Proxy连接的数据库 DBUser=proxy #连接数据库的用户名 DBPassword=proxypass #连接数据库的秘密 DBSocket=/var/lib/mysql/mysql.sock ProxyLocalBuffer=0 #当数据发送到Server,还要在本地保留多少小时.不保留 ProxyOfflineBuffer=3 #当数据没有发送到Server,在本地保留多少小时,3小时。 HeartbeatFrequency=60 #心跳检测代理在Server的可用性 ConfigFrequency=60 # Proxy 向 Zabbix Server 请求监控项间隔,单位为 秒,默认3600秒. DataSenderFrequency=3 #代理收集到数据后,多久向Server发送一次,单位为 秒 ExternalScripts=/usr/lib/zabbix/externalscripts TLSConnect=psk #加密传输 TLSPSKFile=/usr/local/zabbix/etc/zabbix_proxy.psk #加密传输文件 TLSPSKIdentity=PSK 002 #加密传输标识,与web控制台一致 #DebugLevel=5
如果要加密传输生成秘钥
将秘钥存入/usr/local/zabbix/etc/zabbix_proxy.psk文件 然后再zabbix-server,web控制台添加zabbix-proxy信息
启动 zabbix_proxy
1 /usr/local/zabbix/sbin/zabbix_proxy
启动报错如下
1 /usr/local/zabbix/sbin/zabbix_proxy: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
解决方法
1 ln -s /application/mysql/lib/libmysqlclient.so.20 /usr/lib64/
查看是否启动成功:
1 2 netstat -lnpt | grep zabbix_proxy tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 80154/zabbix_proxy
加入开机启动
1 echo "/usr/local/zabbix/sbin/zabbix_proxy" >> /etc/rc.local