Linux环境部署zabbix-server监控机【2024.09.18最新步骤,超级详细】

本教程内容较多,分为四篇,详细教学如何从零开始部署一台zabbix-server监控机,以及如何使用工具,批量部署zabbix-agent被控机,以及实现钉钉预警
1.创建虚拟机,部署zabbix-server

2.使用ansible批量部署zabbix-agent,实现自动上报(监控的主动模式)

3.实现预警信息自动发送至钉钉群

4.Linux下安装Python3.6.8 (篇外)

本文使用Centso7进行教学,篇幅较长,分四篇文章进行教学

一、创建四个虚拟机

监控端1台 被控端3台
4核4G 1核1G
MySQL 8.0.36|MariaDB 10.5.25
Ansible 2.9.27
Nginx 1.20
PHP 7.2
python3.6.8
zabbix-server 6.0 zabbix-agent 6.0

1 创建一台监控机

虚拟机创建方法自行搜索解决,网上教程很多

2 配置静态ip(必不可少的一步)

可以参考我写的另一篇文章

虚拟机Linux(Centos7)系统静态IP设置

3 配置yum源为华为源

因为官方源已被弃用,所以需要我们手动配置yum源

3.1 更换yum源

备份原yum源

cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 

删除原yum源

rm -rf /etc/yum.repos.d/CentOS-Base.repo

创建新的yum源文件

vi /etc/yum.repos.d/CentOS-Base.repo

添加华为云的YUM源配置:在打开的文件中输入以下内容:

[base]
name=CentOS-$releasever - Base - repo.huaweicloud.com
baseurl=https://repo.huaweicloud.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/centos/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-$releasever - Updates - repo.huaweicloud.com
baseurl=https://repo.huaweicloud.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/centos/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-$releasever - Extras - repo.huaweicloud.com
baseurl=https://repo.huaweicloud.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=https://repo.huaweicloud.com/centos/RPM-GPG-KEY-CentOS-7

[centosplus]
name=CentOS-$releasever - Plus - repo.huaweicloud.com
baseurl=https://repo.huaweicloud.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://repo.huaweicloud.com/centos/RPM-GPG-KEY-CentOS-7

保存文件并退出:在vi中按Esc键,然后输入:wq保存并退出。

3.2 清理缓存并更新YUM源

清理缓存

yum clean all

重新生成缓存

yum makecache

验证YUM源是否更换成功

yum repolist

可以看到新源名称及可用包的数量

image-20240914085503385

3.3 更新yum源

 yum update -y

需要等待较长时间

4 环境初始化操作

4.1 关闭防火墙

# 停止防火墙服务
systemctl stop firewalld

# 禁用防火墙服务开机启动
systemctl disable firewalld

# 临时关闭SELinux
setenforce 0

# 永久禁用SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

4.2 定时时间同步

# 安装ntpdate工具
yum -y install ntpdate

# 同步时间到阿里云的NTP服务器
ntpdate ntp1.aliyun.com

# 添加定时任务,每天凌晨1点同步时间
echo "0 1 * * * ntpdate ntp1.aliyun.com" >> /var/spool/cron/root

# 列出当前用户的定时任务
crontab -l

4.3 安装其他工具

# 安装wget工具
yum install -y wget

# 安装vim编辑器
yum install -y vim

至此,初始化环境操作完毕,使用该监控机克隆另外三台被控机即可,下面是步骤

5 克隆被控机

5.1 主控机关机

5.2 克隆

回到Vmware主页面,右键刚刚创建的虚拟机,点击管理,克隆即可

image-20240914093205478

点击下一页

image-20240914093328935

image-20240914093408800

此处点击创建完整克隆

image-20240914093516099

这里的虚拟机名称可以随便起,为了方便管理,我用名称+ip命名

注意:这里的ip暂时不是真正的ip,需要等下克隆完成后,进去修改

image-20240914093742225

点击完成,等待克隆即可,克隆完成后,我们可以看到刚刚克隆的主机

image-20240914093832418

5.3 修改被控机的配置

因为我们克隆的这个是被控机,不需要很高的配置,1核1G即可

点击编辑虚拟机设置

image-20240914094100298

点击修改,修改完成后点击确定

image-20240914094319523

5.4 修改被控机ip

/vi /etc/sysconfig/netwokr-scripts/ifcfg-ens33

将IPADDR修改为我们想要的ip

image-20240914094714240

修改完成后,退出保存,重启网络

service network restart

至此,一台被控机配置完成

然后用这台被控主机,克隆另外两台即可,记得修改ip

image-20240914100449082

二、配置监控机(zabbix-server)

本章在zabbix-server01上操作,为方便操作,可以使用xshell、termius等工具连接虚拟机

1 部署并配置Nginx

# 下载并替换EPEL仓库配置文件
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

# 清理所有yum缓存
yum clean all

# 安装Nginx
yum -y install nginx

# 查看Nginx版本
nginx -v

安装成功后截图如下

1.1 添加Nginx虚拟主机配置

新增nginx配置文件

vim /etc/nginx/conf.d/zabbix.conf

具体配置信息

