k8s 部署 metribeat 实现 kibana 可视化 es 多集群监控指标

文章目录

    • @[toc]
    • 环境介绍
    • 老(来)板(把)真(展)帅(示)
      • helm 包准备
      • 配置监控集群
        • 获取集群 uuid
        • 生成 api_key
        • 配置 values.yaml
      • 配置 es 集群
        • 获取集群 uuid 和 api_key
        • 配置 values.yaml
      • 查看监控
    • 缺少角色的报错

开始之前,需要准备好以下场景

  • 一套 k8s 环境
    • k8s 内有两套不同的 es 集群
    • 有一个 kibana
    • 有 helm 包管理工具
  • 本集群用到的 es 和 metricbeat 都是 8.12.2 版本的
  • 关于 es 和 kibana 部署,可以参考我之前的博客,我也是基于这个环境进行的配置:k8s 使用 helm 文件部署 8.12.2 es 分角色集群

环境介绍

es-svc 地址es 集群作用
monitor-es-cluster-master-headless:9200es 监控集群
es-cluster-ingest-headless:9200es 集群

老(来)板(把)真(展)帅(示)

helm 包准备

添加 es 的 helm 仓库

helm repo add elastic https://helm.elastic.co

下载 chart 包

helm pull elastic/metricbeat --version 8.5.1

解压 chart 包

tar xf metricbeat-8.5.1.tgz

配置监控集群

这个集群的 svc 地址就是 monitor-es-cluster-master-headless:9200

  • 需要注意,metricbeat.modules 配置里面的 es 节点,一定要有 ingestremote_cluster_client 这两个角色
获取集群 uuid

在 kibana 页面,找到侧边栏的 开发工具 或者 Dev Tools,输入 GET /,在当前行的最右边有一个箭头点一下,运行这个 api,就能获得到类似下面这样的 json 内容,我们需要的是 cluster_uuid 的值

{
  "name": "monitor-es-cluster-master-0",
  "cluster_name": "monitor-es-cluster",
  "cluster_uuid": "hc2B2wFrQcWrmnH7yQmGxg",
  "version": {
    "number": "8.12.2",
    "build_flavor": "default",
    "build_type": "docker",
    "build_hash": "48a287ab9497e852de30327444b0809e55d46466",
    "build_date": "2024-02-19T10:04:32.774273190Z",
    "build_snapshot": false,
    "lucene_version": "9.9.2",
    "minimum_wire_compatibility_version": "7.17.0",
    "minimum_index_compatibility_version": "7.0.0"
  },
  "tagline": "You Know, for Search"
}
生成 api_key

在 kibana 界面,找到侧边栏最下面的 Stack Management,找到 安全-API 密钥 或者 Security-API keys,然后创建 创建 API 密钥 或者 Create API Key,自己定义一个名字,然后创建 API key

在这里插入图片描述

已编码切换成 beats,然后复制这个 api_key,下面的配置文件会用到

在这里插入图片描述

配置 values.yaml
cd metricbeat/
cp values.yaml{,.tmp}
vim values.yaml

完成的 yaml 文件很长,我这里只标注一下我修改的内容,具体看注释

metricbeat 配置文件的解释:Configure Metricbeat

# 这里把 daemonset 类型注释掉,下面有 deployment 类型的
# 这个也是大家看自己的场景选择
daemonset:
  enabled: false
# 以下的内容,都是在 deployment 层下面修改的
deployment:
# 这里要注意 es 用户名密码的 secret 名字是不是集群有的
  extraEnvs:
    - name: "ELASTICSEARCH_USERNAME"
      valueFrom:
        secretKeyRef:
          name: elastic-credentials
          key: username
    - name: "ELASTICSEARCH_PASSWORD"
      valueFrom:
        secretKeyRef:
          name: elastic-credentials
          key: password
