监控
ganglia 设计用于测量数以千计的节点,资源消耗非常小。 官网地址: http://ganglia.info/
open-falcon 小米发布的运维监控软件,高效率,高可用。时间较短,用户基数小。 官网地址: http://open-falcon.org/
zabbix 跨平台,支持分布式,可以集中管理,可以画图,能够持久化保存数据,多条件告警,多种API接口,扩展性非常强。使用基数特别大,阿里云使用的就是zabbix。 官网地址: https://www.zabbix.com/
prometheus 是一个基于时间序列的数值数据的容器监控解决方案。 官网地址: https://prometheus.io/
综合分析:zabbix比较适合公司的监控需求,
Zabbix的主要特点
1、丰富的模板
2、可以自定义监控项
3、完善的告警机制
4、适合分布式监控
5、集中管理系统
6、开源、免费系统
Zabbix监控配置
Docker快速搭建Zabbix
首先搭建好Docker
1.安装数据库(在server机器上操作)
# 下载镜像,Zabbix 6.x的版本要求使用MySQL:8.0版本
docker pull mysql:8.0.20
# 创建存储卷,用于持久化MySQL数据,存储卷默认存储位置路径为:/var/lib/docker/volume/${volume_name}
#存放mysql数据,mysql日志,mysql配置文件
docker volume create -d local mysql_data
docker volume create -d local mysql_logs
docker volume create -d local mysql_conf
# 启动容器
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="123456" \
-e MYSQL_ROOT_PASSWORD="123456" \
--restart=unless-stopped \
-d mysql:8.0.20 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
2.安装zabbix-java-gateway
# 下载镜像
docker pull zabbix/zabbix-java-gateway:alpine-6.2-latest
# 启动容器
docker run --name zabbix-java-gateway -t \
--restart=unless-stopped \
-d zabbix/zabbix-java-gateway:alpine-6.2-latest
3.安装zabbix-server
# 下载镜像
docker pull zabbix/zabbix-server-mysql:6.2-alpine-latest
# 创建存储卷,用于存储zabbix配置文件。
docker volume create -d local zabbix_server
# 启动server容器,开放10051/TCP端口,用于接收监控数据。添加--link参数,实现mysql和java-gateway容器间的互相通信
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="123456" \
-e MYSQL_ROOT_PASSWORD="123456" \
-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
4.安装Zabbix Web 界面
# 下载镜像
docker pull zabbix/zabbix-web-nginx-mysql:alpine-6.2-latest
# 启动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="123456" \
-e MYSQL_ROOT_PASSWORD="123456" \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-p 80:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:alpine-6.2-latest
5.登陆,用浏览器访问主机地址,用户名是Admin,密码是zabbix
6.Docker安装agent(在agent机器上操作)
# 下载镜像
docker pull zabbix/zabbix-agent:alpine-6.2-latest
# 创建存储卷,用于存储agent配置文件。
docker volume create -d local zabbix_agent
# 启动agent容器
docker run --name zabbix-agent -e ZBX_HOSTNAME="node1" -e ZBX_SERVER_HOST="192.168.221.21" -e ZBX_SERVER_PORT=10051 -p 10050:10050 --restart=unless-stopped --privileged -d zabbix/zabbix-agent:alpine-6.2-latest
# 测试连接
# 在Agent机器上测试是否能连接到Server:
# 测试端口连接,在Agent容器内测试
nc -zv 192.168.221.21 10051
docker exec zabbix-agent nc -zv 192.168.221.21 10051
# 在Server机器上测试是否能连接到Agent:
# 先获取Agent主机的 IP(以192.168.221.22为例)
# 测试端口连接,在Server容器内测试
nc -zv 192.168.221.22 10050
docker exec zabbix-server-mysql zabbix_get -s 192.168.221.22 -k agent.ping
Ubuntu22.04 LTS部署zabbix7.0
环境准备
IP主机名配置,用hostname加新的主机名修改
192.168.221.21 zabbix-01
192.168.221.22 zabbix-agent
192.168.221.23 db
1. 添加zabbix仓库
[root@zabbix-01:~]# wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu22.04_all.deb
[root@zabbix-01:~]# dpkg -i zabbix-release_latest_7.0+ubuntu22.04_all.deb
[root@zabbix-01:~]# apt update
2. 安装 Zabbix 相关软件包
[root@zabbix-01:~]# apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
3. 安装MySQL
[root@db:~]# apt install -y mysql-server-8.0
[root@db:~]# netstat -tnulp | grep 3306

