一、安装Zabbix 5.0
于2021年12月1日更新
一、简介
1.1 常见监控软件
刚学zabbix的时候还是zabbix4.0,现在已经更新到5.0了,温故而知新,没错,我又回来了,现在介绍zabbix 5.0的安装方法。
我们先对常见的监控软件做一个介绍,目前常见的监控软件有
- 老牌Nagios用来监控,但是界面不是很好,一般搭配Cacti来可视化
- OpenFalcon小米监控
- Prometheus:用来监控容器,docker,k8s等
- Grafana用来做可视化,更好看,适用于大屏显示,可搭配Zabbix
1.2 Zabbix生命周期
zabbix分为标准版本跟长期维护版本,标准版本一般为13个月后就不再维护了;长期维护版本一般会维护7年时间。
所以我们一般都用长期维护版本LTS
1.3 监控架构
- zabbix是基于C/S架构的,需要监控的设备都需要安装客户端
- 有主动模式跟被动模式,主动模式是客户端向服务端主动发送监控数据,被动模式是服务端向客户端请求监控数据。
- 使用LNMP或者LAMP显示前端页面
- 常用mysql/pgsql数据库
1.4 配置要求
系统配置要求
规模 | 平台 | CPU/内存 | 数据库 | 受监控的主机数量 |
---|---|---|---|---|
小型 | CentOS | Virtual Appliance | MySQL InnoDB | 100 |
中型 | CentOS | 2 CPU cores/2GB | MySQL InnoDB | 500 |
大型 | RedHat Enterprise Linux | 4 CPU cores/8GB | RAID10 MySQL InnoDB 或 PostgreSQL | >1000 |
极大型 | RedHat Enterprise Linux | 8 CPU cores/16GB | Fast RAID10 MySQL InnoDB 或 PostgreSQL | >10000 |
软件版本要求
软件 | 版本要求 |
---|---|
Apache | 1.3.12 或以上 |
PHP | 5.4.0 或以上 |
MySQL | 5.0.3 - 8.0.x |
这里没有给出Nginx版本要求,尽量安装官方稳定最新版本。
参考资料:版本说明
1.5 关于zabbix agent2
zabbix agent2是zabbix agent的升级版,它跟zabbix agent的区别如下
zabbix agent | zabbix agent2 | |
---|---|---|
开发语言 | C语言 | Go语言和C语言 |
性能 | 独立进程方式运行 | 一个进程多线程方式运行,减少资源消耗,承受高并发 |
二、安装
2.1 环境说明
角色 | 主机名 | IP地址 | 配置 |
---|---|---|---|
Zabbix Server | S01 | 10.154.0.111 | 1C2G |
Zabbix Client | Web01 | 10.154.0.112 | 1C1G |
Zabbix Client | C02 | 10.154.0.113 | 1C1G |
在官网上能找到以上6种安装方式,分别为
- 安装包
- 云厂商
- 虚拟机镜像
- 源码安装
- 客户端
目前官方最新版为5.0 LTS
2.2 安装Nginx
1.找到Nginx的yum源
打开Nginx官方网站,右边download,下拉到网页最后,点击stable and mainline,选择RHEL/CentOS
复制第一个到/etc/yum.repos.d/nginx.repo
文件中,第二个是测试版。
#这里enabled=0表示未启用该源,可以在安装命令中使用命令启用
$ vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
2.安装Nginx
#这里表示启用名为nginx-stable的yum源
yum install nginx --enablerepo=nginx-stable -y
Nginx目前最新版本为1.20.2
2.3 安装PHP
这里安装的是PHP7.2版本
#下载阿里源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release.noarch -y
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
#安装php
yum -y install php72w-cli php72w-fpm php72w-gd php72w-mbstring php72w-bcmath php72w-xml php72w-ldap php72w-mysqlnd
#检查安装情况
rpm -qa | egrep "nginx|php72w"
#启动并设置为开机启动
systemctl start nginx php-fpm.service
systemctl enable nginx php-fpm.service
使用yum install时可以打开yum缓存,这样下载的rpm软件包会存放在本地/var/cache/yum/
文件中。
vim /etc/yum.conf
keepcache=1
#离线安装方式,在目录下使用
yum localinstall
2.4 配置Nginx连接php
1.配置Nginx
$ vim /etc/nginx/conf.d/zabbix.conf
server {
listen 80;
server_name zabbix.tz.com;
root /opt/zabbix;
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
#修改目录权限
chown -R nginx.nginx /opt/zabbix
#检查配置文件,加载配置
nginx -t
systemctl reload nginx
这里制定了域名zabbix.tz.com
,以及路径/opt/zabbix
2.配置PHP
#这里需要将用户跟用户组改为nginx,修改前先备份配置文件
cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.bak
$ vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx
#也可使用sed命令直接修改
sed -ri '/^(user|group)/s#apache#nginx#g' /etc/php-fpm.d/www.conf
egrep '^(user|group)' /etc/php-fpm.d/www.conf
#配置会话保持,配置文件中默认配置了,但是没有创建该目录
$ grep '/var/lib/php/session' /etc/php-fpm.d/www.conf
php_value[session.save_path] = /var/lib/php/session
mkdir -p /var/lib/php/session
chown nginx.nginx /var/lib/php/session
#检查配置文件,加载配置
php-fpm -t
systemctl reload php-fpm.service
3.准备站点目录文件
$ vim /opt/zabbix/info.php
<?php
phpinfo();
?>
#修改权限
chown nginx.nginx /opt/zabbix/info.php
#修改本地hosts文件,我的是win主机
10.154.0.111 zabbix.tz.com
#关闭防火墙,selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
这时使用浏览器访问http://zabbix.tz.com/info.php
,就会访问到phpinfo页面,需要注意的是因为没有做跳转,必须访问info.php这个页面,不然会报403错误。
通过这个页面可以检查一下关键组件是否启用。
2.5 安装Mariadb
这里是安装的mariadb
yum -y install mariadb-server mariadb mariadb-client mariadb-devel
systemctl start mariadb
systemctl enable mariadb
默认mariadb是没有root密码的,直接回车即可进入数据库
mysql -uroot -p
MariaDB [(none)]> select user,host from mysql.user;
会发现有很多空用户,也叫匿名用户这是不安全的,我们需要对MariaDB进行进一步设置
$ mysql_secure_installation
#修改密码也可用如下命令
mysqladmin password root #设置密码
mysqladmin -uroot -proot password toor #修改密码
- 第一步会叫你输入当前root密码,默认为空,所以我们回车
- 是否设置root密码,y,输入两次root账号密码
- 移除匿名用户,y
- 禁止root远程登录,y
- 移除测试数据库,y
- 是否重新加载授权信息,y
设置完数据,那么zabbix数据库如何创建?这里我们可以参考官方给出的配置,选择信息如下
往下拉,有数据库安装代码
mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'tz@123'; #这里设置密码
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
这里要注意的是,修改zabbix数据库的字符集为utf8,不然默认是latin1,会导致中文页面乱码。
2.6 安装后端服务
通过2.5小节,可找到zabbix的官方yum源,安装包为zabbix-release-5.0-1.el7.noarch.rpm
,这是从国外网站下载会很慢,这里我们使用清华源,以下介绍两种安装方式
1.替换官方repo文件为清华源
编辑官方repo文件
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#替换官方repo文件中的yum源地址
vim /etc/yum.repos.d/zabbix.repo
:%s#http://repo.zabbix.com/zabbix/#https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/#g
2.使用清华源
rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
为什么不直接用第二种?因为个人认为这样可以更加深入了解yum源的使用,其实就是我想写了,不能错过每一个学习的机会哈哈。
3.安装服务端跟客户端
yum install -y zabbix-server-mysql zabbix-agent2
4.导入zabbix数据
现在我们只创建了zabbix数据库,现在数据库里还没有数据,需要我们导入
#找到create.sql.gz的路径
rpm -ql zabbix-server-mysql
#导入数据
zcat /usr/share/doc/zabbix-server-mysql-5.0.18/create.sql.gz | mysql -uzabbix -ptz@123 zabbix
5.修改配置文件
vim /etc/zabbix/zabbix_server.conf
DBHost=localhost #取消91行注释,因为数据库在本地,所以不需要修改
DBPassword=tz@123 #修改124行,这里填写数据库密码
#检查修改后的内容
grep ^DB /etc/zabbix/zabbix_server.conf
#去除注释后的文件内容
$ grep '^[a-Z]' /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=tz@123
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
6.启动zabbix服务
systemctl start zabbix-server.service
systemctl enable zabbix-server.service
2.7 安装前端页面
1.解压,修改权限
tar xf zabbix-5.0.18.tar.gz
/bin/cp -rf ui/* /opt/zabbix/
chown -R nginx.nginx /opt/zabbix/
2.修改php配置
$ vim /etc/php.ini
date.timezone = Asia/Shanghai #修改877行
max_execution_time = 300 #修改368行
max_input_time = 600 #修改378行
post_max_size = 80M #修改656行
systemctl reload php-fpm.service
#查看修改后的配置
egrep -n '^(max_|date.time|post_max)' /etc/php.ini
3.浏览器访问http://tz.zabbix.com
现在已经可以访问到zabbix前端安装页面了,安装过程跟安装CMS相似,这里仅列出需要修改项。
如果这里没有MySQL选项,则就是下列组件没有安装
$ rpm -qa | grep php
php72w-mysqlnd-7.2.34-1.w7.x86_64
$ rpm -qa | grep zabbix
zabbix-server-mysql-5.0.18-1.el7.x86_64
这里的Name是给网站起个名字,Zabbix服务的默认端口为10051,客户端默认端口为10050。
安装完成后,这些配置默认存放在/opt/zabbix/conf/zabbix.conf.php
文件中。
这里默认管理账号为Admin,密码为zabbix
4.更改为中文页面
左边侧栏选中User settings-->Language选中Chinese(zh_CN)-->点击Update
2.8 安装客户端
在这里我们启动安装在服务端上的客户端,这样Zabbix服务端就能监控自己了。
1.启动客户端
systemctl enable zabbix-agent2.service
systemctl start zabbix-agent2.service
2.修改配置文件
这里需要修改客户端配置文件将Server
字段改为服务器的ip地址,因为我们是在服务端装的,所以填写127.0.0.1
即可。
vim /etc/zabbix/zabbix_agent2.conf
Server=127.0.0.1 #在80行
#查看去除注释后的配置文件
grep '^[a-Z]' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
3.进入前端页面-->左侧主机选项
可以看到服务端已经能看见自己的状态了
4.进入前端页面-->配置-->主机-->Zabbix server-->模板
可以看到默认给主机添加了两个模板,可根据模板内设定的监控内容对主机进行监控
4.客户端日志查看
tail -f /var/log/zabbix/zabbix_agent2.log
三、排错
3.1 前端页面安装错误
提示模块未启用,也就是可能模块没有装上
#查看bcmath是否安装
rpm -qa | grep bcmath
php72w-bcmath-7.2.34-1.w7.x86_64 #装上了会显示该包
3.2 前端页面500错误
因为是前端报的错,我们先查看Nginx的错误日志
tail -f /var/log/nginx/error.log
提示连接php被拒绝了,这是再看php是否运行
ps -ef | grep php
ss -lntup| grep php
这里我们就能看出问题,我们使用的nginx,这里是以apache用户运行的,需要修改www.conf配置文件,将用户跟用户组改为nginx
$ vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx
systemctl restart php-fpm.service
3.3 另外一种500错误
访问前端页面是空白,什么错误也没显示,这是因为配置文件没有指定错误页面。
我们按F12-->点击网络,发现也是报500错误
查看日志,发现报的错误是打开一个文件报错
检查该文件发现没有此文件,重新复制/bin/cp -rf ui/* /opt/zabbix/
到即可。
3.4 解决中文乱码
yum install wqy-microhei-fonts -y
#替换字体
cd /opt/zabbix/assets/fonts/
mv DejaVuSans.ttf DejaVuSans.ttf.bak
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc DejaVuSans.ttf
刷新前端页面即可,无需重启服务端程序。
3.5 总结
遇到报错,不要慌
1.判断zabbix是否运行
ps -ef | grep zabbix
ss -lntup | grep 10050 #服务端
ss -lntup | grep 10051 #客户端
2.看日志
我是使用LNMP平台搭建的zabbix前端,需要看nginx日志
tail -f /var/log/nginx/error.log
tail -f /var/log/zabbix/zabbix_agent2.log
tail -f /var/log/messages
3.看PHP程序是否起来,检查用户以及所属组是否正确
ps -ef | grep php
ss -lntup| grep php
检查前端目录用户权限跟所属组是否为nginx
检查前端目录文件有没有复制错了,前端页面也就才45M大小
4.检查配置文件
cd /etc/zabbix/zabbix_agent2.d/* #这里是存放自定义监控项的配置文件
cat /etc/zabbix/zabbix_agent2.conf #客户端配置文件
cat /etc/zabbix/zabbix_server.conf #服务端配置文件
四、参考资料
老男孩76期