# metricbeat 配置文件的处理
  metricbeatConfig:
    metricbeat.yml: |
      metricbeat.modules:
      # 我这边拿来采集 es 集群的,要把官方 helm 里面关于 k8s 采集的注释掉
      # - module: kubernetes
      #   enabled: true
      #   metricsets:
      #     - state_node
      #     - state_deployment
      #     - state_replicaset
      #     - state_pod
      #     - state_container
      #   period: 10s
      #   hosts: ["${KUBE_STATE_METRICS_HOSTS}"]
      # es 采集配置
      - module: elasticsearch
        # 启用xpack
        xpack.enabled: true
        # 采集信息模块
        metricsets:
        - node
        - node_stats
        - index
        - index_recovery
        - index_summary
        - ingest_pipeline
        - shard
        - ml_job
        period: 10s
        # ES节点地址,这里我们采集当前的监控集群
        hosts: ["http://monitor-es-cluster-master-headless:9200"]
        # 前面在 kibana 页面生成的 api_key
        api_key: "oE7pkpABoGOz8aGJATlZ:BymKoPGeStexKYo2RJgXWQ"
        # 集群模式
        scope: cluster

      # 采集 metricbeat 自身
      - module: beat
        # 启用xpack
        xpack.enabled: true
        # 采集信息模块
        metricsets:
          - stats
          - state
        period: 10s
        # metricbeat 地址信息
        hosts: ["http://localhost:5066"]
        
      # 采集 kibana
      - module: kibana
        # 启用xpack
        xpack.enabled: true
        # 采集信息模块
        metricsets:
          - status
          - cluster_actions
          - cluster_rules
          - node_actions
          - node_rules
          - settings
          - stats
        period: 10s
        # kibana 地址
        hosts: ["http://monitor-kibana-kibana:5601"]
        # kibana 的用户名密码
        username: "kibana_login"
        password: "Passw0rd@123"
      # 定义 metricbeat 采集的指标推送到哪个 es
      # 这里是推送到监控集群
      output.elasticsearch:
        hosts: ["http://monitor-es-cluster-master-headless:9200"]
        api_key: "oE7pkpABoGOz8aGJATlZ:BymKoPGeStexKYo2RJgXWQ"
        _source.enabled: true
        preset: balanced
        protocol: "http"
        # ssl.enabled: true
        # ssl.certificate_authorities: ["/usr/share/metricbeat/certs/ca.crt"]
      # 增加自定义的标签信息
      processors:
        - add_host_metadata: ~
        - add_docker_metadata: ~
        - add_kubernetes_metadata: ~
      # 配置日志记录等级,error 错误才需要记录
      logging.level: error
      monitoring.enabled: false
      # 这里的 uuid 是 metricbeat.modules 里面的 es 集群的 uuid
      ## 可以通过 kibana 或者 curl 去 GET /_cluster/state 来获取
      monitoring.cluster_uuid: "hc2B2wFrQcWrmnH7yQmGxg"
      # 启用 http,便于健康检查
      http.enabled: true
      http.host: 0.0.0.0
      http.port: 5066
      setup.template.settings:
        index.number_of_shards: 1
        index.codec: best_compression
# 我不是 https 的集群,不需要证书,这里直接注释掉,记得在 secretMounts 后面加上 []
  secretMounts: []
    # - name: elasticsearch-master-certs
    #   secretName: elasticsearch-master-certs
    #   path: /usr/share/metricbeat/certs/
# 配置资源限制,根据自己情况选择改不改
  resources:
    requests:
      cpu: "100m"
      memory: "100Mi"
    limits:
      cpu: "1000m"
      memory: "1Gi"
# 修改镜像 tag
imageTag: "8.12.2"
# 不安装 kube_state_metrics,因为不监控 k8s 集群
kube_state_metrics:
  enabled: false

开始安装,namespace 大家按照自己环境来

helm install monitor-es-metricbet ./ -n es-logs

返回类似下面的输出,说明 pod 开始启动了

NAME: manager-metricbet
LAST DEPLOYED: Sun Jul  7 15:23:39 2024
NAMESPACE: es-logs
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Watch all containers come up.
  $ kubectl get pods --namespace=es-logs -l app=manager-metricbet-metricbeat -w

配置 es 集群

获取集群 uuid 和 api_key

和上面的方式一样,登录到对应的 es 集群的 kibana 界面去获取 uuid 和 api_key

配置 values.yaml

直接复制一份 values.yaml 文件

cp values.yaml es-values.yaml

