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-credentialskey: username- name: "ELASTICSEARCH_PASSWORD"valueFrom:secretKeyRef:name: elastic-credentialskey: 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# 启用xpackxpack.enabled: true# 采集信息模块metricsets:- node- node_stats- index- index_recovery- index_summary- ingest_pipeline- shard- ml_jobperiod: 10s# ES节点地址,这里我们采集当前的监控集群hosts: ["http://monitor-es-cluster-master-headless:9200"]# 前面在 kibana 页面生成的 api_keyapi_key: "oE7pkpABoGOz8aGJATlZ:BymKoPGeStexKYo2RJgXWQ"# 集群模式scope: cluster# 采集 metricbeat 自身- module: beat# 启用xpackxpack.enabled: true# 采集信息模块metricsets:- stats- stateperiod: 10s# metricbeat 地址信息hosts: ["http://localhost:5066"]# 采集 kibana- module: kibana# 启用xpackxpack.enabled: true# 采集信息模块metricsets:- status- cluster_actions- cluster_rules- node_actions- node_rules- settings- statsperiod: 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: truepreset: balancedprotocol: "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: errormonitoring.enabled: false# 这里的 uuid 是 metricbeat.modules 里面的 es 集群的 uuid## 可以通过 kibana 或者 curl 去 GET /_cluster/state 来获取monitoring.cluster_uuid: "hc2B2wFrQcWrmnH7yQmGxg"# 启用 http,便于健康检查http.enabled: truehttp.host: 0.0.0.0http.port: 5066setup.template.settings:index.number_of_shards: 1index.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: elasticsearchhosts: ["http://es-cluster-ingest-headless:9200"]api_key: "g0z0kpABrZG0ZA7sBUmp:spB5sF6RQe2FMygMMR-Ang"- module: kibanahosts: ["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 DeniedYou 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.

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑如何重新分盘——保姆级教程

方法一: 通过此电脑,鼠标右键点击此电脑,点击管理 点击磁盘管理进入 二,磁盘分区 我这里选择的是“磁盘0”的C盘进行操作,一般新电脑拿到手的时候都处于这么一个状态,只有一个磁盘分区。现在我要把C盘拆分…

从汇编层看64位程序运行——参数传递的底层实现

大纲 小于等于6个参数一个参数总结 两个参数总结 三个参数总结 四个参数总结 五个参数总结 六个参数总结 大于6个参数七个参数总结 在32位系统中,参数的传递主要依靠栈来进行。那么64位系统上,是否依旧符合这个规则呢?答案是“不是”。64位系…

FFmpeg开发环境搭建

FFmpeg是音视频开发必备的库,也是唯一的库。本文主要讲解在ubuntu22和macOS14环境下的编译安装。 为什么要自己编译呢?其中一个很重要的原因就是ffmpeg在编译时可以加入很多插件,这种特定的库网络上可能找不到编译好的版本,另外如…

在自定义总线下注册设备

1、自定义总线下注册设备 //my_bus_dev.c #include<linux/module.h> #include<linux/init.h> #include<linux/kernel.h> #include<linux/kobject.h> #include<linux/slab.h> #include<linux/sysfs.h> #include<linux/device.h> #in…

solidity实战练习3——荷兰拍卖

//SPDX-License-Identifier:MIT pragma solidity ^0.8.24; interface IERC721{function transFrom(address _from,address _to,uint nftid) external ; }contract DutchAuction { address payable immutable seller;//卖方uint immutable startTime;//拍卖开始时间uint immut…

属于马云的时代结束了

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 马云突然回国了&#xff0c;还出现在阿里巴巴的大厦里。大家都非常激动&#xff0c;阿里沸腾了&#xff0c;整个杭州&#xff0c;甚至全网都沸腾了&#xff0c;日本慌了&#xff0c;美国坐不住了&#xff0c;欧洲陷…

CSS技巧专栏:一日一例 5-纯CSS实现背景色从四周向中心填充的按钮特效

特此说明 本专题专注于讲解如何使用CSS制作按钮特效。前置的准备工作和按钮的基本样式,都在本专栏第一篇文章中又详细说明。自本专栏第四篇文章起,本专栏都将直接跳过前面的内容,不再重复复制,需要了解按钮基础样式的同学,请移步:《CSS技巧 - 一日一例 (1):会讨好的热…

