Prometheus: 通过ConfigMap来添加Grafana仪表盘

2023-11-17

如果你通过kube-prometheus-stack部署了Prometheus/Grafana,那么Grafana中的仪表盘就是通过边车(sidecar)来动态获取的。Sidecar的观察对象是ConfigMap,当ConfigMap中配置的仪表盘发生变更时,可以动态更新Grafana的仪表盘,而无需重启pod。

在本文中,我将向你展示如何在Prometheus中识别要衡量的指标,在Granfa中创建一个仪表盘来显示该指标,并将仪表盘导出为json文件。然后通过使用json数据和适当的标签填充ConfigMap,并使用导出的仪表盘文件跨其他Grafana实例重新创建仪表盘。

识别指标

作为一个基本示例,让我们考虑集群中的总pod 数。使用kubectl命令获取所有命名空间中非零计数的pod:

kubectl get pods -A --no-headers | awk {'print $3'} | grep -v ^0 | wc -l

从Prometheus主页面验证指标值是否匹配,使用如下查询

kubectl_running_pods{job='apiserver'}

结果如下所示:

在这里插入图片描述

创建和导出

现在我们在Grafana Web UI中手动构建一次仪表盘,然后将其导出为json,然后可以将其放入ConfigMap中以供将来自动化和持久化。

登录 Grafana,单击仪表盘 -> 新仪表盘
[!pic]
在这里插入图片描述

使用Pod Count作为标题,选择 Prometheus作为数据源并输入之前测试过的 Prometheus指标,然后点击"Run queries"按钮来获取指标数据。
在这里插入图片描述
保存仪表盘:
在这里插入图片描述
结果如下:
在这里插入图片描述

导出仪表盘

按如下所示的“共享”图标将此仪表板保存为 json 文件:
在这里插入图片描述
在这里插入图片描述

删除手动创建的仪表盘

为了证明我们刚刚导出的json文件可以重新创建这个dashboard,我们需要先删除仪表盘,Dashboard settings->Delete Dashboard:
在这里插入图片描述
在这里插入图片描述

使用ConfigMap重新生成Grafana仪表盘

上面导出了仪表盘的json文件,接下来创建一个特殊标记的ConfigMap,Grafana kiwigrid sidecar 就会自动拉取它并重新创建仪表盘。

ConfigMap

在本文中,我们有一个命名空间prom,Grafana pod就在这个命名空间中。然后我们创建一个ConfigMap,其中grafana_dashboard需要设置为1,如下所示(完整实例):

# pod-count-dashboard.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    grafana_dashboard: "1"
  name: grafana-k8s-pod-count
  namespace: prom
data:
  k8s-pod-count.json: |-
    {
      ...
      ...
      ...
    }

这里将导出的仪表盘文件内容复制到ConfigMap中然后直接创建ConfigMap。

除此之外,还可以通过以下命令来创建ConfigMap:

# create cofigmap from exported json
kubectl create configmap grafana-k8s-pod-count -n prom --from-file=k8s-pod-count.json

# apply label that makes it Grafana target
kubectl label configmap grafana-k8s-pod-count -n prom grafana_dashboard=1

验证结果

等待30s后再Grafana中查看结果:

在这里插入图片描述

通过kustomize创建ConfigMap

上节介绍的是手动创建ConfigMap的方式,还可以通过kustomize来创建ConfigMap。kustomization.yaml文件内容如下:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

commonLabels:
 grafana_dashboard: "1"

configMapGenerator:
- name: grafana-k8s-pod-count
  namespace: prom
  # specify name of locally downloaded json
  files:
  - k8s-pod-count.json

generatorOptions:
  disableNameSuffixHash: true

使用kustomize命令或"-k"标志应用kustomization.yaml中的设置,如下所示:

# generate configmap then apply
$ kubectl kustomize | kubectl apply -f -
configmap/grafana-k8s-pod-count created

