欢迎光临
我们一直在努力

Day 17-Zabbix Proxy 分布式监控 + ELK 日志可视化分析

目录

  • Zabbix Proxy+Grafana可视化+Elasticsearch日志栈全流程实操复盘
    • 一、实验环境主机清单
    • 二、Zabbix Proxy部署与客户端接入
      • 2.1 软件源配置与Proxy组件安装
      • 2.2 数据库初始化与Proxy配置
      • 2.3 Server端JavaGateway配置
      • 2.4 客户端主机接入配置
    • 三、Grafana部署与Zabbix可视化对接
      • 3.1 Grafana安装与服务启动
      • 3.2 Zabbix插件安装与启用
      • 3.3 Zabbix数据源配置
      • 3.4 监控面板效果验证
    • 四、Elasticsearch基础部署与系统调优
      • 4.1 核心配置与系统参数调整
      • 4.2 服务启动与基础验证
    • 五、Docker部署与Cerebro集群管理
      • 5.1 Docker环境安装
      • 5.2 Cerebro容器部署
      • 5.3 集群接入与状态查看
    • 六、Elasticsearch集群角色划分
      • 6.1 节点角色配置
      • 6.2 角色调整验证
    • 七、Logstash基础日志采集验证
      • 7.1 基础管道配置
      • 7.2 启动与输出测试
    • 八、elasticsearch-head前端插件部署
      • 8.1 插件部署与启动
      • 8.2 跨域配置与连通验证
  • 踩坑汇总与实操总结
      • 核心踩坑点汇总
      • 实操心得

Zabbix Proxy+Grafana可视化+Elasticsearch日志栈全流程实操复盘

一、实验环境主机清单

本次实操覆盖监控与日志两大技术栈,涉及多台虚拟机节点,各节点IP与核心角色整理如下:

主机名IP地址核心角色
server1 192.168.48.162 Zabbix Server、Zabbix JavaGateway、Grafana服务端
server4 Zabbix Proxy代理节点、MySQL数据库
server2 192.168.48.163 Zabbix Agent客户端(Proxy代理模式)
server3 192.168.48.165 Zabbix Agent + JMX监控客户端
server1 192.168.48.136 Elasticsearch集群Master节点
server2 192.168.48.137 Elasticsearch集群数据节点
server4 192.168.48.138 Elasticsearch集群数据节点
server5 192.168.48.139 Docker宿主机、Cerebro管理工具、elasticsearch-head插件
server6 192.168.48.139 Logstash日志采集节点

说明:监控与日志体系为两套独立实验环境,部分主机名复用,操作时注意对应网段。

二、Zabbix Proxy部署与客户端接入

2.1 软件源配置与Proxy组件安装

首先在server4节点部署Zabbix Proxy,先配置官方6.0版本的yum源。直接通过rpm命令安装源发布包,再清理缓存安装Proxy相关组件:

# 安装Zabbix 6.0官方软件源
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
# 清理DNF缓存
dnf clean all
# 安装MySQL版Proxy、SQL脚本及MySQL服务
dnf install -y zabbix-proxy-mysql zabbix-sql-scripts mysql-server

在这里插入图片描述

2.2 数据库初始化与Proxy配置

安装完成后先启动MySQL服务,创建zabbix_proxy数据库并授权用户,然后导入Zabbix提供的初始SQL脚本。

数据库准备好之后,修改Proxy主配置文件,填写数据库地址、库名、账号密码,以及Zabbix Server的地址和Proxy自身主机名,确保Proxy能主动和Server建立通信。

在这里插入图片描述 在这里插入图片描述

2.3 Server端JavaGateway配置

因为后续要支持JMX类型的监控,需要在Zabbix Server端开启Java网关支持。先调整Java轮询进程的数量,默认是0,改成5个足够日常使用:

StartJavaPollers=5

然后指定JavaGateway的部署地址,这里JavaGateway和Server同机部署在server1,IP为192.168.48.162:

JavaGateway=192.168.48.162

修改完配置重启Zabbix Server服务,配置即可生效。

2.4 客户端主机接入配置

