zabbix环境准备、源码编译

环境准备

关闭防火墙和SELinux

1、关闭防火墙:

1
2
3
4
5
6
7
# 关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
# 禁止防火墙开机自启
[root@localhost ~]# systemctl disable firewalld.service
# 查看防火墙状态
[root@localhost ~]# firewall-cmd --state
not running

2、关闭SELinux

1
2
3
4
# 禁用selinux,需重启生效
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 临时关闭selinux,下次重启会恢复
[root@localhost ~]# setenforce 0

安装MySQL5.7

1、CentOS 7上把MySQL从默认软件列表中移除了,用MariaDB来代替。所以安装之前:(1)先删除MariaDB,(2)安装yum源.

1
2
3
4
5
6
7
8
9
10
11
12
# 查看是否有mariadb和Mysql
[root@localhost ~]# rpm -qa | grep -i mariadb
mariadb-libs-5.5.52-1.el7.x86_64
[root@localhost ~]# rpm -qa | grep mysql
# 删除mariadb
[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64

# 添加mysql源
[root@localhost ~]# wget http://repo.mysql.com/mysql57-community-release-el7.rpm
[root@localhost ~]# ls
mysql57-community-release-el7.rpm
[root@localhost ~]# rpm -ivh mysql57-community-release-el7.rpm

2、安装

1
[root@localhost ~]# yum install -y mysql-server mysql-devel mysql

3、配置 mysql 字符集

1
2
3
[root@localhost ~]# vim /etc/my.cnf,在文件末尾加上:character-set-server=utf8
# encoding
character-set-server=utf8

4、启动 mysql 服务

1
# service mysqld start

NOTE:服务的启动、停止、查看状态:

1
2
3
4
5
6
7
[root@localhost ~]# systemctl status mysqld.service   #查看mysql状态
[root@localhost ~]# systemctl start mysqld.service #启动mysql服务
[root@localhost ~]# systemctl stop mysqld.service #停止mysql服务
# 或者
[root@localhost ~]# service mysqld status
[root@localhost ~]# service mysqld start
[root@localhost ~]# service mysqld stop

5、查询首次安装随机密码

1
2
[root@localhost ~]# grep 'temporary password' /var/log/mysqld.log
[Note] A temporary password is generated for root@localhost: Cg:<uu#OK2q-

6、登录数据库,输入上面查询的密码登陆

1
[root@localhost ~]# mysql -uroot -p

7、修改 root 密码

(1)首先,修改 mysql5.7 的默认密码策略:

1
2
3
4
# 密码长度符合即可
mysql> set global validate_password_policy=0;
# 修改密码默认长度为最小值,即4位
mysql> set global validate_password_length=4;

(2)修改密码命令:

1
mysql> set password=password('123456');

(3)退出,使用新密码登陆 mysql

1
[root@localhost ~]# mysql -uroot -p123456

8、对root用户设置远程访问

(1)查询 mysql 库的 user 表的用户

1
2
3
4
5
6
7
8
9
mysql> select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
3 rows in set (0.00 sec)

(2)创建远程访问用户’root’,密码为’123456’:

1
2
3
4
5
6
7
8
9
10
11
mysql> create user 'root'@'%' identified by '123456';
mysql> select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
4 rows in set (0.00 sec)

(3)授权:

1
2
mysql> grant all privileges on *.* to 'root'@'%';
mysql> flush privileges;

(4)在虚拟机外的主机上,使用数据库客户端连接软件(比如Navicat Premium),进行连接测试。

安装Zabbix4.0

NOTE:下面的命令都是对CentOS 7版本的操作系统的操作。
参考:https://www.zabbix.com/documentation/4.0/zh/manual/installation/install_from_packages/rhel_centos

添加源

1、添加 Zabbix 软件仓库

1
2
3
# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
# 如果不能访问,可以使用阿里云的源
# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

2、前端安装的先决条件
Zabbix 前端需要额外的基础安装包。您需要在运行 Zabbix 前端的系统中启用可选 rpms 的软件仓库:

1
# yum-config-manager --enable rhel-7-server-optional-rpms

安装Server/前端/agent

1、安装 Zabbix server,Zabbix 前端(不安装Zabbix proxy),并使用 MySQL 数据库,:

1
2
3
4
# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent
错误:php72w-common conflicts with php70w-common-7.0.33-1.w7.x86_64
您可以尝试添加 --skip-broken 选项来解决该问题
您可以尝试执行:rpm -Va --nofiles --nodigest

报以上错误,添加--skip-broken后重新执行:

1
# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent --skip-broken

创建数据库

1、对于Zabbix server和proxy守护进程而言,数据库是必须的。如果 Zabbix server 和 Zabbix proxy 安装在相同的主机,它们必须创建不同名字的数据库!

2、创建zabbix数据库,zabbix用户(密码也为zabbix),并把zabbix数据库的权限赋给zabbix用户。

1
2
3
4
5
# mysql -uroot -p123456
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> flush privileges;
mysql> quit;

导入数据

1、安装完zabbix server后,数据库脚本文件存放在/usr/share/doc/zabbix-server-mysql-4.0.8/create.sql.gz下。

2、该文件是schema.sql,images.sql,data.sql的合成文件。因此只导入该文件就可以了。

1
2
# 以zabbix用户登录,并打开zabbix数据库,然后在zabbix数据库中执行数据库脚本
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix

为Zabbix server配置数据库

1、编辑zabbix_server.conf文件以使用已创建的数据库:

1
2
3
4
5
# vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

启动Zabbix server进程

1、运行以下命令以启动 Zabbix server 进程:

1
# service zabbix-server start

2、设置系统启动时让zabbix自启:

1
# systemctl enable zabbix-server

启动Apache服务器

1
# service httpd start

Zabbix前端配置

1、对于RHEL 7 和更高版本,Zabbix 前端的 Apache 配置文件位于/etc/httpd/conf.d/zabbix.conf。虽然已经配置了一些 PHP 参数。但是有必要取消 “date.timezone” 注释,并为其 设置正确的时区 。

1
2
3
4
5
6
7
8
9
10
11
12
vim /etc/httpd/conf.d/zabbix.conf
...
<IfModule mod_php5.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga
</IfModule>

# php_value date.timezone Europe/Riga的注释打开,并修改为php_value date.timezone Asia/Shanghai

2、安装前端。
参考图示:https://www.zabbix.com/documentation/4.0/zh/manual/installation/install#installing_frontend

  • 打开http://127.0.0.1/zabbix,可以看到前端安装向导的第一个页面
  • 点Next step(先决条件检查,如果以上步骤都没有问题的话,这里状态全部都是OK)
    • 这里/usr/share/zabbix/assets目录不是可写的,修改其权限:chmod -R 777 /usr/share/zabbix/assets
  • 点Next step(配置数据库连接)
    • 输入之前设置的数据库里zabbix用户的密码,其他保持默认,下一步
  • 点Next step(Zabbix server details,直接默认下一步)
  • 点Next step(Pre-installation summary,安装前总结:直接下一步)
  • 点Next step(安装完成页面)
  • 点Finish
  • 待前端配置完成后,需要重启Apache服务器: service httpd restart
  • Zabbix前端已经就绪!默认的用户名是Admin,密码是zabbix

启动Agent

1、运行以下命令以启动 Zabbix agent:

1
# service zabbix-agent start

编译Zabbix源码

安装依赖

编译源码之前,首先要安装一些依赖库:

1
# yum install -y zlib zlib-devel libevent libevent-devel pcre pcre-devel

配置源码并编译

1、配置源代码

(1)如果要查看所有受支持的配置选项,请在解压缩的 Zabbix 源代码目录中运行:

1
# ./configure --help

(2)配置 Zabbix server 和 Zabbix agent 的源代码。一定要配置--prefix选项,以防止破坏yum安装的zabbix程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# 创建ZbxServer/zabbix目录,用作zabbix的安装目录
# mkdir -p /home/zhang/ZbxServer/zabbix
# 配置 server,agent,使用mysql数据库
# ./configure --prefix=/home/zhang/ZbxServer/zabbix --enable-server --enable-agent --with-mysql
...
Configuration:

Detected OS: linux-gnu
Install path: /home/zhang/ZbxServer/zabbix
Compilation arch: linux

Compiler: cc
Compiler flags: -g -O2

Library-specific flags:
database: -I/usr/include/mysql -m64

Enable server: yes
Server details:
With database: MySQL
WEB Monitoring: no
Native Jabber: no
SNMP: no
IPMI: no
SSH: no
TLS: no
ODBC: no
Linker flags: -L/usr/lib64/mysql -rdynamic
Libraries: -lmysqlclient -lpthread -lm -lrt -ldl -lz -lpthread -levent -lm -ldl -lresolv -lpcre
Configuration file: /home/zhang/ZbxServer/zabbix/etc/zabbix_server.conf
External scripts: /home/zhang/ZbxServer/zabbix/share/zabbix/externalscripts
Alert scripts: /home/zhang/ZbxServer/zabbix/share/zabbix/alertscripts
Modules: /home/zhang/ZbxServer/zabbix/lib/modules

Enable proxy: no

Enable agent: yes
Agent details:
TLS: no
Linker flags: -rdynamic
Libraries: -lz -lpthread -lm -ldl -lresolv -lpcre
Configuration file: /home/zhang/ZbxServer/zabbix/etc/zabbix_agentd.conf
Modules: /home/zhang/ZbxServer/zabbix/lib/modules

Enable Java gateway: no

LDAP support: no
IPv6 support: no

***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************

2、编译安装

1
2
# make
# make install

替代yum安装的zabbix_server

1、查看/usr/sbin/zabbix_server文件的情况,可以发现他是一个指向/etc/alternatives/zabbix-server的软连接,而/etc/alternatives/zabbix-server又是一个指向/usr/sbin/zabbix_server_mysql的软连接。

那么我们考虑用自己编译的zabbix_server替代yum安装的zabbix_server时,可以直接将/usr/sbin/zabbix_server的软连接指向/home/zhang/ZbxServer/zabbix/sbin/zabbix_server

1
2
3
4
5
6
7
8
9
10
11
12
[zhang@localhost zabbix-4.0.8]$ ll /usr/sbin/zabbix_server
lrwxrwxrwx 1 root root 31 5月 31 10:41 /usr/sbin/zabbix_server -> /etc/alternatives/zabbix-server

[zhang@localhost zabbix-4.0.8]$ ll /etc/alternatives/zabbix-server
lrwxrwxrwx 1 root root 29 5月 31 10:41 /etc/alternatives/zabbix-server -> /usr/sbin/zabbix_server_mysql

[zhang@localhost zabbix-4.0.8]$ ll /usr/sbin/zabbix_server_mysql
-rwxr-xr-x 1 root root 2911888 5月 28 17:28 /usr/sbin/zabbix_server_mysql

# zabbix_agentd不同,它不是一个软连接。
[zhang@localhost zabbix-4.0.8]$ ll /usr/sbin/zabbix_agentd
-rwxr-xr-x 1 root root 614848 5月 28 17:28 /usr/sbin/zabbix_agentd

2、操作:

1
2
3
4
5
6
# make install之后,复制zabbix_server到/usr/sbin/目录下,并重命名为zabbix_server_mybuild
[zhang@localhost ~]# cp -f /home/zhang/ZbxServer/zabbix/sbin/zabbix_server /usr/sbin/zabbix_server_mybuild
# 更新软连接
[zhang@localhost ~]# ln -snf /usr/sbin/zabbix_server_mybuild /etc/alternatives/zabbix-server
# 还原为原来的
[zhang@localhost ~]# ln -snf /usr/sbin/zabbix_server_mysql /etc/alternatives/zabbix-server