server {
    
    
  listen 9780;
  
  location / {
    
    
    root /usr/share/nginx/html/zabbix;
    index index.php index.html index.htm;
  }
  
  location ~ \.php$ {
    
    
    root /usr/share/nginx/html/zabbix;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    access_log /var/log/nginx/zabbix_access.log;
	error_log /var/log/nginx/zabbix_error.log;
  }
}

image-20240914102506165

注释版:

# 编辑Nginx配置文件
vim /etc/nginx/conf.d/zabbix.conf

server {
    
    
  # 监听端口9780
  listen 9780;
  
  location / {
    
    
    # 设置根目录
    root /usr/share/nginx/html/zabbix;
    # 设置默认首页文件
    index index.php index.html index.htm;
  }
  
  location ~ \.php$ {
    
    
    # 设置根目录
    root /usr/share/nginx/html/zabbix;
    # 设置FastCGI的地址和端口
    fastcgi_pass 127.0.0.1:9000;
    # 设置FastCGI的默认首页文件
    fastcgi_index index.php;
    # 设置脚本文件名参数
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    # 包含FastCGI的参数配置
    include fastcgi_params;
    # 设置访问日志路径
    access_log /var/log/nginx/zabbix_access.log;
    # 设置错误日志路径
    error_log /var/log/nginx/zabbix_error.log;
  }
}

1.2 启动Nginx并且加入开机自启动

# 测试Nginx配置文件是否有语法错误
nginx -t

# 启动Nginx服务,如果在这里报错,检查前面的防火墙关没关闭
systemctl start nginx

# 设置Nginx服务开机自启动
systemctl enable nginx

image-20240914104129514

2 配置PHP

# 安装EPEL仓库
yum install -y epel-release

# 安装Remi仓库
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm

# 安装yum-utils工具包
yum install -y yum-utils

# 启用Remi仓库中的PHP 7.2版本
yum-config-manager --enable remi-php72

# 更新所有包
yum update -y

# 安装PHP 7.2
yum install -y php72

# 安装PHP 7.2的常用扩展及与zabbix相关扩展
yum -y install  php72-php-cli php72-php-common php72-php-devel php72-php-embedded php72-php-gd php72-php-mbstring php72-php-pdo php72-php-xml php72-php-fpm php72-php-mysqlnd php72-php-opcache php72-php-ldap php72-php-bcmath

# 查看PHP版本
php72 -v



安装完成后截图

image-20240914105115051

2.1 修改PHP,优化配置

# 编辑PHP 7.2的配置文件
vim /etc/opt/remi/php72/php.ini


# 设置脚本最大执行时间为300秒
max_execution_time = 300
# 设置最大输入时间为600秒
max_input_time = 600
# 设置POST数据的最大大小为80M
post_max_size = 80M
# 设置时区为上海
date.timezone = Asia/Shanghai

修改时,可以使用vim编辑器中的查找功能,方便快捷找到修改项,具体使用步骤为,阅读文档状态下,按下/,输入想要查找的字段,回车即可,截图如下

image-20240914105750098

2.2 启动PHP并且加入开机自启动

# 开启服务
systemctl start php72-php-fpm
#设置开机自启动
systemctl enable php72-php-fpm


# 其他命令
# 停止服务
 systemctl stop php72-php-fpm

# 查看状态
systemctl status php72-php-fpm

3 测试Nginx+PHP环境

3.1 创建php页面

# 创建Zabbix目录
mkdir /usr/share/nginx/html/zabbix

# 编辑index.php文件
vim /usr/share/nginx/html/zabbix/index.php
<?php
# 输出PHP配置信息
phpinfo();
?>

image-20240914141031698

3.2 浏览器访问,显示如下图表示无误

http://[your_ip_address]:9780/index.php

例如:http://192.168.138.134:9780/index.php

image-20240914111044287

4 部署并配置MariaDB

注意:MariaDB(版本要求在10.5及以上)和MySQL都可以使用,有现成的数据库的话,直接拿来用就可以,本文使用MariaDB进行教学

4.1 安装MariaDB

# 创建MariaDB仓库配置文件
cat > /etc/yum.repos.d/mariadb.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled=1
EOF

# 安装MariaDB服务器和客户端
yum install -y mariadb-server mariadb

4.2 启动MariaDB并加入开机自启动

systemctl start mariadb
systemctl enable mariadb

4.3 查看版本

mysql -e "SELECT VERSION();"

image-20240914112120095

4.4 初始化数据库

方便教学,密码设为123456,实际生产环境不要设置简单密码

# 进入MySQL命令行
mysql

# 修改root用户的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

# 创建Zabbix数据库,并设置字符集和排序规则
CREATE DATABASE zabbix character set utf8 collate utf8_bin;

# 授予zabbix用户对zabbix数据库的所有权限,并设置密码
GRANT all ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY '123456';
GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY '123456';

# 刷新权限
flush privileges;

# 退出MySQL命令行
exit;

image-20240914112321061

如果使用的是MySQL8.X,请执行下面SQL