# generate configmap and apply
# kubectl apply -k .
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Prometheus: 通过ConfigMap来添加Grafana仪表盘 的相关文章

  • vcpkg安装zlmediakit(windows环境)

    文章目录 一 简介 二 vcpkg安装 1 vcpkg源码下载 2 vcpkg安装 三 安装zlmediakit 1 默认安装开启特性 core mp4 openssl webrtc 2 安装全部特性zlmediakit 包括webrtc
  • docker重启时数据库丢失

    我在 Windows 10 的 Docker 上运行 influxdb 和 grafana 每次关闭 Docker 时 我都会丢失数据库 这是我所知道的 我尝试过调整保留策略 但对 结果 我可以关闭并重新启动容器 docker compos
  • 如何使用gin作为服务器编写prometheus导出器指标

    这是官方的prometheus golang client示例 package main import log net http github com prometheus client golang prometheus github c
  • 如何以零停机时间将 istio 1.4.3 升级到最新版本

    我是新聘的工程师 最近开始使用 istio 我的应用程序当前在 istio 1 4 3 上运行 当我尝试使用 istioctl Upgrade 升级到最新版本时遇到问题 以下是我尝试过的步骤 1 使用 istioctl version 验证
  • 使用 Prometheus 监控 Spring Boot 缓存指标

    我正在尝试使用 prometheus 来监控 spring boot 的一些缓存指标 缓存是用以下命令创建的 Cacheable我的配置如下 management endpoints web exposure include metrics
  • 带有正则表达式的标签-普罗米修斯

    我正在尝试使用正则表达式添加新标签 名称实例是pr na01 na02 A我试图只得到pr na01 所以我这样做了 source labels meta ec2 tag Name regex target label test repla
  • 如何在 Spring Boot 应用程序中禁用执行器的拦截器调用

    我正在尝试在基于微服务的 spring boot 应用程序中实现 Prometheus 该应用程序部署在 weblogic 服务器上 作为 POC 的一部分 我已将配置包含在一场战争中 为了启用它 我设置了以下配置 应用程序属性 manag
  • 如何编译适用于 Windows 的 Prometheus UI 静态二进制文件?

    我在尝试着从 Windows 上的 Grafana 访问 GCP 托管 Prometheus 指标 https stackoverflow com q 74563137 20592222 为此我需要为 Prometheus UI 前端编译一
  • Grafana - 将仪表板导入为 docker-compose 的一部分

    在为 Grafana 构建 docker 镜像时是否可以导入仪表板 My docker compose yml目前看起来像这样 docker compose yml version 3 services grafana image graf
  • Prometheus 按标签子字符串分组

    我正在尝试解决在 Prometheus 中按指标进行查询求和和分组的问题 其中分配给指标值的标签对于我的求和和分组要求是唯一的 我有 ElasticSearch 索引的度量采样大小 其中索引名称标记在度量上 索引的命名如下 并放置在标签 i
  • Prometheus Java 摘要指标是线程安全的吗?

    普罗米修斯是Java吗Summary对象线程安全 如果我在类中将其声明为静态 则该类的所有实例都将使用它 Prometheus 是否为该度量对象实现了线程安全 Prometheus 客户端库负责处理方向检测的线程安全等细节 例如Summar
  • 为什么prometheus Operator无法启动

    我正在尝试在全新的 k8s 集群中使用操作符创建 prometheus 我使用以下文件 我正在创建一个命名空间监控 应用这个文件 就可以正常工作了 apiVersion apps v1beta2 kind Deployment metada
  • 如何使用 Prometheus 警报规则检测新指标

    假设我有一个指标request failures对于用户 对于每个用户 我向指标添加一个唯一的标签值 所以对于用户来说u1 当请求失败两次时 我得到以下指标 request failures user name u1 2 我还有一条规则 当
  • Grafana - 是否可以在基于 Loki 的仪表板查询中使用变量?

    我正在 Grafana 上开发基于 Loki 的仪表板 我有一个用于在 Loki 跟踪日志中搜索文本的面板 当前查询如下 job abc service searchTrace json line format if trace messa
  • Grafana:用于访问时间范围的[from,to]值的全局变量

    我正在使用 MySQL 数据源进行一些测试并利用时间过滤器 http docs grafana org reference templating the timefilter or timefilter variable在 SQL 查询中
  • 在普罗米修斯中找不到查询 label_values [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 在 Grafana 文档中 我发现我应该能够查询我的 Prometheus 服务器以获取使用以下命令提供监控数据的所有实例 lab
  • 从 celery 工作人员到普罗米修斯的自定义指标

    我有一些 celery 工作人员在 kubernetes 下的容器中运行 它们不会由 celery 自动缩放 并且每个都在单个进程中运行 即没有多处理 我想从他们那里获取一堆不同的指标到普罗米修斯中 我研究过 celery promethe
  • 更新\插入数据从grafana到mysql

    可以从grafana更新数据或插入数据到mysql 我需要使用 UI 在 mysql 中插入 更新信息 现在我已经在使用grafana 所以想知道是否有任何方法可以使用grafana来更新或插入信息 没有用于获取用户输入并将该数据插入 My
  • Grafana:警报查询不支持模板变量

    您好 我想在 grafana 中创建一个简单的警报 以检查过去 5 分钟是否没有数据 但我收到一个错误 警报查询不支持模板变量 嗯 根据这个issue https github com grafana grafana issues 6230
  • 更改 Grafana 端口

    我目前在 Grafana 中有 InfluxDB 提供仪表板 我最终将在服务器上部署这个堆栈 但是 Grafana 的默认端口是 80 我必须更改此端口 但我不知道如何更改 有人可以帮忙吗 Thanks 变化不仅在于 etc grafana

随机推荐

  • javacv 人脸检测_使用JavaCV进行手和手指检测

    javacv 人脸检测 这篇文章是Andrew Davison博士发布的有关自然用户界面 NUI 系列的一部分 内容涉及使用JavaCV从网络摄像头视频提要中检测手 注意 本章的所有源代码都可以从http fivedots coe psu
  • 抖音微信消息推送情侣告白浪漫(简易版)

    抖音微信消息推送情侣告白浪漫 简易版 一 首先去微信公众平台用微信扫码登录 登录后会自动生成属于自己的appId appSecret 二 在上述登录后页面中下拉 用一个手机扫码会生成user id 即微信消息推送的接收方 三 点击下方的新增
  • PBR渲染原理

    PBR渲染原理 Tags computer graphics 基于PBR做渲染 需要涉及到很多物理学 几何学 热辐射学概念 本文将逐一介绍每个关键概念 并给出相关重要公式 微平面 microfacets 理论 微观尺度下的任意一个平面 su
  • bootstrap table 表头排序

    在columns 里面加上 sortable true 如下 columns field width 50 align center title sortable true
  • Calendar类介绍 获取对象方式 和方法

    重点 是一个抽象日历类 Calendar 类是一个抽象类 它为特定瞬间与一组诸如 YEAR MONTH DAY OF MONTH HOUR 等 日历字段之间的转换提供了一些方法 并为操作日历字段 例如获得下星期的日期 提供了一些方法 无法直
  • QML实现文件十六进制数据展示

    前言 将一个二进制文件直接拖放到Qt Creator中可以直接查看到以十六进制显示的数据格式 如 要实现一个这样的效果 还是要花不少时间的 在网上找了挺多示例 其中一个开源代码效果不错 参考这里 但是是在QWidget中实现的 通过继承QA
  • 小知识:随机生成26个字母中(一个或多个)的字母

    小知识 就直接上代码了 不多说 String str for int i 0 i lt 1 i str str char Math random 26 A 特别注意的2点 1 A 是随机生成大写的26个随机字母 2 a 是随机生成小写的26
  • LangChain之Output parsers

    LangChain之Output parsers Output parsers将LLM输出的文本 转换为structured data CommaSeparatedListOutputParser 解析结果为List 提示词如下 def g
  • 用python怎样实现滑动验证码呢?

    手把手带大家实现Bilibili模拟登陆 滑动验证码 项目 来肝 1 为什么要处理滑动验证码 在很多时候我们在做模拟登陆的时候会遇到滑动验证码 这个时候就必须要处理 2 目标网站 bilibili视频网站的滑动验证码 外链图片转存失败 源站
  • 头文件 sting.h 和 cstring 还有 string 区别

  • 显示器颜色不正常的原因是什么

    显示器是电脑的重要部件之一 显示器颜色不正常 会对我们看电脑造成很大影响 也很容易感觉到眼睛疲劳 显示器颜色不正常是怎么回事 应该怎么处理呢 下面为大家一一道来 显示器颜色不正常的根源 显示器是属于电脑的I O设备 即输入输出设备 它可以分
  • echarts之饼图制作+标示线

    1 安装echarts组件 npm install echarts s 2 在main js中全局引入以及挂载 import echarts from echarts 引入 Vue prototype echarts echarts 挂载
  • 对于Scanner类中next()和nextLine()的区别

    对于键盘录入对象Scanner对象的两个录入字符串方法的区别 Scanner sc new Scanner System in sc next 和 sc nextLine 的区别 next 对于录入的字符串碰到空格就会停止录入 nextLi
  • CentOS7 yum源修改为阿里,配置阿里epel源

    一 概念 区分 yum源 什么是yum源 yum是一个在CentOS RedHat和Fedora操作系统中使用的Shell前端软件包管理器 yum主要管理基于rpm的软件包 Centos先将发布的软件放置到YUM服务器内 然后分析这些软件的
  • 自定义分页标签

    原文地址 http blog csdn net wjt1989wjt article details 4720350 步骤一 编写分页标签处理类 分页标签处理类 public class PagerTag extends TagSuppor
  • vue使用的百度地图的天气查询功能

    首先需要在 Vue js 项目中安装百度地图 JavaScript API SDK 并获取相应的密钥 ak 然后 可以按照以下步骤使用百度地图的天气查询功能并使用 Axios 进行请求 官网文档 https lbsyun baidu com
  • Vue3 Cannot read properties of undefined (reading ‘use‘)

    在用vue3脚手架搭建项目的时候 配置路由 一直报错 错误代码不显示了 正确代码 min js import createApp from vue import App from App vue import Router from rou
  • Linux系统使用 NetworkManager 工具来管理网络

    使用 NetworkManager 工具来管理网络 其在命令行下对应的命令是 nmcli 要连接WiFi 相关的命令如下 1 查看网络设备列表 sudo nmcli dev 注意 如果列出的设备状态全部是 unmanaged 的 说明这些网
  • 单纯记录一下主题色样式——笔记

    单纯想 记录一下这个主题样式的设置 HTML代码
  • Prometheus: 通过ConfigMap来添加Grafana仪表盘

    如果你通过kube prometheus stack部署了Prometheus Grafana 那么Grafana中的仪表盘就是通过边车 sidecar 来动态获取的 Sidecar的观察对象是ConfigMap 当ConfigMap中配置