参照上面的内容做一下修改

      # 监控的 es 节点要修改一下
      - module: elasticsearch
        hosts: ["http://es-cluster-ingest-headless:9200"]
        api_key: "g0z0kpABrZG0ZA7sBUmp:spB5sF6RQe2FMygMMR-Ang"
      - module: kibana
        hosts: ["http://kibana-kibana:5601"]
        # kibana 的用户名密码
        username: "kibana_login"
        password: "Passw0rd@123"
      ## 可以通过 kibana 或者 curl 去 GET /_cluster/state 来获取
      monitoring.cluster_uuid: "YP1_tGWUTEOzQHXH9v4LNA"

开始安装

helm install es-metricbet ./ -f es-values.yaml -n es-logs

查看监控

打开监控集群的 kibana 页面,找到侧边栏的 堆栈检测 或者 Stack Monitoring ,然后点 继续 或者 Continue

在这里插入图片描述

点击 创建 或者 Create

在这里插入图片描述

然后就能看到监控的两套 es 集群了

在这里插入图片描述

点一个进去,就能看到监控的信息了

在这里插入图片描述

可以点一下 Nodes,就能进去看 es 的节点监控了

在这里插入图片描述

缺少角色的报错

Access Denied

You are not authorized to access Monitoring. To use Monitoring, you need the privileges granted by both the `kibana_admin` and `monitoring_user ` roles.

If you are attempting to access a dedicated monitoring cluster, this might be because you are logged in as a user that is not configured on the monitoring cluster.

Since Cross Cluster Search is enabled (`monitoring.ui.ccs.enabled` is set to `true`), make sure your cluster has the `remote_cluster_client` role on at least one node.

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/785234.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Aqara 发布多款智能照明新品,引领空间智能新时代

7月8日,全球 IoT 独角兽品牌 Aqara 以“光,重塑空间想象”为主题,举办了线上智能照明新品沟通会。 会上,Aqara 正式发布一系列引领行业的智能照明新品,包括银河系列轨道灯 V1 以及繁星系列妙控旋钮 V1 等,…

Hospital Management System v4.0 SQL 注入漏洞(CVE-2022-24263)

前言 CVE-2022-24263 是一个影响 Hospital Management System (HMS) v4.0 的 SQL 注入漏洞。这个漏洞允许攻击者通过注入恶意 SQL 代码来获取数据库的敏感信息,甚至可能控制整个数据库。以下是对这个漏洞的详细介绍: 漏洞描述 在 Hospital Management…

使用Keil 点亮LED灯 F103ZET6

1.新建项目 不截图了 2.startup_stm32f10x_hd.s Keil\Packs\Keil\STM32F1xx_DFP\2.2.0\Device\Source\ARM 搜索startup_stm32f10x_hd.s 复制到项目路径,双击Source Group 1 3.项目文件夹新建stm32f10x.h, 新建文件main.c #include "stm32f10x…

OS-HACKNOS-2.1

确定靶机IP地址 扫描靶机开放端口信息 目录扫描 访问后发现个邮箱地址 尝试爆破二级目录 确定为wordpress站 利用wpscan进行漏洞扫描 #扫描所有插件 wpscan --url http://192.168.0.2/tsweb -e ap 发现存在漏洞插件 cat /usr/share/exploitdb/exploits/php/webapps/46537.txt…

Camera Raw:裁剪

