Zabbix
Zabbix作为一款功能强大、灵活可扩展的开源监控解决方案,在帮助管理员实时监控和管理各种IT资源、提高系统的稳定性和可靠性、保障业务的正常运行方面发挥着重要作用
Zabbix是一个基于WEB界面的企业级开源解决方案,它提供了分布式系统监视以及网络监视功能。以下是对Zabbix的概念和作用的详细解释:
概念
- 开源与免费:Zabbix是一款开源且免费的监控平台,用户可以自由地使用、修改和分发。
- 分布式架构:Zabbix采用分布式架构,可以实现高可用性和负载均衡,确保监控系统的连续性和稳定性。
- 组件构成:Zabbix主要由Zabbix Server和可选的Zabbix Agent两部分构成。Zabbix Server负责存储配置信息、统计信息和操作信息,并通过SNMP、Zabbix Agent、ping、端口监视等方法提供对远程服务器/网络状态的监视和数据收集功能。Zabbix Agent则部署在被监控目标上,用于主动监控本地资源和应用程序,并将监控数据发送给Zabbix Server。
作用
- 实时监控:Zabbix可以对各种IT资源进行实时监控,包括服务器的CPU、内存、磁盘、网络性能等硬件参数,以及操作系统、应用程序、服务运行状态等软件层面的信息。通过实时监控,管理员可以及时发现并解决潜在的问题,确保系统的稳定运行。
- 历史数据分析:Zabbix可以记录和存储历史监控数据,并提供丰富的数据分析功能。管理员可以通过查询历史数据,了解系统在不同时间段的性能状况,发现性能瓶颈和异常情况,并进行相应的优化和调整。
- 报警与通知:Zabbix支持灵活的告警机制,允许用户为几乎任何事件配置基于邮件、短信、手机APP等方式的告警通知。当系统出现故障或异常情况时,Zabbix可以及时通知管理员,帮助管理员迅速定位并解决问题,避免系统故障对业务造成影响。
- 数据可视化:Zabbix提供了丰富的数据可视化功能,可以将监控数据以图表、报表等形式展示出来。管理员可以通过直观的图表和报表,快速了解系统的整体状况和各项指标的变化趋势,为决策提供参考依据。
- 自动发现与配置:Zabbix支持自动发现功能,可以自动扫描网络中的设备和服务,并自动添加监控项。管理员无需手动配置,即可实现对新设备的监控和管理。此外,Zabbix还提供了灵活的配置和扩展功能,管理员可以根据实际需求自定义监控项、触发器、报警规则等。
- 安全性:Zabbix提供了多层次的安全机制,包括用户权限管理、数据加密、访问控制等。管理员可以对用户进行权限分配,限制其对监控数据的访问和操作,确保系统的安全性和隐私保护。
部署:
在Zabbix监控系统中,MySQL、Gateway(特别是Zabbix-Java-Gateway)、Zabbix Server、Zabbix Web和Zabbix Agent各自扮演着重要的角色。
-
MySQL:
- MySQL在Zabbix中通常用作后端数据库,存储所有的配置信息、历史数据、事件日志等。
- Zabbix Server通过MySQL数据库来管理和查询监控数据,确保数据的持久化和可查询性。
-
Zabbix-Java-Gateway:
- Zabbix-Java-Gateway是一个可选组件,专门用于监控Java应用程序。
- 它通过Java Native Interface (JNI)与Java应用程序进行通信,收集性能指标如内存使用量、线程数量等,并将这些数据发送到Zabbix Server。
-
Zabbix Server:
- Zabbix Server是整个Zabbix监控系统的核心组件,负责接收来自Zabbix Agent或其他监控源的数据。
- 它执行数据的主动轮询和被动获取,计算触发器条件,并在条件满足时触发报警或执行自动化操作。
- Zabbix Server还负责存储和管理所有的监控数据、配置信息和事件日志。
-
Zabbix Web:
- Zabbix Web提供了基于Web的用户界面,允许管理员通过浏览器远程访问和管理Zabbix监控系统。
- 管理员可以使用Zabbix Web来配置监控项、查看实时监控数据、分析历史数据、设置报警规则和管理用户权限等。
-
Zabbix Agent:
- Zabbix Agent是一个轻量级的代理软件,部署在被监控的主机上。
- 它负责收集主机的各种监控数据,如CPU使用率、内存占用、磁盘I/O等,并将这些数据发送到Zabbix Server。
- Zabbix Agent还支持自动发现和自动配置功能,可以自动检测并添加新的监控项和触发器。
这些组件共同构成了Zabbix监控系统的核心架构,实现了对IT资源的全面监控和管理。通过它们之间的协同工作,管理员可以实时了解系统的运行状态,及时发现并解决问题,确保业务的连续性和数据的安全性。
安装
第一种方式:
Docker创建mysql容器
先启动我们的docker
- 创建数据卷 用于存放数据
docker volume create -d local mysql_data # 存放mysql的数据
docker volume create -d local mysql_logs # 存放mysql的日志
docker volume create -d local mysql_conf # 存放mysql的配置文件
2.创建容器并运行
docker run --name mysql-server -t \
-v mysql_data:/var/lib/mysql \
-v mysql_logs:/var/log/mysql \
-v mysql_conf:/etc/mysql \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="root" \
--restart=unless-stopped \
-d mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
安装gateway
docker run --name zabbix-java-gateway -t \
--restart=unless-stopped \
-d zabbix/zabbix-java-gateway:alpine-6.2-latest
安装zabbix-server
创建卷
docker volume create -d local zabbix_server
创建并运行镜像
docker run --name zabbix-server-mysql -t \
-v zabbix_server:/etc/zabbix \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="root" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--link mysql-server:mysql \
--link zabbix-java-gateway:zabbix-java-gateway \
--restart=unless-stopped \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:alpine-6.2-latest
安装zabbix-web
docker run --name zabbix-web-nginx-mysql -t \
-e PHP_TZ="Asia/Shanghai" \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_ROOT_PASSWORD="root" \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-p 8090:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:alpine-6.2-latest
安装zabbix-agent
将下载好的安装包直接安装即可
[root@localhost zabbix]# rpm -vih zabbix-agent-7.0.4-release1.el7.x86_64\(2\).rpm
可能会安装失败报错,显示缺少依赖
可以安装一下pcre2,安装好后在尝试安装agent包
yum -y install pcre2
启动
systemctl start zabbix-agent
第二种方式:
创建一个docker-compose.yml文件
services:
# 网关
zabbix-gateway:
image: zabbix/zabbix-java-gateway:latest
container_name: zabbix-gateway-1
ports:
- "1052:1052"
restart: unless-stopped
networks:
- zabbix-net
# 初始数据库
zabbix-db-image:
image: mysql:latest
ports:
- "33090:3306"
container_name: zabbix-mysql-1
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_DATABASE: "zabbix"
MYSQL_USER: "zabbix"
MYSQL_PASSWORD: "zabbix"
volumes:
- ./mysql:/var/lib/mysql
command: ["--character_set_server=utf8mb4", "--collation_server=utf8mb4_bin"]
networks:
- zabbix-net
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p123456"]
interval: 5s
retries: 30
# Server服务
zabbix-server:
image: zabbix/zabbix-server-mysql:latest
container_name: zabbix-server-1
environment:
DB_SERVER_HOST: "zabbix-mysql-1"
MYSQL_DATABASE: "zabbix"
MYSQL_USER: "zabbix"
MYSQL_PASSWORD: "zabbix"
MYSQL_ROOT_PASSWORD: "123456"
ZBX_JAVAGATEWAY: "zabbix-gateway-1"
ports:
- "10051:10051"
restart: unless-stopped
networks:
- zabbix-net
depends_on:
zabbix-db-image:
condition: service_healthy
healthcheck:
test: ["CMD", "nc", "-z", "localhost", "10051"]
interval: 5s
retries: 30
# Web服务
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:latest
environment:
PHP_TZ: "Asia/Shanghai"
ZBX_SERVER_HOST: "zabbix-server-1"
DB_SERVER_HOST: "zabbix-mysql-1"
MYSQL_DATABASE: "zabbix"
MYSQL_USER: "zabbix"
MYSQL_PASSWORD: "zabbix"
MYSQL_ROOT_PASSWORD: "123456"
ports:
- "8090:8080"
networks:
- zabbix-net
restart: unless-stopped
depends_on:
zabbix-server:
condition: service_healthy
networks:
zabbix-net:
driver: bridge
也就是相当于综合在了一起
启动docker并执行文件,命令要在yml文件目录下执行
docker-compose up -d
等待安装完毕即可
然后继续安装zabbix-agent,和第一种方式的安装结果是一样的
此时查看一下我们的容器
docker ps
发现都在运行,我们访问一下我们的web,因为刚才创建web容器的时候,暴漏的端口号是8090,所以直接访问即可
也可以看到我们刚启动的一个zabbix-agent
可以看到我们的这个主机爆红,是因为我们还需要配置一个东西
进入配置
vim /etc/zabbix/zabbix_agentd.conf
在重新启动一下zabbix-agent,等一会在访问web页面
可以发现已经变成正常的绿色了
还是爆红就可以看看是否配置错误
点击进入
点击主机
看ip地址是否一样
创建主机
安装另一个zabbix-agent
在另一个虚拟机上只需安装一个zabbix-agent,也就是只需要一个zabbix-agent安装包,安装也和上面安装是一样的
安装完毕之后,进入etc/zabbix修改配置
ip地址要和前面的一台虚拟机一样
创建主机
名字要和我们配置的名字保持一致
选择正确的模块,ip地址不能错,这里ip地址要自己的ip
启动安装的zabbix-agent
此时就可以看到有两个,也是我们刚刚启动的主机
创建媒介
进入邮箱拿到授权码,可以使用163邮箱
拿到授权码后保存
进入设置开启服务
创建媒介
创建成功可以测试一下是否能发送邮件
显示成功媒介就没有多大的问题了
关联用户
添加完后不要忘了点击更新
添加动作
完成之后,我们随机关闭两个虚拟机中其中一个zabbix-agent
主机变红一段时间后,会出现一个深色的问题,点进去
可以看到邮箱已发送成功,然后再进入你的邮箱就可以看到发送的消息了