create user "zabbix"@"localhost" identified WITH mysql_native_password by "Zabbix@123";
grant all on zabbix.* to "zabbix"@"localhost";
create user "zabbix"@"%" identified WITH mysql_native_password by "Zabbix@123";
grant all on zabbix.* to "zabbix"@"%";
flush privileges;
exit;

执行后MariaDB账号信息为:

账号 允许连接地址 密码
root localhost 123456
zabbix localhost 123456
zabbix 所有地址 123456

5 Zabbix-Server部署步骤

5.1 编译安装Zabbix-Server

5.1.1 安装编译环境依赖
yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel fping gcc gcc-c++ make
5.1.2 下载zabbix源代码
#下载可能会慢一点
wget --no-check-certificate --header="Connection: close" https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.31.tar.gz

tar zxf zabbix-6.0.31.tar.gz -C /opt/

如果下载失败,可以自行手动下载该软件包,下面放上链接

https://download.csdn.net/download/weixin_52677672/89752209

下载后上传到zabbix-server01,使用下面命令解压即可。

tar zxf zabbix-6.0.31.tar.gz -C /opt/
5.1.3 编译安装
cd /opt/zabbix-6.0.31/
./configure \
--sysconfdir=/etc/zabbix/ \
--bindir=/etc/zabbix/bin/ \
--sbindir=/etc/zabbix/bin/ \
--libexecdir=/etc/zabbix/libexec \
--sharedstatedir=/etc/zabbix/sharedstatedir \
--localstatedir=/etc/zabbix/statedir \
--runstatedir=/etc/zabbix/run \
--libdir=/etc/zabbix/lib \
--includedir=/etc/zabbix/include \
--oldincludedir=/etc/zabbix/oldinclude\
--datarootdir=/etc/zabbix/share \
--datadir=/etc/zabbix/data \
--enable-server \
--with-mysql \
--with-net-snmp \
--with-libxml2 \
--with-ssh2 \
--with-openipmi \
--with-zlib \
--with-libpthread \
--with-libevent \
--with-openssl \
--with-ldap \
--with-libcurl \
--with-libpcre
make install

5.2 导入Zabbix初始化库

zabbix-server的初始化库在源码包中/opt/zabbix-6.0.31/database/mysql

注意:按照顺序导入SQL,密码修改为自己设置的密码:

cd /opt/zabbix-6.0.31/database/mysql

mysql -uzabbix -p123456 zabbix < schema.sql
mysql -uzabbix -p123456 zabbix < images.sql
mysql -uzabbix -p123456 zabbix < data.sql
mysql -uzabbix -p123456 zabbix < double.sql
mysql -uzabbix -p123456 zabbix < history_pk_prepare.sql

5.3 配置Zabbix前端UI

zabbix-server的前端文件在刚刚解压的源码包,将/opt/zabbix-6.0.31/ui 放到Nginx 根目录即可!

cp -rp /opt/zabbix-6.0.31/ui/* /usr/share/nginx/html/zabbix/

注意,如果没有将刚刚测试用的index.php删掉,会出现以下提示,输入yes,回车即可

image-20240914135255798

5.4 启动Zabbix-Server

5.4.1 修改zabbix配置
vim /etc/zabbix/zabbix_server.conf

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456

修改完如下图所示

image-20240914135853182

5.4.2 创建用户

由于zabbix禁止root用户启动,所以需要创建用户,来启动zabbix

useradd -r -s /sbin/nologin zabbix
chown -R  zabbix:zabbix /etc/zabbix/
5.4.3 添加systemd管理
cat > /usr/lib/systemd/system/zabbix-server.service << EOF
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target mysqld.service

[Service]
Type=simple
ExecStart=/etc/zabbix/bin/zabbix_server -f
User=zabbix

Restart=on-failure
RestartSec=30s
KillMode=control-group
KillSignal=SIGTERM
TimeoutStopSec=30s

[Install]
WantedBy=multi-user.target
EOF
5.4.4 启动zabbix-server
systemctl start zabbix-server
systemctl enable zabbix-server

5.5 WEB页面配置

访问:http://[ip_address]:9780/

例如 http://192.168.138.134:9780/

image-20240914141129167

image-20240914141213676

image-20240914141304707

前面按要求填写好之后,最后一步会出现如下图的问题:

image-20240914141400464

这里我们按照提示,将下载好的配置文件,放到指定文件夹即可

点击下载配置文件,使用远程连接工具,将该文件放到/usr/share/nginx/html/zabbix里面,点击完成

image-20240914141751134

使用默认的账号密码登录

Admin/zabbix

image-20240914141918897

**至此,zabbix-server部署完毕。**✿✿ヽ(°▽°)ノ✿

由于本篇文章篇幅较长,所以使用Ansible批量部署三台zabbix-agent机器,放在下一篇文章,下面是链接:
LInux环境下使用Ansible批量部署zabbix-agent【2024.09.18更新,最新部署步骤,超级详细】

转载请标明出处
如果还有问题,欢迎在评论区留言或私信
作者:BQ
主页:bqcode.blog.csdn.net
qq群:958124241
Learn Together!

猜你喜欢

转载自blog.csdn.net/weixin_52677672/article/details/142322973