4. 创建初始数据库
[root@db:~]# mysql
mysql> create database zabbix character set utf8mb4 collate utf8m;
mysql> create user zabbix@'%' identified by 'zabbix';
mysql> grant all privileges on zabbix.* to zabbix@'%';
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
5. 导入初始架构和数据,系统将提示您输入新创建的密码
[root@zabbix-01:~]# scp /usr/share/zabbix-sql-scripts/mysql/server.sql.gz 192.168.221.23:/root # 这里需要输入密码
[root@db:~]# zcat server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Enter password: # 输密码的时候不显示字符,此处我输入了 zabbix
[root@db:~]# mysql
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
6. 为Zabbix server配置数据库(当时我只显示了两条,缺的手动添加到文件里)
[root@zabbix-01:~]# egrep '^DBHost|^DBName|^DBUser|^DBPassword' /etc/zabbix/zabbix_server.conf

7. 为Zabbix前端配置PHP(就在开头第二和第三行)
[root@zabbix-01:~]# vim /etc/zabbix/nginx.conf

8. 启动Zabbix server和agent进程
[root@zabbix-01:~]# systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
[root@zabbix-01:~]# systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm
9. 设置中文web界面,浏览器访问192.168.221.21:8080
# 列出所有已安装的语言
[root@zabbix-01:~]# locale -a
[root@zabbix-01:~]# sed -n '/zh_CN.UTF-8 UTF-8/p' /etc/locale.gen
[root@zabbix-01:~]# sed -i 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen
[root@zabbix-01:~]# sed -n '/zh_CN.UTF-8 UTF-8/p' /etc/locale.gen
[root@zabbix-01:~]# locale-gen
[root@zabbix-01:~]# systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm




# 如果数据库拒绝连接,那就是3306端口未开放
vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1 # 把第31行注释掉,允许所有IP连接
# 重启MySQL
systemctl restart mysql
# 再进网页点击下一步就可以了


访问Web界面192.168.221.21:8080 账号:Admin 密码:zabbix

安装完zabbix后,已经自带了两个用户(Admin、Guests)
超级管理员默认账号: Admin,密码:zabbix,这是一个超级管理员。
Guests用户: 使用guest账号,密码为空,只能看到zabbix后台,没有具体内容。我们可以启用来宾账户,使用来宾账户登录到zabbix页面看一下。
用户群组: 群组的增删改查,和权限管理
用户管理: 用户增删改查、用户报警媒介管理、用户权限查看。
群组创建



用户创建


Web界面添加主机

等待刷新一下就绿了
被动模式与主动模式
被动模式:以zabbix-agent做为参考对象,也就是表示是server或proxy去找agent拿数据,agent被动的等待指令的下达。
# agent机器配置被动模式的参数
vim /etc/zabbix/zabbix_agentd.conf
Server=10.1.1.13 --IP为zabbix_proxy的ip(如果没有proxy,则直接为zabbix_server的ip)
systemctl restart zabbix-agent
主动模式:agent主动把数据传给server或proxy
# agent机器配置主动模式的参数
vim /etc/zabbix/zabbix_agentd.conf
Serveractive=10.1.1.13 --IP为zabbix_proxy的ip(如果没有proxy,则直接为zabbix_server的ip)
systemctl restart zabbix-agent
|
特性 |
被动监控(Passive) |
主动监控(Active) |
|
发起方 |
Server 主动请求 |
Agent 主动上报 |
|
连接方向 |
Server → Agent |
Agent → Server |
|
Agent 端口 |
10050(监听) |
不需要监听端口 |
|
Server 端口 |
不需要特定端口 |
10051(监听) |
|
网络要求 |
Server 能访问 Agent |
Agent 能访问 Server |
|
防火墙配置 |
开放Agent的10050端口 |
开放Server的10051端口 |
|
性能影响 |
Server 压力大 |
Server 压力小 |
|
适用场景 |
少量服务器、内网环境 |
大量服务器、云环境、有防火墙限制 |
被动模式与主动模式优缺点对比:
-
被动监控的优缺点:
-
优点:
-
配置简单
-
Server 完全控制检查时机
-
适合少量服务器
-
-
缺点:
-
Server 需要维护大量连接
-
Agent 需要开放端口(安全风险)
-
不适合大规模部署
-
-
-
主动监控的优缺点:
-
优点:
-
Server 压力小
-
Agent 不需要开放端口(更安全)
-
适合云环境、跨网络
-
支持数千台服务器
-
-
缺点:
-
配置稍复杂
-
Agent 需要能访问 Server
-
主机名必须严格匹配
-
-
两种模式的选择建议:
-
使用被动监控的场景:
-
测试环境、少量服务器
-
Server 和 Agent 在同一网络
-
需要 Server 完全控制检查频率
-
网络策略允许 Server 访问 Agent
-
-
使用主动监控的场景:
-
生产环境、大规模部署(100+台)
-
Agent 在公有云,Server 在内网
-
有严格防火墙策略
-
需要更好的扩展性
-

1244

被折叠的 条评论
为什么被折叠?