关键路径-matlab

路径上边的数目称为路径长度 图的基本知识 求最短路径&#xff08;Dijkstra算法&#xff09; 2. 待继续尝试 ①Dijkstra ②floyd_all.m 一 二 ③ LeetCode [329. 矩阵中的最长递增路径]

SpringCloud---zuul路由网关

zuul网关 zuul网关定义 Zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet(filter)应用。Zuul 在云平台上提供动态路由&#xff0c;监控&#xff0c;弹性&#xff0c;安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的…

Kithara与OpenCV (二)

Kithara使用OpenCV QT 进行特征检测 目录 Kithara使用OpenCV QT 进行特征检测OpenCV 特征检测简介Qt应用框架简介项目说明关键代码抖动测试测试平台&#xff1a;测试结果&#xff1a;结论 OpenCV 特征检测简介 OpenCV是一个开源的计算机视觉库&#xff0c;提供了各种图像处理…

一图展示免费开源的分布式版本控制系统​Git

文章目录 前言一、安装Git二、Git配置三、git命令 前言 Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 一、安装Git Windows操作系统…

如何更好的优化 ListView 控件的性能

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c;主要职责&#xff1a;测试开发、CI/CD&#xff0c;日常还会涉及Android开发工作。 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起…

MongoDB教程(四):mongoDB索引

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、MongoD…

windows查看局域网所有设备ip

windows如何查看局域网所有设备ip 操作方法 一 . 在搜索栏里输入cmd 二 .在命令行黑窗口输入arp -a 三 . 最上面显示的动态地址就是所有设备ip

IOS上微信小程序密码框光标离开提示存储密码解决方案

问题&#xff1a; ios密码框输入密码光标离开之后会提示存储密码的弹窗 解决方案 1、在苹果手机上面把 “自动填充密码”关闭&#xff0c;但是苹果这个默认开启&#xff0c;而且大部分客户也不会去自己关闭。 2、欺骗苹果手机&#xff0c;代码实现。 先说解决思路&#xf…

80. UE5 RPG 实现UI显示技能冷却进度功能

在上一篇文章里&#xff0c;我们实现了通过GE给技能增加资源消耗和技能冷却功能。UI也能够显示角色能够使用的技能的UI&#xff0c;现在还有一个问题&#xff0c;我们希望在技能释放进去冷却时&#xff0c;技能变成灰色&#xff0c;并在技能冷却完成&#xff0c;技能可以再次使…

在Anaconda环境中安装TensorFlow+启动jupyter notebook

1.打开cmd&#xff0c;输入C:\Users\xy>conda create -n tensorflow python3.7 这是在环境中创建了一个名为tensorflow的环境&#xff0c;具体会显示以下信息&#xff1a; C:\Users\xy>conda create -n tensorflow python3.7 Retrieving notices: ...working... done Co…

Python实战Elasticsearch的核心技巧详解

概要 Elasticsearch 是一个分布式的搜索引擎,可以用于全文搜索、结构化搜索、分析等多种场景。它基于Lucene构建,提供了强大的搜索功能和数据分析能力。本文将详细介绍如何使用Python实现与Elasticsearch的交互,包括安装、配置、基本操作和实际应用示例。 安装和配置 安装…

centos单机配置多个内网IP地址

centos单机配置多个内网IP地址 引配置1. 查看当前网络IP配置2. 打开网络配置目录3. 设置静态IP4. 编辑ifcfg-eno1:15. 重启网络配置 引 同一个局域网&#xff0c;但是对接的多个子系统使用了不同的网段&#xff0c;如一个系统主机IP地址是192.168.10.1&#xff0c;另一个系统主…

基于B站视频评论的文本分析,采用包括文本聚类分析、LDA主题分析、网络语义分析

研究主题 本研究旨在通过对B站视频评论数据进行文本分析&#xff0c;揭示用户评论的主题、情感倾向和语义结构&#xff0c;助力商业决策。主要技术手段包括Python爬虫、LDA主题分析、聚类分析和语义网络分析。首先&#xff0c;利用Python爬虫采集大量评论数据并进行预处理。运…