接下来在Zabbix Web页面添加被监控主机,第一台是server2,走Proxy代理模式:

  • 主机群组加入Discovered hosts和Linux servers
  • Agent接口填写192.168.48.163,端口10050
  • 监测方式选择“由Proxy代理程序监测”,选择对应Proxy实例 在这里插入图片描述

第二台主机需要同时监控系统指标和JMX应用,因此添加两个接口:

  • Agent接口:192.168.48.165,端口10050
  • JMX接口:192.168.48.165,端口8888 同样配置为Proxy代理监测,完成后点击更新。 在这里插入图片描述

三、Grafana部署与Zabbix可视化对接

Zabbix自带的图表功能比较基础,做汇报和大盘展示不够直观,接下来用Grafana做可视化展示。

3.1 Grafana安装与服务启动

在server1节点通过rpm包安装Grafana企业版:

# 安装Grafana
rpm -ivh grafana-enterprise_12.4.8_31135008312_Linux_amd64.rpm
# 设置开机自启并立即启动
systemctl enable –now grafana-server

安装时同样会有签名NOKEY的提示,属于正常现象。启动后用netstat查看3000端口监听状态,确认服务正常运行。

在这里插入图片描述

浏览器访问http://192.168.48.162:3000进入登录页,默认账号密码都是admin。 在这里插入图片描述

3.2 Zabbix插件安装与启用

Grafana原生不支持Zabbix数据源,需要手动安装第三方插件。将插件包解压到Grafana的插件目录下:

cd /var/lib/grafana/plugins
unzip alexanderzobnin-zabbix-app-6.6.0.linux-amd64.zip

在这里插入图片描述

这里有个很容易踩的坑:解压后的插件目录属主还是root,Grafana进程没有读取权限,会加载失败。必须修改目录属主为grafana用户,再重启服务:

chown -R grafana:grafana /var/lib/grafana/plugins/
systemctl restart grafana-server
systemctl status grafana-server

在这里插入图片描述

重启后在Grafana插件管理页就能看到Zabbix插件,版本为6.6.0,点击启用即可。

在这里插入图片描述

3.3 Zabbix数据源配置

