【Zabbix】Zabbix 保姆级安装指南:从零开始打造高效监控系统,轻松掌握运维利器!
Zabbix:企业级开源监控解决方案官网
一、Zabbix介绍
Zabbix是一个基于Web界面的开源监控解决方案,主要用于分布式系统和网络监控。 它能够监视各种网络参数,确保服务器系统的安全运营,并提供灵活的通知机制,帮助系统管理员快速定位和解决问题。
Zabbix 的基本功能与特点
Zabbix 是一个强大的监控工具,主要用于监控服务器、网络设备、应用程序等的状态和性能。它的核心功能可以总结为以下几点:
-
数据收集:
- Zabbix 可以通过 Agent(代理)收集服务器的硬件信息,比如 CPU 使用率、内存占用、磁盘空间等。
- 它还能监控网络设备的运行状态,比如路由器、交换机的流量、端口状态等。
-
网络监控:
- Zabbix 支持多种监控方式,比如 SNMP(简单网络管理协议)、Ping、端口监控等。
- 它可以监控远程服务器的可用性,比如检查服务器是否在线、网络是否通畅。
-
灵活的告警机制:
- 用户可以自定义监控的阈值(比如 CPU 使用率超过 80%),当超过阈值时,Zabbix 会自动触发告警。
- 告警可以通过邮件、短信等方式发送,帮助运维人员快速发现问题。
-
数据可视化与报告:
- Zabbix 提供了丰富的图表和仪表盘,可以直观地展示监控数据。
- 它还支持生成报告,帮助管理员进行容量规划和性能分析。
-
高度可配置:
- Zabbix 非常灵活,可以监控各种复杂的场景,比如 Web 集群、数据库、应用程序等。
- 它还支持自定义监控项和脚本,满足个性化需求。
Zabbix 的发展现状与市场定位
Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 公司维护和支持。它是一个开源的、企业级的监控解决方案,适用于各种规模的组织,从小型企业到大型企业都可以使用。
- 跨平台支持:Zabbix 可以在多种操作系统上运行,包括 Linux、Windows、Solaris 等。
- 开源免费:Zabbix 是完全开源的,用户可以免费使用,同时也有商业支持服务可供选择。
Zabbix 的架构与组件
Zabbix 的架构主要由以下几个核心组件组成:
-
Server(服务器):
- Zabbix Server 是核心组件,负责处理监控数据、存储配置信息、触发告警等。
- 它接收来自 Agent 或 Proxy 的数据,并进行分析和存储。
-
Web 界面:
- Zabbix 提供了一个直观的 Web 界面,用户可以通过浏览器查看监控数据、配置监控项、管理告警等。
-
Database(数据库):
- Zabbix 使用数据库(如 MySQL、PostgreSQL)来存储监控数据、配置信息和历史记录。
-
Proxy(代理):
- 在大型网络中,Zabbix Proxy 可以代替 Server 收集数据,减轻 Server 的负载。
- 它还适用于跨机房、跨网段的监控场景。
-
Agent(代理程序):
- Zabbix Agent 安装在被监控的设备上,负责收集本地数据(如 CPU、内存使用率)并发送给 Server。
选择 Zabbix 的理由
-
高可用性和集群支持:
- Zabbix 支持高可用架构,可以部署多个 Server 和 Proxy,确保监控系统稳定运行。
-
开源免费:
- Zabbix 是完全开源的,用户可以免费使用,同时也有活跃的社区支持。
-
强大的监控功能:
- 它支持多种监控方式,可以满足各种复杂的监控需求。
-
灵活的自定义和扩展性:
- 用户可以根据需要自定义监控项、告警规则和脚本。
-
易于部署和操作简便:
- Zabbix 的安装和配置相对简单,Web 界面也非常直观,易于上手。
-
高可用性和安全可靠:
- Zabbix 提供了多种安全机制,确保监控数据的安全性和系统的稳定性。
-
社区支持和活跃的开发者社区:
- Zabbix 拥有一个活跃的社区,用户可以在社区中获取帮助、分享经验。
Zabbix功能特性
Zabbix-Agent获取数据 --发送给–>Zabbix-Server服务端—数据会被存放-> 数据库 <— Zabbix Web 页面展示数据
二、Zabbix安装
以下是在 CentOS 7 上安装 Zabbix 的步骤:
准备工作
配置静态网络
# 学习阶段关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
#关闭Selinux,将enforcing改成disabled,并重启
[root@localhost ~]# vim /etc/sysconfig/selinux
[root@localhost ~]# reboot
zabbix-server+页面(前端)
1、nginx
配置yum源
备份原始yum源,并移到/root目录下
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# tar -czvf repo.gz.tar *.repo
[root@localhost yum.repos.d]# mv repo.gz.tar /root
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
安装测试
yum install -y nginx --enablerepo=nginx-stable
rpm -qa | grep nginx
nginx-1.26.1-2.el7.ngx.x86_64
2、php
2.1 php安装
在CentOS 7 系统上配置 YUM 仓库(包括 CentOS 基础仓库、EPEL 仓库和 Webtatic 仓库),然后安装 PHP 7.2 及其常用扩展。通过使用阿里云的镜像仓库,可以加快软件包的下载速度。
nginx 1.26.1 php7.2
#配置Centos仓库,如果有就不用配
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#安装 EPEL 仓库
yum install epel-release.noarch -y
#配置 EPEL 仓库
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#添加webtatic源
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
#安装 PHP 7.2 及其扩展
yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-mysqlnd php72w-opcache php72w-pdo php72w-xml php72w-process
检查环境:13个php扩展和一个nginx,一个都不能少
rpm -qa |egrep 'nginx|php72w'
2.2 nginx+php配置
加入启动项
systemctl enable nginx php-fpm.service
systemctl start nginx php-fpm.service
nginx配置
vim /etc/nginx/conf.d/zbx.oldboylinux.cn.conf
server {
listen 80;
server_name 10.0.0.15; #改成服务器ip
root /app/code/zbx;
location / {
index index.php;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /app/code/zbx$fastcgi_script_name;
include fastcgi_params;
}
}
注释:
1. 监听 80 端口,处理来自 服务器IP(10.0.0.15) 的 HTTP 请求。
2. 将网站的根目录设置为 /app/code/zbx,所有请求的文件都会从这个目录中查找。
3. 默认返回 index.php 文件。
4. 将所有 .php 请求转发到本地的 PHP-FPM 服务(127.0.0.1:9000)进行处理。
[root@m03 ~]# nginx -t
输出ok,successful表示nginx配置正确
[root@m03 ~]# systemctl reload nginx
php配置
修改php用户和所属组
准备php会话保持目录
sed -ri '/^(user|group)/s#apache#nginx#g' /etc/php-fpm.d/www.conf
egrep '^(user|group)' /etc/php-fpm.d/www.conf
user = nginx
group = nginx
配置nginx session
#查找会话路径
grep 'var/lib/php/session' /etc/php-fpm.d/www.conf
php_value[session.save_path] = /var/lib/php/session
#创建会话路径
[root@m03 ~]# mkdir -p /var/lib/php/session
#更改会话权限
[root@m03 ~]# chown nginx:nginx /var/lib/php/session
#检测并重启php
php-fpm -t
systemctl reload php-fpm.service
php+nginx测试 (给php创建资源目录)
[root@m03 ~]# mkdir -p /app/code/zbx
[root@m03 ~]# chown nginx:nginx /app/code/zbx
[root@m03 ~]# vim /app/code/zbx/info.php
权限设置
# 查看文件权限
ls -l /app/code/zbx/info.php
# 递归修改目录权限(示例以用户 www-data 为例)
chown -R nginx:nginx /app/code/zbx
# 目录权限:755
find /app/code/zbx -type d -exec chmod 755 {} ;
# 文件权限:644
find /app/code/zbx -type f -exec chmod 644 {} ;
cat /app/code/zbx/info.php
测试
查看日志
tail -f /var/log/nginx/error.log
PHP-FPM 日志(默认位置)tail -f /var/log/php-fpm.log
3、数据库
yum install -y mariadb-server
#启动mariadb 并加入自启动
systemctl start mariadb
systemctl enable mariadb
#免密登录mysql
mysql -u root
#删除多余root账户
delete from user where user='root' and host='127.0.0.1';
delete from user where user='root' and host='::1';
给mysql root设置密码
mysql_secure_installation
这里设置的密码12456
yy回车yy
#查看数据库
select user,host from mysql.user ;
#显示数据库
show databases;
#配置数据库
create database zabbix charset utf8 collate utf8_bin;
grant all on zabbix.* to 'zabbix'@'localhost' identified by '123456' ; #改成自己设置的密码
grant all on zabbix.* to 'zabbix'@'10.0.0.%' identified by '123456' ; #改成自己设置的密码和ip段
MariaDB [(none)]> show databases;
MariaDB [(none)]> select user,host from mysql.user;
修改root 远程链接
use mysql;
update user set host='%' where user='root';
FLUSH PRIVILEGES;
测试数据库
在Navicat创建Zabbix数据库并连接
4、zabbix-server
Zabbix官网安装教程
准备工作:
但我们是在一台机子上部署,所以下面的操作可以不进行
关闭SELinux及防火墙
1)关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
2)永久禁用SELinux
vi /etc/sysconfig/selinux
将SELinux=enforcing改为SELinux=disabled
3)重启
reboot
注意:如果不关闭selinux,参照设置:https://www.zabbix.com/documentation/6.0/zh/manual/installation/install_from_packages/rhel_centos#%E9%85%8D%E7%BD%AE-selinux
如果不关闭防火墙,参照设置:
a.开放端口
firewall-cmd --zone=public --add-port=10050/tcp --permanent
firewall-cmd --zone=public --add-port=10051/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
b.重新载入防火墙使设置生效
firewall-cmd --reload
注释:
10050是Zabbix agent端口
10051是Zabbix server端口
3306是mariadb端口
80是nginx的端口
安装zabbix yum源
#安装 Zabbix 官方仓库配置文件
rpm -Uvh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#替换 Zabbix 仓库源为清华大学镜像
sed -i 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#g'
vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=0
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=0
gpgcheck=0
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/$basearch/debuginfo/
enabled=0
gpgcheck=0
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgcheck=0
安装server
yum install -y zabbix-server-mysql zabbix-agent2
#zabbix 数据库导入数据
zcat /usr/share/doc/zabbix-server-mysql-5.0.46/create.sql.gz |mysql -uzabbix -p1 zabbix
#配置连接数据库
vim /etc/zabbix/zabbix_server.conf
grep ^DB /etc/zabbix/zabbix_server.conf
:91
91:DBHost=localhost
100:DBName=zabbix
116:DBUser=zabbix
124:DBPassword=1
启动zabbix-server
#启动zabbix-server
systemctl enable zabbix-server.service
systemctl start zabbix-server.service
ss -lntup|grep zabbix
5、web部署
源码包下载
选择zabbix-5.0.18.tar.gz下载
#使用源码包
tar xf zabbix-5.0.18.tar.gz
cd zabbix-5.0.18/
cp -a ui/* /app/code/zbx/
chown -R nginx.nginx /app/code/zbx/
注释:
1. 解压 Zabbix 5.0.18 的源码包。
2. 将前端文件复制到 Web 服务器的根目录(/app/code/zbx/)。
3. 设置正确的文件权限,确保 Web 服务器可以访问这些文件。
6. 安装zabbix(zabbix 前端页面连接数据库与zabbix-server)
访问 Zabbix 前端
完成上述步骤后,可以通过浏览器访问 Zabbix 前端:
http://10.0.0.15/setup.php
报错!!!
修改如下内容:
vim /etc/php.ini
368:max_execution_time = 300
378:max_input_time = 600
656:post_max_size = 80M
802:max_file_uploads = 20
877:date.timezone = Asia/Shanghai
egrep -n '^(max_|date.timezone|post_max)' /etc/php.ini
368:max_execution_time = 300
378:max_input_time = 600
656:post_max_size = 80M
802:max_file_uploads = 20
877:date.timezone = Asia/Shanghai
systemctl reload php-fpm.service
报错!!!warning
界面报错 PHP bcmath extension missing (PHP configuration…
yum install php72w-bcmath
# 重启php
systemctl reload php-fpm.service
刷新,web成功连接数据库
密码为数据库密码
zabbix前端页面安装完成
登录:用户Admin:;密码:zabbix
效果
到此Zabbix安装完成
Zabbix 就像是一个“全天候的IT保姆”,它可以帮你盯着服务器、网络设备、应用程序等的健康状况。如果出现问题(比如 CPU 爆满、硬盘快满了),它会第一时间通知你。你可以通过漂亮的图表和报告,随时了解系统的运行情况。最重要的是,它是免费的,而且非常灵活,几乎可以监控任何你想监控的东西!