OpenEuler22.03 LTS部署Zabbix

以下文档部分参考:Zabbix 6.2 安装:国产系统篇(OpenEuler)-zabbix 5.0安装

主机拓扑图

主机名 ip 硬盘 cpu 备注
zabbix-server 192.168.48.101 100g 2v 主控
zabbix-agent 192.168.48.102 100g 2v 测试机

基础配置

操作节点:[server]

不要一股脑的复制,注意修改网卡的名字,我这里是ens33,包括修改ip段,比如我的是192.168.48.你就要修改成你的172.8.3.最后那一个主机位就不用管,其他不变

1
vi system_init.sh
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/bin/bash
if [ $# -eq 2 ];then
echo "设置主机名为:$1"
echo "ens33设置IP地址为:192.168.48.$2"
else
echo "使用方法:sh $0 主机名 主机位"
exit 2
fi

echo "--------------------------------------"
echo "1.正在设置主机名:$1"
hostnamectl set-hostname $1

echo "2.正在关闭firewalld、selinux"
systemctl disable firewalld &> /dev/null
systemctl stop firewalld
sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config
setenforce 0


echo "3.正在设置ens33:192.168.48.$2"
cat > /etc/sysconfig/network-scripts/ifcfg-ens33 <<EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens33
UUID=53b402ff-5865-47dd-a853-7afcd6521738
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.48.$2
GATEWAY=192.168.48.2
PREFIX=24
DNS1=192.168.48.2
DNS2=114.114.114.114
EOF
nmcli c reload
nmcli c up ens33


echo "4.新增华为云源"
mkdir /etc/yum.repos.d/bak/
cp /etc/yum.repos.d/* /etc/yum.repos.d/bak/
sleep 3
#切换为华为云,下载速度更快
sed -i 's/\$basearch/x86_64/g' /etc/yum.repos.d/openEuler.repo
sed -i 's/http\:\/\/repo.openeuler.org/https\:\/\/mirrors.huaweicloud.com\/openeuler/g' /etc/yum.repos.d/openEuler.repo

echo "5.更新yum源软件包缓存"
yum clean all && yum makecache

echo "6.添加hosts解析"
cat > /etc/hosts <<EOF
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.48.101 zabbix-server
192.168.48.102 zabbix-agent
EOF

echo "7.安装chrony服务,并同步时间"
yum install chrony -y
systemctl enable chronyd --now
timedatectl set-timezone Asia/Shanghai
timedatectl set-local-rtc 1
timedatectl set-ntp yes
chronyc -a makestep
chronyc tracking
chronyc sources

echo "8.必备工具安装"
yum install wget psmisc vim net-tools telnet socat device-mapper-persistent-data lvm2 git -y

echo "9.重启"
reboot

运行

1
2
3
4
5
6
sh system_init.sh 主机名  主机位

[zabbix-server] sh system_init.sh zabbix-server 101

[zabbix-agent] sh system_init.sh zabbix-agent 102

zabbix-server安装

zabbix服务段安装

操作节点:[server]

1
2
3
4
5
#创建zabbix用户
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
#创建zabbix安装目录
mkdir -p /app/zabbix

下载 Zabbix 源码

image-20241113000651160

1
2
3
#server端下载源码包,你也可以手动下载上传到虚拟机即可,我是放到了root目录下
wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.5.tar.gz
tar -zxvf zabbix-7.*.tar.gz

开始编译安装

  • prefix 指定安装目录。
  • enable-server 启用 Zabbix Server。
  • enable-agent 启用 Zabbix agent。
  • with-mysql 后端指定数据库为mysql。
  • net-snmp 支持 snmp 协议。

其实还有很多参数,大家可以参考 ./configure –help 自行研究 ,官方文档里也有案例

1
2
3
4
5
#安装需要的组件
dnf -y install mysql-devel libevent-devel pcre-devel
#开始编译(/app/zabbix)是zabbix的安装目录,以下编译会安装在/app/zabbix
mv zabbix-7.0.5 zabbix && cd zabbix
./configure --prefix=/app/zabbix --enable-server --enable-agent --with-mysql

出现这个页面是编译完成

image-20241113003302745

1
2
3
#开始安装
make install
#安装完成!

image-20241113003537003

整体目录情况

image-20241113003611525

PHP部分

openEuler 22.04 自带8.0版本,所以符合6.0以上版本的需求。

image-20241113003920331

1
dnf -y install php php-fpm

Apache

由于安装PHP会自动安装apache(httpd)服务,所以安装过程并未提及apache的安装过程

现在移动zabbix前端网页文件到/var/http/html(这是apache网页的运行根目录文件)

1
2
3
4
5
6
7
8
9
[root@zabbix-sever zabbix]# pwd
/root/zabbix
#我现在/root/zabbix是刚刚解压源码包的地方,别走错了,看你的位置在哪
cd /root/zabbix
#这个命令会递归地复制 ui 目录下的所有内容,包括子目录和文件,到 /var/www/html/ 目录中并且保留文件的权限和属性
cp -rp ui/* /var/www/html/
#启动apache
systemctl start httpd && systemctl enable httpd
systemctl start php-fpm && systemctl enable php-fpm

访问192.168.48.101

选择中文

image-20241113004815682

这里显示有些php扩展没下载等

image-20241113004839965

1
dnf -y install php-gd php-mysqlnd php-bcmath php-xml php-mbstring

安装完依赖此时不需要重启任何服务,接下来调整PHP的配置文件。

根据报错来调整三个值分别是 post_max_size,max_execution_time,max_input_time

  • 所要求的最小PHP post大小是16M (配置项”post_max_size”)。
  • 所要求的最小PHP脚本执行时间是300 (配置项 “max_execution_time”)。
  • 所要求的PHP脚本最小解析时间是300 (配置项”max_input_time”)。
1
2
3
4
#一键修改命令
sed -i 's/post_max_size = 8M/post_max_size = 16M/g' /etc/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /etc/php.ini
sed -i 's/max_input_time = 60/max_input_time = 300/g' /etc/php.ini

改完之后需要重启php-fpm服务。

1
systemctl restart php-fpm

刷新页面就ok了

image-20241113005733127

安装mysql

安装mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
dnf -y install mysql-server
systemctl start mysqld && systemctl enable mysqld
mysql_secure_installation

#提示信息:VALIDATE PASSWORD COMPONENT can be u ····· gh. Would you like to setup VALIDATE PASSWORD component?
#验证密码组件可用于测试密码和提高安全性。它检查密码的强度,并允许用户只设置那些足够安全的密码。要设置VALIDATE PASSWORD组件吗?
Press y|Y for Yes, any other key for No: NO (填NO)
New password:
Re-enter new password:
#输入你的秘密,我这里是qianyios007
#是否删除匿名用户
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
#是否禁止root用户远程登录
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : No
#是否删除测试数据库?
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
#是否重新加载特权表吗?
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

# 验证登入数据库
mysql -u root -pqianyios007

image-20241113002206219

创建Zabbix所需要的数据库和用户

1
2
3
4
5
6
7
8
9
10
mysql -u root -pqianyios007
#创建一个名为zabbix的新数据库,并指定字符集为utf8mb4,排序规则为utf8mb4_bin。
create database zabbix character set utf8mb4 collate utf8mb4_bin;
#创建一个新用户zabbix,该用户只能从localhost连接,密码设置为123456。
create user zabbix@localhost identified by '123456';
#授予zabbix用户对zabbix数据库的所有表的所有权限。
grant all privileges on zabbix.* to zabbix@localhost;
#设置全局变量log_bin_trust_function_creators为1,这允许创建存储函数时不受二进制日志的限制
set global log_bin_trust_function_creators = 1;
quit;

导入Zbbix 的数据文件

1
2
3
4
5
6
7
8
cd /root/zabbix
cat database/mysql/schema.sql | mysql -uzabbix -p123456 zabbix
cat database/mysql/images.sql | mysql -uzabbix -p123456 zabbix
cat database/mysql/data.sql | mysql -uzabbix -p123456 zabbix
mysql -u root -pqianyios007
#相关数据导入完成后关掉log_bin_trust_function_creators功能。
set global log_bin_trust_function_creators = 0;
quit;

完成这部分,就可以在前端进入数据库配配置界面。

image-20241113011128139

image-20241113011239994

image-20241113011250313

报错了,此时会出现无法创建,这是由于目标目录没有权限导致的,可以点击蓝色字体(网页中下载配置文件)将配置得好的文件下载下来,然后传到前端提示的目录里,该文这里路径为:

1
/var/www/html/conf/

image-20241113011413414

自行下载用工具传过去即可

image-20241113011854494

放过去之后刷新即可

管理员用户名密码为Admin/zabbix

image-20241113012114792

服务端安装成功!

image-20241113012126819

zabbix-server基本配置

这里可以看姐server端是没有启动的,说明要对于他进行配置

image-20241113082126854

首先来说说zabbix server 目录的一些情况

  • 程序文件路径为/app/zabbix/sbin/
  • 配置文件路径为/app/zabbix/etc/
  1. 编辑配置文件
1
2
3
sed -i 's|^LogFile=.*|LogFile=/var/log/zabbix/zabbix_server.log|' /app/zabbix/etc/zabbix_server.conf
sed -i '/^# DBPassword=/a \ DBPassword=123456' /app/zabbix/etc/zabbix_server.conf
sed -i '/^# PidFile=\/tmp\/zabbix_server.pid$/a \ PidFile=/var/log/zabbix/zabbix_server.pid' /app/zabbix/etc/zabbix_server.conf
  1. 制作zabbix server守护文件
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
cat > /usr/lib/systemd/system/zabbix-server.service <<"EOF"
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
After=postgresql.service
After=pgbouncer.service
After=postgresql-13.service

[Service]
Environment="CONFFILE=/app/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
#pid文件要改哦,看你在哪个位置
PIDFile=/var/log/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/app/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0

[Install]
WantedBy=multi-user.target
EOF

由于是源码编译安装,所以存放日志文件的目录不存在,所以需要自行创建和给予权限

1
2
mkdir /var/log/zabbix
chown zabbix:zabbix /var/log/zabbix

启动zabbix-server和查看服务的状态。

1
2
systemctl start zabbix-server && systemctl enable zabbix-server
systemctl status zabbix-server

image-20241113083832700

查看日志也正常

1
tail -f /var/log/zabbix/zabbix_server.log

image-20241113084050766

查看网页已经在运行了
image-20241113084136313

zabbix-agent安装

server端安装agent

操作节点[server]

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
#制作 Zabbix agent 守护文件
cat > /usr/lib/systemd/system/zabbix-agent.service<<"EOF"
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/app/zabbix/etc/zabbix_agentd.conf"
Type=simple
Restart=on-failure
#PID文件要改
PIDFile=/var/log/zabbix/zabbix_agentd.pid
KillMode=control-group
ExecStart=/app/zabbix/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
EOF
#修改agent配置文件也是和server一样修改日志文件和pid文件位置
sed -i 's|^LogFile=.*|LogFile=/var/log/zabbix/zabbix_agentd.log|' /app/zabbix/etc/zabbix_agentd.conf

sed -i '/^# PidFile=\/tmp\/zabbix_agentd.pid$/a \ PidFile=/var/log/zabbix/zabbix_agentd.pid' /app/zabbix/etc/zabbix_agentd.conf
#启动zabbix agent
systemctl daemon-reload
systemctl start zabbix-agent && systemctl enable zabbix-agent

这样在server主机的zabbix的server端和agent端已经安装好了,但是现在就是说只有一个agent端也就是本机,只能监控自己,现在就教你们去监控其他机子

image-20241113143603974

其他主机安装agent

操作节点:[zabbix-agent]

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
#agent端下载源码包,你也可以手动下载上传到虚拟机即可,我是放到了root目录下
wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.5.tar.gz
tar -zxvf zabbix-7.*.tar.gz
#创建zabbix用户
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
#创建zabbix安装目录
mkdir -p /app/zabbix
#安装需要的组件
dnf -y install mysql-devel libevent-devel pcre-devel
#开始编译(/app/zabbix)是zabbix的安装目录,以下编译会安装在/app/zabbix 这里只需要启用agent即可server不用
mv zabbix-7.0.5 zabbix && cd zabbix
./configure --prefix=/app/zabbix --enable-agent
#开始安装
make install
#修改配置文件
sed -i 's|^LogFile=.*|LogFile=/var/log/zabbix/zabbix_agentd.log|' /app/zabbix/etc/zabbix_agentd.conf
sed -i '/^# PidFile=\/tmp\/zabbix_agentd.pid$/a \ PidFile=/var/log/zabbix/zabbix_agentd.pid' /app/zabbix/etc/zabbix_agentd.conf
#修改测试机agent配置文件里的serve-ip,这里要填server机的ip(修改192.168.48.101即可)
sed -i 's/Server=127.0.0.1/Server=192.168.48.101/g' /app/zabbix/etc/zabbix_agentd.conf
sed -i 's/ServerActive=127.0.0.1/ServerActive=192.168.48.101/g' /app/zabbix/etc/zabbix_agentd.conf
#zabbix-agent修改成你测试机的主机名
sed -i 's/Hostname=Zabbix server/Hostname=zabbix-agent/g' /app/zabbix/etc/zabbix_agentd.conf

#制作 Zabbix agent 守护文件
cat > /usr/lib/systemd/system/zabbix-agent.service<<"EOF"
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/app/zabbix/etc/zabbix_agentd.conf"
Type=simple
Restart=on-failure
#PID文件要改
PIDFile=/var/log/zabbix/zabbix_agentd.pid
KillMode=control-group
ExecStart=/app/zabbix/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
EOF
#由于是源码编译安装,所以存放日志文件的目录不存在,所以需要自行创建和给予权限
mkdir /var/log/zabbix
chown zabbix:zabbix /var/log/zabbix
#启动zabbix agent
systemctl daemon-reload
systemctl start zabbix-agent && systemctl enable zabbix-agent

zabbix页面配置测试机监控端

image-20241113150026254

image-20241113150133543

image-20241113150518858

最终效果,点击添加即可

image-20241113150550231

image-20241113152007961

测试端的机子已经添加好了

测试

Zabbix Web 配置模板(监听 Port 80)

操作节点:[zabbix-agent]

安装nginx并配置网页

因为没有适配openeuler的版本,这里直接用centos8的来代替,兼容的没关系,你可以根据你的系统去自行替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
cat >/etc/yum.repos.d/nginx.repo << "EOF"
[nginx-stable]
name=nginx stable repo
#baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
#原本是$releasever的,但是没有openeuler的版本直接用8来代替也就是centos8,openeuler兼容centos
baseurl=http://nginx.org/packages/centos/8/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
#baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
baseurl=http://nginx.org/packages/mainline/centos/8/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
yum install nginx -y
systemctl enable nginx --now

这样就可以随时安装最新版本的nginx

添加测试网页

/etc/nginx/conf.d/default.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@zabbix-agent ~]# cat /etc/nginx/conf.d/default.conf
server {
#80端口
listen 80;
server_name localhost;

#access_log /var/log/nginx/host.access.log main;

location / {
#这里就是网站的根目录了
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
#。。。。。
}

直接修改80端口下的网站里面的内容

1
vim /usr/share/nginx/html/index.html

里面的内容全部删了,写入以下内容,然后保存退出即可

1
<h1>welcome to qianyios.blog</h1>

重启服务

1
nginx -s reload

image-20241116181113300

配置80端口模板

创建监控80端口状态的模板

image-20241116185125433

创建监控项

image-20241116201133039

image-20241116205532638

创建触发器

点击触发器,创建触发器

image-20241116201342794

image-20241116201548422

创建图形

image-20241116201716163

image-20241116201748272

配置测试机应用80端口模板

image-20241116202908169

更新一下

image-20241116204210574

80端口模板测试

image-20241116205844643

当我们模拟80端口down

1
systemctl stop nginx

image-20241116205932836

image-20241116210138178

然后我们再开起来

1
systemctl start nginx

image-20241116210022189

到此监测80端口成功

特别声明
千屹博客旗下的所有文章,是通过本人课堂学习和课外自学所精心整理的知识巨著
难免会有出错的地方
如果细心的你发现了小失误,可以在下方评论区告诉我,或者私信我!
非常感谢大家的热烈支持!