本教程内容较多,分为四篇,详细教学如何从零开始部署一台zabbix-server监控机,以及如何使用工具,批量部署zabbix-agent被控机,以及实现钉钉预警
1.创建虚拟机,部署zabbix-server2.使用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(必不可少的一步)
可以参考我写的另一篇文章
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
可以看到新源名称及可用包的数量
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主页面,右键刚刚创建的虚拟机,点击管理,克隆即可
点击下一页
此处点击创建完整克隆
这里的虚拟机名称可以随便起,为了方便管理,我用名称+ip命名
注意:这里的ip暂时不是真正的ip,需要等下克隆完成后,进去修改
点击完成,等待克隆即可,克隆完成后,我们可以看到刚刚克隆的主机
5.3 修改被控机的配置
因为我们克隆的这个是被控机,不需要很高的配置,1核1G即可
点击编辑虚拟机设置
点击修改,修改完成后点击确定
5.4 修改被控机ip
/vi /etc/sysconfig/netwokr-scripts/ifcfg-ens33
将IPADDR修改为我们想要的ip
修改完成后,退出保存,重启网络
service network restart
至此,一台被控机配置完成
然后用这台被控主机,克隆另外两台即可,记得修改ip
二、配置监控机(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;
}
}
注释版:
# 编辑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
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
安装完成后截图
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编辑器中的查找功能,方便快捷找到修改项,具体使用步骤为,阅读文档状态下,按下/
,输入想要查找的字段,回车即可,截图如下
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();
?>
3.2 浏览器访问,显示如下图表示无误
http://[your_ip_address]:9780/index.php
例如:http://192.168.138.134:9780/index.php
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();"
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;
如果使用的是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
,回车即可
5.4 启动Zabbix-Server
5.4.1 修改zabbix配置
vim /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123456
修改完如下图所示
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/
前面按要求填写好之后,最后一步会出现如下图的问题:
这里我们按照提示,将下载好的配置文件,放到指定文件夹即可
点击下载配置文件,使用远程连接工具,将该文件放到/usr/share/nginx/html/zabbix
里面,点击完成
使用默认的账号密码登录
Admin/zabbix
**至此,zabbix-server部署完毕。**✿✿ヽ(°▽°)ノ✿
由于本篇文章篇幅较长,所以使用Ansible批量部署三台zabbix-agent机器,放在下一篇文章,下面是链接:
LInux环境下使用Ansible批量部署zabbix-agent【2024.09.18更新,最新部署步骤,超级详细】
转载请标明出处
如果还有问题,欢迎在评论区留言或私信
作者:BQ
主页:bqcode.blog.csdn.net
qq群:958124241
Learn Together!