Camera Raw 的裁剪 Crop面板提供了裁剪、旋转、翻转、拉直照片等功能,通过它们可以更精确地调整照片的视角和范围,以达到最佳二次构图的视觉效果。 快捷键:C ◆ ◆ ◆ 使用方法与技巧 1、使用预设 选择多种裁剪预设(如 1:1、16:…

前端传到后端的data数组中有些属性值为空

将前端输入框中的值全部放入data中传入后端,但是在后端查看发现后端接收到的数据有些属性值为空。 第一种情况:只有第一个属性为空,其余属性接收正常 可能原因:后端用来接收的 比如前端发送数据: 实际上前端发送的数…

防火墙详解(USG6000V)

0、防火墙组网模式 防火墙能够工作在三种模式下分别是路由模式、透明模式、旁路检测模式、混合模式 0.1、路由模式 路由模式:防火墙全部以第三层对外连接,即接口具有IP 地址。一般都用在防火墙是边界的场景下 防火墙需要的部署/配置: 接…

【Excel】 批量跳转图片

目录标题 1. CtrlA全选图片 → 右键 → 大小和属性2. 取消 锁定纵横比 → 跳转高度宽度 → 关闭窗口3. 最后一图拉到最后一单元格 → Alt吸附边框![](https://i-blog.csdnimg.cn/direct/d56ac1f41af54d54bb8c68339b558dd1.png)4. CtrlA全选图片 → 对齐 → 左对齐 → 纵向分布!…

C++初探究

概述 C可以追溯到1979年,C之父Bjarne Stroustrup在在使用C语言研发工作时发现C语言的不足,并想要将其改进,到1983年,Bjarne Stroustrup在C语言的基础上添加了面向对象编程的特性,设计出了C的雏形。 网址推荐 C官方文…

Java面试八股之MySQL主从复制机制简述

MySQL主从复制机制简述 MySQL的主从复制机制是一种数据复制方案,用于在多个服务器之间同步数据。此机制允许从一个服务器(主服务器)到一个或多个其他服务器(从服务器)进行数据的复制,从而增强数据冗余、提…

HTTP 请求走私漏洞详解

超详细的HTTP请求走私漏洞教程,看完还不会你来找我。 1. 简介 HTTP请求走私漏洞(HTTP Request Smuggling)发生在前端服务器(也称代理服务器,一般会进行身份验证或访问控制)和后端服务器在解析HTTP请求时&…

YASKAWA安川Σ-V系列伺服驱动器AC设计维护手侧

YASKAWA安川Σ-V系列伺服驱动器AC设计维护手侧

C#——序列化和反序列化概念

(1)序列化 在编程中,序列化是指将对象转换为可存储或传输的格式,例如将对象转换为 JSON 字符串或字节流。 (2)反序列化 在编程中,反序列化则是将存储或传输的数据转换回对象的过程。 序列化和反序列化经常用于数据的持久化、数据交换以及…

JAVA基础-----包装类,自动装箱、拆箱

一、包装类: Java中的数据类型总体上分为基本数据类型和引用数据类型。引用类型的数据可以通过对象的属性和方法来进行操作,但对于基本数据类型的数据,我们能不能像操作对象那样来操作呢?为了实现这个目标,Java为8种基…

WebOffice在线编微软Offfice,并以二进制流的形式打开Word文档

在日常办公场景中,我们经常会遇到这种场景:我们的合同管理系统的各种Word,excel,ppt数据都是以二进制数组的形式存储在数据库中,如何从数据库中读取二进制数据,以二进制数据作为参数,然后加载到浏览器的Office窗口&…

华为HCIP Datacom H12-821 卷30

1.单选题 以下关于OSPF协议报文说法错误的是? A、OSPF报文采用UDP报文封装并且端口号是89 B、OSPF所有报文的头部格式相同 C、OSPF协议使用五种报文完成路由信息的传递 D、OSPF所有报文头部都携带了Router-ID字段 正确答案:A 解析: OSPF用IP报…

每日一练全新考试模式解锁|考试升级

🙋频繁有小伙伴咨询:我想举办一场历时一个月的答题活动,学生可以每天打开答题,活动完结后可以导出每天的答题成绩 此前我们都会让小伙伴创建30场考试,然后使用批量分享功能组合起来,对外分享一个链接就可以…

强化学习编程实战-2马尔可夫决策过程

2.1 从多臂赌博机到马尔可夫决策过程 如图2-1,图中A为多臂赌博机,B为一堆鸳鸯,其中左上角为雄性鸳鸯,右上角为雌性鸳鸯,B展示的任务是雄性鸳鸯绕过障碍物找到词性鸳鸯。跟多臂赌博机不同的是,雄性鸳鸯经过一…

提升爬虫OCR识别率:解决嘈杂验证码问题

引言 在数据抓取和网络爬虫技术中,验证码是常见的防爬措施,特别是嘈杂文本验证码。处理嘈杂验证码是一个复杂的问题,因为这些验证码故意设计成难以自动识别。本文将介绍如何使用OCR技术提高爬虫识别嘈杂验证码的准确率,并结合实际…

小米订单锐减背后的挑战与应对之道

近期,富士康印度子公司Bharat FIH面临高管离职、工厂关闭的困境,其背后原因之一是小米订单的显著下滑,据报道,这一降幅高达70%。这一现象不仅反映了富士康在印度市场的艰难处境,也揭示了小米在全球智能手机市场面临的挑…