一、安装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

image-20211201212142578

参考资料:官方说明产品路线图

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

image-20211201214505274

在官网上能找到以上6种安装方式,分别为

  1. 安装包
  2. 云厂商
  3. 虚拟机镜像
  4. 源码安装
  5. 客户端

目前官方最新版为5.0 LTS

2.2 安装Nginx

1.找到Nginx的yum源

打开Nginx官方网站,右边download,下拉到网页最后,点击stable and mainline,选择RHEL/CentOS

复制第一个到/etc/yum.repos.d/nginx.repo文件中,第二个是测试版。

image-20211201221212217

#这里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;

image-20211202213415537

会发现有很多空用户,也叫匿名用户这是不安全的,我们需要对MariaDB进行进一步设置

$ mysql_secure_installation

#修改密码也可用如下命令 
mysqladmin password root   #设置密码
mysqladmin -uroot -proot password toor #修改密码 
  • 第一步会叫你输入当前root密码,默认为空,所以我们回车
  • 是否设置root密码,y,输入两次root账号密码
  • 移除匿名用户,y
  • 禁止root远程登录,y
  • 移除测试数据库,y
  • 是否重新加载授权信息,y

设置完数据,那么zabbix数据库如何创建?这里我们可以参考官方给出的配置,选择信息如下

image-20211202214307781

往下拉,有数据库安装代码

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

image-20211202221529883

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 安装前端页面

下载zabbix源码包

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相似,这里仅列出需要修改项。

image-20211203112522701

如果这里没有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

image-20211203112756168

这里的Name是给网站起个名字,Zabbix服务的默认端口为10051,客户端默认端口为10050。

安装完成后,这些配置默认存放在/opt/zabbix/conf/zabbix.conf.php文件中。

image-20211203113029223

这里默认管理账号为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.进入前端页面-->左侧主机选项

image-20211204111650965

可以看到服务端已经能看见自己的状态了

4.进入前端页面-->配置-->主机-->Zabbix server-->模板

image-20211204112012120

image-20211204112045960

可以看到默认给主机添加了两个模板,可根据模板内设定的监控内容对主机进行监控

4.客户端日志查看

tail -f /var/log/zabbix/zabbix_agent2.log

三、排错

3.1 前端页面安装错误

image-20211204112353946

提示模块未启用,也就是可能模块没有装上

#查看bcmath是否安装
rpm -qa | grep bcmath
php72w-bcmath-7.2.34-1.w7.x86_64 #装上了会显示该包

3.2 前端页面500错误

image-20211204112703083

因为是前端报的错,我们先查看Nginx的错误日志

tail -f /var/log/nginx/error.log

image-20211204112849534

提示连接php被拒绝了,这是再看php是否运行

ps -ef | grep php
ss -lntup| grep php

image-20211204115627616

这里我们就能看出问题,我们使用的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错误

image-20211204120042275

查看日志,发现报的错误是打开一个文件报错

image-20211204120126504

检查该文件发现没有此文件,重新复制/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

image-20211204120922627

检查前端目录用户权限跟所属组是否为nginx

image-20211204120844526

检查前端目录文件有没有复制错了,前端页面也就才45M大小

image-20211204121132089

4.检查配置文件

cd /etc/zabbix/zabbix_agent2.d/* #这里是存放自定义监控项的配置文件
cat /etc/zabbix/zabbix_agent2.conf #客户端配置文件
cat /etc/zabbix/zabbix_server.conf #服务端配置文件

四、参考资料

老男孩76期

posted @ 2020-02-15 15:13  努力吧阿团  阅读(805)  评论(0编辑  收藏  举报