Zabbix监控基础和部署

监控

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 在内网

    • 有严格防火墙策略

    • 需要更好的扩展性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值