启用插件后添加新数据源,类型选择Zabbix。核心配置两部分:

  • 连接地址:填写Zabbix API完整路径 http://192.168.48.162/zabbix/api_jsonrpc.php
  • 认证方式:选择Basic auth,填入Zabbix管理员账号密码 在这里插入图片描述
  • 下方还有TLS和高级HTTP设置,如果用的是自签证书或者测试环境,可以勾选跳过TLS证书验证,避免握手失败。 在这里插入图片描述

    所有参数填写完成后点击保存并测试,提示连接成功就说明数据源打通了。

    在这里插入图片描述

    3.4 监控面板效果验证

    数据源对接完成后,新建一个面板测试数据拉取。这里选择Linux服务器组的可用内存百分比指标,分别展示server2和server3的数据,能正常出曲线和数值就说明整个链路正常。

    查询配置选择Metrics类型,Group指定Linux servers,Item选择对应的内存监控项,即可自动匹配数据。

    在这里插入图片描述

    四、Elasticsearch基础部署与系统调优

    接下来进入日志栈部分,先完成Elasticsearch的基础部署和系统参数调优,保证服务稳定运行。

    4.1 核心配置与系统参数调整

    首先配置主机名解析

    在这里插入图片描述 软件安装

    rpm -ivh elasticsearch-7.6.1-x86_64.rpm

    修改ES主配置文件elasticsearch.yml,先统一集群名称,所有节点必须保持一致才能组成集群:

    vim /etc/elasticsearch/elasticsearch.yml

    cluster.name: myes

    在这里插入图片描述

    继续配置节点名称、网络监听地址、集群发现列表等基础参数,每个节点对应修改自己的节点名和IP。 在这里插入图片描述

    ES对系统资源限制要求较高,默认参数会导致启动失败,需要调整两处系统配置。 第一处是/etc/security/limits.conf,添加ES用户的资源限制:

    elasticsearch soft memlock unlimited
    elasticsearch hard memlock unlimited
    elasticsearch soft nofile 65535
    elasticsearch hard nofile 65535
    elasticsearch soft nproc 4096
    elasticsearch hard nproc 4096

    在这里插入图片描述

    第二处是修改ES的systemd服务文件,添加内存锁、文件句柄、进程数限制,确保系统层面配置生效:

    vim /usr/lib/systemd/system/elasticsearch.service

    LimitMEMLOCK=infinity
    LimitNOFILE=65535
    LimitNPROC=4096

    在这里插入图片描述

    systemctl daemon-reload
    swapoff -a
    vim /etc/fstab

    在这里插入图片描述

    systemctl daemon-reload
    systemctl enable –now elasticsearch

    4.2 服务启动与基础验证

    所有节点配置完成后依次启动ES服务。启动后在server1节点通过curl访问本地9200端口,验证服务是否正常运行:

    curl localhost:9200

    返回集群名称、版本号、Lucene版本等信息,就说明单节点启动成功。 在这里插入图片描述 server1配置好后,直接把配置复制到server2和server4

    #配置ssh免密
    ssh-keygen
    ssh-copy-id server2
    ssh-copy-id server4

    #复制软件
    scp elasticsearch-7.6.1-x86_64.rpm server2:
    scp elasticsearch-7.6.1-x86_64.rpm server4:

    #server2和server4软件安装
    rpm -ivh elasticsearch-7.6.1-x86_64.rpm
    rpm -ivh elasticsearch-7.6.1-x86_64.rpm

    #从server1复制配置
    cd /etc/elasticsearch/
    scp elasticsearch.yml server2:/etc/elasticsearch/
    scp elasticsearch.yml server4:/etc/elasticsearch/

    scp /etc/security/limits.conf server2:/etc/security/
    scp /etc/security/limits.conf server4:/etc/security/

    scp /usr/lib/systemd/system/elasticsearch.service server2:/usr/lib/systemd/system/
    scp /usr/lib/systemd/system/elasticsearch.service server4:/usr/lib/systemd/system/

    server2 server4上启动服务
    swapoff -a
    vim /etc/fstab
    #/dev/mapper/rhel-swap swap swap defaults 0 0

    systemctl daemon-reload
    systemctl enable –now elasticsearch

    五、Docker部署与Cerebro集群管理

    ES原生没有Web管理界面,用命令行看集群状态不够直观,这里部署Cerebro工具做可视化管理,基于Docker部署非常方便。

    5.1 Docker环境安装

    先在server5节点配置Docker的阿里云yum源,提升下载速度:

    yum-config-manager –add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    安装完成后启动Docker服务并设置开机自启,用docker info验证安装状态。 在这里插入图片描述

    5.2 Cerebro容器部署

    这里用本地镜像包加载的方式部署Cerebro,不用联网拉取镜像:

    # 加载本地镜像
    docker load -i cerebro.tar
    # 启动容器,映射9000端口
    docker run -d –name cerebro -p 9000:9000 lmenezes/cerebro

    启动后查看9000端口监听状态,确认容器正常运行。

    在这里插入图片描述

    在这里插入图片描述

    5.3 集群接入与状态查看

    浏览器访问http://192.168.48.139:9000进入Cerebro登录页,在Node address处填写ES集群任意节点的地址,比如http://192.168.48.136:9200,点击Connect连接。 在这里插入图片描述

    连接成功后进入集群概览页,可以看到集群状态为green,共3个节点,0个索引,整体状态健康。 在这里插入图片描述

    切换到nodes页面,可以看到每个节点的详细指标:CPU使用率、堆内存使用、磁盘占用、运行时长等,比命令行直观很多。 在这里插入图片描述

    六、Elasticsearch集群角色划分

    默认ES节点同时承担多种角色,生产环境通常会做角色分离,提升集群稳定性。

    6.1 节点角色配置

    这里我们先把server1设置为专用Master节点,不存储数据,只负责集群管理:

    vim /etc/elasticsearch/elasticsearch.yml

    node.master: true
    node.data: false
    node.ingest: true
    node.ml: false

    在这里插入图片描述

    修改配置后重启对应节点,集群会自动感知节点角色变化,出现节点离开和加入的提示,属于正常现象。 在这里插入图片描述

    6.2 角色调整验证

    重启完成后回到Cerebro的nodes页面,可以看到节点角色标签已经更新:server1带有master和ingest标签,不带data标签;另外两个节点保留data角色,说明角色划分生效。 在这里插入图片描述

    在这里插入图片描述

    七、Logstash基础日志采集验证

    Logstash是ELK栈里的日志采集组件,这里做一个最基础的输入输出测试,验证从标准输入写入、输出到ES的链路。

    7.1 基础管道配置

    编写最简单的Logstash管道配置文件,输入用标准输入,输出到Elasticsearch: 在这里插入图片描述

    input {
    stdin {}
    }
    output {
    stdout {}
    elasticsearch {
    hosts => "192.168.48.136:9200"
    index => "logstash-%{+YYYY.MM.dd}"
    }
    }

    7.2 启动与输出测试

    指定配置文件启动Logstash,启动成功后会看到API端口9600监听的日志: 在这里插入图片描述

    在控制台依次输入helloworld、centos linux、redhat linux,可以看到日志被结构化处理,添加了@timestamp、host等字段,同时同步写入ES集群。 在这里插入图片描述

    八、elasticsearch-head前端插件部署

    除了Cerebro,elasticsearch-head也是常用的ES可视化插件,更侧重索引和数据的浏览操作。

    yum install -y bzip2
    tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2
    cd phantomjs-2.1.1-linux-x86_64
    cp bin/phantomjs /usr/local/bin/
    yum install -y fontconfig
    phantomjs

    # 安装插件
    rpm -ivh nodejs-9.11.2-1nodesource.x86_64.rpm
    yum install -y unzip
    unzip elasticsearch-head-master.zip
    cd elasticsearch-head-master/
    npm install –registry=https://registry.npmmirror.com/

    在这里插入图片描述

    8.1 插件部署与启动

    elasticsearch-head是前端项目,需要Node.js环境运行。先修改插件的配置文件,指定ES集群的访问地址:

    vim /elasticsearch-head-master/_site/app.js

    this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.48.136:9200";

    在这里插入图片描述

    配置完成后用npm启动服务,后台运行:

    npm run start &

    在这里插入图片描述 启动后查看9100端口监听状态,确认服务正常运行。

    8.2 跨域配置与连通验证

    直接访问head插件会出现跨域报错,因为浏览器前端请求ES接口受同源策略限制。需要在ES的配置文件中开启跨域支持:

    vim /etc/elasticsearch/elasticsearch.yml

    在这里插入图片描述 重启ES服务后,刷新head插件页面,就能正常连接集群了。可以看到集群状态为green,已经生成了logstash和ilm-history两个索引,数据正常写入。 在这里插入图片描述


    踩坑汇总与实操总结

    核心踩坑点汇总

  • Grafana插件加载失败:解压后未修改插件目录属主,Grafana进程无读取权限,必须执行chown -R grafana:grafana修正权限。
  • ES启动报错内存锁失败:只修改了limits.conf未调整systemd服务配置,两处参数同时配置才能真正生效。
  • elasticsearch-head连接失败:ES默认关闭跨域支持,必须在elasticsearch.yml中开启cors配置,否则会被浏览器同源策略拦截。
  • rpm安装包NOKEY警告:属于未导入GPG公钥的正常提示,不影响软件安装功能,无需额外处理。
  • 实操心得

    这次实操把Zabbix分布式监控和ELK日志栈的基础部署完整串了一遍,整体下来最大的感受是:运维部署的细节决定成败,很多看似不起眼的权限、资源限制、跨域配置,恰恰是最容易踩坑的地方。

    Proxy模式很好地解决了分布式、跨网段的监控需求,Grafana则大幅提升了监控数据的展示效果;而ES集群角色分离、多套可视化工具的搭配,也让日志平台的运维和排查更清晰可控。后续还可以继续深入告警规则配置、日志结构化解析、索引生命周期管理这些内容,把整个监控和日志体系做得更完善、更贴合生产场景。

    赞(0)
    未经允许不得转载:171主机测评 » Day 17-Zabbix Proxy 分布式监控 + ELK 日志可视化分析
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址