环境介绍:
操作系统:CentOS Linux release 7.6(最小化安装,关闭selinux和firewalld)
zabbix4.0源下载地址:https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.0.15/zabbix-4.0.15.tar.gz/download
注:源码安装的优缺点:
优点:源码包中包含了程序的源代码,可以根据需求修改;并且编译安装时可以自定义功能和参数
缺点:需要自行编译安装,安装耗时较长且容易出错,对于环境的依赖都需要手动解决
1、首先要安装zabbix源码的依赖以及一些常用工具包
yum -y install wget telnet net-tools python-paramiko gcc gcc-c++ dejavu-sans-fonts python-setuptools python-devel sendmail mailx net-snmp net-snmp-devel net-snmp-utils freetype-devel libpng-devel perl unbound libtasn1-devel p11-kit-devel OpenIPMI unixODBC libevent-devel mysql-devel libxml2-devel libssh2-devel OpenIPMI-devel java-1.8.0-openjdk-devel openldap-devel curl-devel unixODBC-devel
2、然后下载并解压zabbix的源码包
wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.0.15/zabbix-4.0.15.tar.gz/download
tar -xf zabbix-4.0.15.tar.gz
3、接下来要先自定义zabbix的安装目录,这里选择把zabbix安装到/usr/local目录下
mkdir /var/local/zabbix
4、进入到解压后的zabbix源码目录里,准备开始编译安装
cd zabbix-4.0.15
./configure --help #如果想在开始之前了解一下zabbix配置的相关参数,可以使用这个命令,下面会对此命令输出的参数进行补充说明
这里简单说一下编译安装的三步:
1、./configure #是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC等源码包需要的工具,这一步一般用来 生成 Makefile编译文件,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制
2、make #是用来编译的,它从Makefile中读取指令, 这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或Python编写的软件需要调用perl或Python来进行编译)。
3、make install #是用来安装的,它也从Makefile中读取指令,安装到指定的位置。(当然有些软件需要先运行 make check 或 make test来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)
补充:configure的参数的简单说明
./configure -V #查看此源码包的版本
-q #不打印"检查中..."的信息
-n #不创建输出文件
--prefix=PREFIX #指定安装的目录,配置时不使用此参数的话默认会安装到/usr/local目录下
注:参数中还有很多信息,比如zabbix的功能如何启用/禁用等,太多了说不完,请另行查阅相关文档
5、开始configure配置相关参数
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql --with-libxml2 --with-unixodbc --with-net-snmp --with-ssh2 --with-openipmi --with-ldap --with-libcurl --with-iconv
上述参数的解释:
--prefix=/usr/local # 指定zabbix的安装目录为/usr/local/zabbix,其实默认的安装目录也是/usr/local/zabbix,这里可以省略,写出来是方便理解,如果要把zabbix安装到其他目录,则必须用这个参数 注:系统会直接把zabbix的文件安装到路径最后的目录下,不会自行创建zabbix目录,所以如果路径写成了/usr/local,那么zabbix的文件就会在local目录下,而不是/usr/local/zabbix目录下
--enable-server # 打开Zabbix服务器的构建,因为我们要安装zabbix的server端,所以必须打开
--enable-agent # 打开Zabbix客户端实用程序的构建,本机也要被监控,所以也要打开客户端的构建
--enable-java # 打开Zabbix Java网关的构建,启用java监控
--with-mysql # 申明后端数据库为mysql
--with-libxml2 # 使用XML库
--with-unixodbc # 数据库链接采用unixodbc
--with-net-snmp # 网络相关监控采用net-snmp
--with-ssh2 # 启用ssh,执行远程命令时会用到
--with-openipmi # 硬件监控使用openipmi
--with-ldap # 启用ldap,用于ldap认证
--with-libcurl # web相关的监控curl
--with-iconv # Linux 系统自带的用于转换文件编码的命令行工具 ,编译源码需要使用
6、当看到下面的内容时说明没有出错,成功!确认没有问题的话继续下一步安装
***********************************************************
* Now run 'make install' *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
注:此页面往上还会有很多信息,可以复查配置了哪些参数,以及参数的默认路径(因为本次配置中没有指定任何参数的路径,都是默认路径)
5、configure配置成功的话,就可以开始编译和安装了
make #这一步是编译,从configure生成的Makefile中读取指令,全程没有报错那么就代表编译成功
make install #这一步是安装,同样从configure生成的Makefile中读取指令,如果上一步编译成功的话,就可以直接执行此命令,同样全程没有报错那么就代表安装成功
6、上述的步骤都成功的话,那么zabbix就已经成功的安装好了,现在进入之前定义的安装目录就能看到zabbix软件的相关文件了
cd /usr/local/zabbix
ls
bin etc lib sbin share #看到以下几个目录,则zabbix已经成功安装
sbin/zabbix_server -v #可以看到安装的zabbix的版本信息
zabbix_server (Zabbix) 4.0.15
Revision 992445e02c 25 November 2019, compilation time: Dec 19 2019 15:11:16
Copyright (C) 2019 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.
7、接下来需要安装zabbix的后端数据库mysql,因为不是重点,所以这里采用yum安装方式
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
vim /etc/yum.repos.d/mysql-community.repo #将MySQL8.0的enabled=1改为0;将MySQL5.7的enabled=0改为1
yum repolist
yum -y install mysql-community-server
8、安装完成后先直接启动MySQL,然后设定配置文件中控制密码复杂度参数,然后重启MySQL,再进数据库修改密码,然后开始MySQL初始化设定
systemctl start mysqld
vim /etc/my.cnf
在[myqld]下面写入以下两行参数
validate_password_policy=0
validate_password_length=6
保存退出重启MySQL
systemctl restart mysqld
grep password /var/log/mysqld.log #查询数据库初始随机密码
mysql -uroot -p'初始密码'
alter user 'root'@'localhost' identified by '自定义新登录密码';
flush privileges;
9、上述修改密码操作完成后,回到linux命令行,开始初始化MySQL设置
mysql_secure_installation
Change the password for root ? ((Press y|Y for Yes, any other key for No) : #是否修改root登陆密码,前面已经修改了,所以现在不用
Remove anonymous users? (Press y|Y for Yes, any other key for No) : #是否删除匿名用户
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : #是否禁止root远程登录
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : #是否删除测试数据库,一般选择是
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : #是否刷新权限表,一般选择是
10、初始化数据库设置完成后,进入数据库,开始创建zabbix需要的库,并导入表结构
mysql -uroot -p'新登录密码'
create database zabbix character set utf8 collate utf8_bin; #创建zabbix库,字符集设定为utf8
grant all privileges on zabbix.* to zabbix@localhost identified by '123456'; #授权zabbix用户拥有zabbix库的所有权限,访问密码为123456
flush privileges; #刷新权限表
注:源码安装zabbix,zabbix自带的表结构在解压的源码包里,而不在zabbix的安装目录下,这一点要注意。一共要导入三个文件:schema.sql、images.sql、data.sql
mysql -uzabbix -p'123456' zabbix < /root/zabbix-4.0.15/database/mysql/schema.sql
mysql -uzabbix -p'123456' zabbix < /root/zabbix-4.0.15/database/mysql/images.sql
mysql -uzabbix -p'123456' zabbix < /root/zabbix-4.0.15/database/mysql/data.sql
进入数据库看一下
mysql -uroot -p'密码'
use zabbix;
show tables;
```
144 rows in set (0.00 sec) #一共导入了144张表
11、表结构导入好了以后,开始修改zabbix的配置文件zabbix_server.conf
vim /usr/local/zabbix/etc/zabbix_server.conf
确保以下参数设置无误:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
12、接下来需要自行创建zabbix用户
groupadd --system zabbix #创建zabbix用户组,--system表示创建的是系统用户组,权限比一般用户大一些 也可以用-r选项,效果相同
useradd -r -g zabbix -c zabbix zabbix #创建zabbix用户,-r同--system,表示创建的是系统用户,权限比一般用户大一些 -c表示定义用户的 GECOS 字段,不是必须
注:账户的 GECOS 字段:这字段是可选的,通常为了存放信息目的而设的. 通常,它包含了用户的全名.
13、接下来就可以启动zabbix_server了
/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf # -c表示指定zabbix配置文件
netstat -tunlp
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 49149/zabbix_server #zabbix_server已经启动并占用端口10051
vim /tmp/zabbix_server.log
Zabbix agent item "system.users.num" on host "Zabbix server" failed: first network error, wait for 15 seconds #这个报错是因为zabbix-agent没有启动,并且这里还提示了zabbix-server的主机名叫"Zabbix server"
14、接下来开始修改zabbix-agent的配置文件并启动zabbix-agent服务
vim /usr/local/zabbix/etc/zabbix_agentd.conf
确保以下参数无误:
Server=127.0.0.1 #server端就在本机,所以这里是回环地址
ServerActive=127.0.0.1 #server端就在本机,所以这里是回环地址
Hostname=Zabbix server #这里的主机名必须和上面server端的日志里zabbix-server的主机名保持一致
/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf #同样用-c指定配置文件启动
netstat -tunlp
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 49962/zabbix_agentd #zabbix_agent已经启动并占用端口10050
vim /tmp/zabbix_server.log #再看一下zabbix-server的日志,会多出下面一条
enabling Zabbix agent checks on host "Zabbix server": host became available #表示已经检测到zabbix-agent启动了
15、接下来开始配置zabbix前端,因为涉及到httpd和php的配置,这里不是重点,所以这里依然采用二进制安装
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
yum repolist
yum -y install zabbix-web-mysql
接下来的操作就和zabbix的二进制安装一模一样了,请参考