[Zabbix] zabbix-server安装配置


本文总阅读量

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

浏览器访问测试页面

1
localhost/info.php

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

6、登陆网页进行配置 Zabbix ( http://your-domain/zabbix )(初始用户名密码为admin/zabbix)

第一个页面是欢迎页面,直接 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
extension=mysqli.so

安装过程中的其他报错

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

如果要加密传输生成秘钥

1
openssl rand -hex 32

将秘钥存入/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
目录
  1. 1. 0、安装zabbix-server之前需要把server依赖环境lnmp安装完成,首先安装依赖包:
  2. 2. 1、上传nginx软件包到服务器,如果没有可点击此处下载
  3. 3. 2、Mysql数据库安装
  4. 4. 3、安装php服务
  5. 5. 4、配置nginx使其支持php
  6. 6. 5、安装zabbix-server
  7. 7. 6、登陆网页进行配置 Zabbix ( http://your-domain/zabbix )(初始用户名密码为admin/zabbix)
  8. 8. 7、zabbix-proxy代理端安装

Proudly powered by Hexo and Theme by Lap
本站访客数人次
© 2020 zeven0707's blog