一、zabbix服务端安装
1.1 环境说明
本文基于 CentOS7.9 操作系统进行 zabbix 的编译安装,zabbix版本是 5.4.8。服务器已经安装好 Nginx、PHP、MySQL,基于LNMP一键安装包安装。
LNMP安装参考:https://lnmp.org/install.html。注意 PHP 版本要7.2或者7.2以上。各个软件版本如下:
[root@zabbix ~]# php -v
PHP 7.2.34 (cli) (built: Oct 1 2020 13:37:37) ( NTS )
[root@zabbix ~]# nginx -V
nginx version: nginx/1.20.1
[root@zabbix ~]# mysql -V
mysql Ver 14.14 Distrib 5.7.34, for Linux (x86_64) using EditLine wrapper
下面开始正式安装。
1.2 配置Go语言环境
zabbix 的客户端我打算使用 zabbix-agent2,这是 zabbix 新的客户端,使用 go 语言编写,所以需要 Go 的编译环境。另外 zabbix 5.4 版本增加了一个使用 go 编写的 zabbix web service 程序,用来实现 PDF 的生成,此程序编译也需要使用 go 语言编译环境。注意我这里安装的zabbix版本比较新,要求Go的版本需要1.16。
# 下载二进制包
$ cd /usr/local/src/ && wget https://dl.google.com/go/go1.16.11.linux-amd64.tar.gz
# 解压到指定目录
$ tar -zxvf go1.16.11.linux-amd64.tar.gz -C /usr/local/
# 配置环境变量
$ echo 'export GOROOT=/usr/local/go' >> /etc/profile
$ echo 'export PATH=$PATH:$GOROOT/bin' >> /etc/profile
$ source /etc/profile
# 出现版本提示信息即表示安装完成
$ go version
go version go1.16.11 linux/amd64
# 配置go mod代理
$ go env -w GOPROXY=https://goproxy.cn,direct
1.3 编译安装zabbix-server
# 创建用户管理zabbix
$ useradd zabbix -s /sbin/nologin
# 创建zabbix的PID文件目录和日志目录
$ mkdir -p /var/run/zabbix
$ mkdir -p /var/log/zabbix
$ chown -R zabbix:zabbix /var/run/zabbix
$ chown -R zabbix:zabbix /var/log/zabbix
# 安装依赖包
$ yum -y install gcc gcc-c++ unixODBC-devel mysql-devel libcurl libcurl-devel libevent libevent-devel fping curl-devel libxml2 libxml2-devel snmpd net-snmp-devel net-snmp
# 下载和解压源码包
$ cd /usr/local/src/ && wget https://cdn.zabbix.com/zabbix/sources/stable/5.4/zabbix-5.4.8.tar.gz
$ tar -zxvf zabbix-5.4.8.tar.gz
# 编译安装
$ cd zabbix-5.4.8
$ ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent2 --enable-webservice --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2
$ make && make install
1.4 初始化数据库
zabbix数据库文件在源码包里面有提供,登录MySQL创建数据库,然后导入即可。
$ cd /usr/local/src/zabbix-5.4.8/database/mysql/
$ ls
data.sql double.sql images.sql Makefile Makefile.am Makefile.in schema.sql
# 创建数据库
mysql> create database zabbix character set UTF8 collate utf8_bin;
mysql> use zabbix
# 按照顺序导入三张表
mysql> source schema.sql
mysql> source images.sql
mysql> source data.sql
# 创建用户,用于连接zabbix数据库
mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'zabbix';
mysql> flush privileges;
1.5 配置zabbix-server服务
首先,创建zabbix-server的配置文件:
# 备份自带的配置文件
$ cp /usr/local/zabbix/etc/zabbix_server.conf{,.bak}
# 重新修改配置文件,修改如下:
$ cat /usr/local/zabbix/etc/zabbix_server.conf
PidFile=/var/run/zabbix/zabbix_server.pid
LogFile=/var/log/zabbix/zabbix_server.log
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
# 可以启动一下,看有没有问题
$ /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
# 可以看到端口已经开起来,表明启动成功
$ netstat -lntp | grep zabbix
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 63995/zabbix_server
# 先关掉
$ killall zabbix_server
用命令行的方式停止和启动有点麻烦,用 systemd 来管理 zabbix_server。
$ cat /lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
After=mysql.service
After=mysqld.service
After=mariadb.service
After=postgresql.service
After=pgbouncer.service
After=postgresql-9.4.service
After=postgresql-9.5.service
After=postgresql-9.6.service
After=postgresql-10.service
After=postgresql-11.service
After=postgresql-12.service
After=postgresql-13.service
[Service]
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/var/run/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
启动zabbix_server
$ systemctl daemon-reload
$ systemctl enable --now zabbix-server
$ systemctl start zabbix-server
$ netstat -lntp | grep zabbix
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 64607/zabbix_server
1.6 配置web站点
首先,需要配置前端界面的代码。前端页面代码在zabbix源码包的ui目录下,将其拷贝到Nginx虚拟主机的站点目录里。
# 创建zabbix站点目录
$ mkdir -p /home/wwwroot/zabbix
# 拷贝前端文件
$ cp -rf /usr/local/src/zabbix-5.4.8/ui/* /home/wwwroot/zabbix/
# 授予权限
$ chown -R www:www /home/wwwroot/zabbix
然后,创建Nginx虚拟主机:
$ cat >> zabbix_server.conf << 'EOF'
server
{
listen 80 ;
server_name myzabbix.com;
index index.html index.htm index.php;
root /home/wwwroot/zabbix;
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
EOF
$ nginx -t
$ ngnix -s reload
访问 IP
地址就可以看到web安装界面了。
1.7 web界面安装
初次安装zabbix,选择中文,点击下一步:
这一步会检查本地环境的配置,这里PHP的 max_input_time
的值不符合要求,需要进行修改:
# 编辑php.ini配置文件
$ vim /usr/local/php/etc/php.ini
# 将max_input_time = 60 修改为
max_input_time = 300
# 然后重新加载php-fpm
$ /etc/init.d/php-fpm reload
填写数据库连接信息:
自定义一个web后台的名称:
保持默认,下一步:
检查一下安装参数是否正取,无误就下一步:
下一步出现这个界面就点击完成即可,会自动跳转到登录页面。
登录,默认账号:Admin,密码:zabbix:
登录后的可以看到新版zabbix5的界面了:
至此,zabbix-server端安装完毕。
二、zabbix客户端安装
2.1 配置GO环境
这里选择安装 zabbix-agent2,由于是编译安装,所以,被监控的主机也需要有GO的编译环境。与上文一样操作即可。
# 下载二进制包
$ cd /usr/local/src/ && wget https://dl.google.com/go/go1.16.11.linux-amd64.tar.gz
# 解压到指定目录
$ tar -zxvf go1.16.11.linux-amd64.tar.gz -C /usr/local/
# 配置环境变量
$ echo 'export GOROOT=/usr/local/go' >> /etc/profile
$ echo 'export PATH=$PATH:$GOROOT/bin' >> /etc/profile
$ source /etc/profile
# 出现版本提示信息即表示安装完成
$ go version
go version go1.16.11 linux/amd64
# 配置go mod代理
$ go env -w GOPROXY=https://goproxy.cn,direct
2.2 编译安装zabbix-agent2
# 下载源码包并解压
$ cd /usr/local/src/ && wget https://cdn.zabbix.com/zabbix/sources/stable/5.4/zabbix-5.4.8.tar.gz
$ tar -zxvf zabbix-5.4.8.tar.gz
$ cd zabbix-5.4.8/
# 编译安装zabbix-agent2
$ ./configure --prefix=/usr/local/zabbix-agent2 --enable-agent2
$ make && make install
2.3 配置zabbix-agent2服务
接下来,配置zabbix-agent2
# 首先,创建用户、创建pid文件和日志文件的目录
$ useradd zabbix -s /sbin/nologin
$ mkdir -p /var/{log,run}/zabbix
$ chown -R zabbix:zabbix /var/{run,log}/zabbix
# 编辑配置zabbix-agent2的配置文件
$ cat > /usr/local/zabbix-agent2/etc/zabbix_agent2.conf << EOF
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
SourceIP=192.168.5.81 # 本机的IP
Server=192.168.5.80 # zabbix-server的IP或Proxy的IP
ServerActive=192.168.5.80 # zabbix-server的IP或Proxy的IP
Hostname=192.168.5.81 # 本机IP
EOF
使用systemd管理zabbix-agent2:
$ cat > /lib/systemd/system/zabbix-agent2.service << 'EOF'
[Unit]
Description=Zabbix Agent 2
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/usr/local/zabbix-agent2/etc/zabbix_agent2.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent2
Type=simple
Restart=on-failure
PIDFile=/var/run/zabbix/zabbix_agent2.pid
KillMode=control-group
ExecStart=/usr/local/zabbix-agent2/sbin/zabbix_agent2 -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
EOF
启动zabbix-agent2:
$ systemctl daemon-reload
$ systemctl enable --now zabbix-agent2
$ systemctl start zabbix-agent2
$ netstat -lntp | grep zabbix
tcp6 0 0 :::10050 :::* LISTEN 25532/zabbix_agent2
至此,zabbix-agent2安装完毕。
三、zabbix组件安装
3.1 安装zabbix_get组件
# RPM包安装
$ rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-get-4.0.36-1.el7.x86_64.rpm
# 安装完成后的二进制文件
$ which zabbix_get
/usr/bin/zabbix_get
# 执行
$ zabbix_get -s 192.168.5.81 -p 10050 -k 'system.hostname'
zabbix-agent2