一组用于 Kubernetes 的现代 Grafana 仪表板
关 注 微 信 公 众 号 《 云 原 生 C T O 》 更 多 云 原 生 干 货 等 你 来 探 索
专 注 于 云原生技术
分 享
提 供 优 质 云原生开发
视 频 技 术 培 训
面试技巧
, 及 技术疑难问题
解答
云 原 生 技 术 分 享 不 仅 仅 局 限 于 Go
、 Rust
、 Python
、 Istio
、 containerd
、 CoreDNS
、 Envoy
、 etcd
、 Fluentd
、 Harbor
、 Helm
、 Jaeger
、 Kubernetes
、 Open Policy Agent
、 Prometheus
、 Rook
、 TiKV
、 TUF
、 Vitess
、 Arg
o
、 Buildpacks
、 CloudEvents
、 CNI
、 Contour
、 Cortex
、 CRI-O
、 Falco
、 Flux
、 gRPC
、 KubeEdge
、 Linkerd
、 NATS
、 Notary
、 OpenTracing
、 Operator
Framework
、 SPIFFE
、 SPIRE
和 Thanos
等
一组用于 Kubernetes 的现代 Grafana 仪表板
在本文中,我将展示一组我为 Kubernetes
制作的现代 Grafana
仪表板,解释我为什么决定创建它们以及它们是如何工作的。
介绍
我于 2018
年 6
月加入 Airbus Defense & Space
担任 DevOps
工程师时开始研究 Kubernetes
。我在那里的第一个任务是测试在 Google Kubernetes Engine (GKE)
上运行的多个 Go
微服务的性能。为了完成这个任务,我开发了一个自定义测试平台,并使用 Grafana
来可视化和了解 Kubernetes
工作负载的资源使用情况。从那时起,我就对 Kubernetes
监控充满热情,并且从未停止过它的工作。这个项目的灵感来自我在这个主题上所做的所有工作。
项目是如何开始的
我开始从社区分叉一些现有的仪表板,主要来自 kubernetes-mixin
或 grafana.com
上的一些仪表板,例如 Node Exporter Full
。使用这些仪表板并对其进行调整让我有机会学习很多关于 Kubernetes
、 Prometheus
和 Grafana
的知识。
在使用 Kubernetes
两年后,我认为是时候将我学到的所有知识嵌入到一组 Grafana
仪表板中,它可以帮助我在 Kubernetes
集群上构建和运行应用程序。这就是为什么我决定于 2020
年 9
月在 GitHub
上启动 dotdc/grafana-dashboards-kubernetes
作为开源项目。
http://grafana.com/grafana/dashboards/
http://github.com/dotdc/grafana-dashboards-kubernetes
范围和特性
我想做的是一组仪表盘,它们可以帮助我快速解决日常操作。我不希望它们是详尽的,也不希望展示 kube-state-metrics
或 node_exporter
中可用的完整指标,而是希望在我需要它们的时候是有用的和直接的。到目前为止,它们对谷歌的技术团队非常有用
该项目并没有声称使用了 use
、 RED
或四大黄金信号等方法,但这些仪表板可能包含了它们的一些片段。如果您想寻找其中一个的更精确的实现,您应该查看 kubernetes-mixin
项目。
http://github.com/kubernetes-monitoring/kubernetes-mixin
过去 3
年的 GrafanaCON
让我想使用最新的 Grafana
功能和面板。这就是为什么我决定使用那些能够带来一些有用的东西的原因。代价是它们不能向后兼容旧的 Grafana
版本,因为它们使用:
-
Grafana 8.1引入梯度模式(Grafana博客文章)
-
时间序列可视化面板引入Grafana 7.4 (Grafana博客文章)
-
$__rate_interval变量引入Grafana 7.2 (Grafana博客文章)
除此之外,我可能忘记了,它们还有一个 Resolution
变量来配置 min_step
,以及一个 prometheus Datasource
变量,这样它们就可以在一个联合的 Grafana
实例上工作。
如何安装
该项目是开源的,你可以在 GitHub
上的这个地址找到它:
https ://github.com/dotdc/grafana-dashboards-kubernetes
从那里,您会发现几种安装方法,包括:
-
在 Grafana 中导入 JSON 文件
-
从grafana.com导入它们(使用仪表板 ID)
-
使用 Kubernetes ConfigMap 进行配置
-
使用 Terraformed Kubernetes ConfigMaps 进行配置
如果您只想快速浏览一下,可以使用以下命令克隆存储库:
git clone http://github.com/dotdc/grafana-dashboards-kubernetes.git cd grafana-dashboards-kubernetes
仪表板描述和使用
就像我之前说的,我制作了这些仪表板,以便它们可以很好地协同工作。您通常从全局视图开始,然后根据用例放大到更详细的视图。这就是为什么我决定将它们称为 “Kubernetes 视图”
,因为它们从某个角度和某个缩放级别显示您的 Kubernetes
集群的信息。最后您会看到还有一个 API server
、一个 CoreDNS
和一个 Starboard Operator
(现在是 Trivy Operator
)仪表板。
以下是对它们中的每一个的简短描述:
Kubernetes / Views / Global
总体思路是什么?
-
能够快速获得
Kubernetes
集群的全局视图 -
发现集群、命名空间和节点上的异常资源使用情况
-
在
Kubernetes
集群上发现异常数量的资源类型 -
发现配置错误的应用程序资源(
Requests & Limits VS Real
)
包括哪些面板?
-
集群
CPU
、RAM
和网络总利用率 -
集群的真实、请求和限制资源使用
-
按类型划分的
Kubernetes
资源总数 -
按命名空间和节点划分的
CPU
、RAM
和网络利用率
Kubernetes / Views / Namespaces
大概意思是什么?
-
拥有
Kubernetes
集群的名称空间视图 -
发现命名空间中不寻常的资源使用情况
-
发现命名空间中异常数量的资源类型
-
能够检查
Pod
状态和Pod
副本 -
监视命名空间中的持久卷容量和
inode
包括哪些面板?
-
Namespaces
CPU
、RAM
和网络利用率 -
真实的,
Requests & Limits resources
在你的·Namespace
的资源使用 -
Kubernetes
资源按Namespace
中的类型计数 -
Pod
状态,每个Pod
的容器数量和副本可用性 -
Namespace
中的持久卷容量和索引节点
Kubernetes / Views / Nodes
总体思路是什么?
-
获取
Kubernetes
节点的详细视图 -
发现节点中的异常资源使用情况
-
能够在故障节点上找到受影响的
pod
-
从您的节点获取操作系统指标
包括哪些面板?
-
节点的一般
CPU
和RAM
使用情况 -
每个节点上的
Pod
计数和Pod
列表(带有命名空间和优先级类) -
节点的详细
CPU
、RAM
和网络使用情况 -
系统负载、上下文切换和中断、文件描述符和时间同步
-
附加到节点的工作负载的持久卷信息
-
本地节点存储容量、
inode
、IO
和错误
Kubernetes / Views / Pods
总体思路是什么?
-
详细了解您的
pod
和容器 -
容器的
CPU
和RAM
使用情况和配置 -
能够调整容器资源请求和限制的大小
-
跟踪
pod
的网络利用率
包括哪些面板?
-
Pod
信息:创建者、运行的节点、Pod IP
-
真实、请求和限制您的命名空间的资源使用
-
pod
容器的CPU
和RAM
请求和限制 -
容器的
CPU
和RAM
资源使用情况(实际使用情况) -
pod
的网络使用情况
Kubernetes / System / API Server
总体思路是什么?
-
快速检查
Kubernetes API Server
运行状况 -
获取已弃用的
Kubernetes
资源列表 -
获取有关
API Server
的信息以跟踪异常问题
包括哪些面板?
-
API Server
实例健康检查 -
已弃用的
Kubernetes
资源列表 -
按代码、动词、延迟和错误列出的
Kubernetes API
服务器请求 -
API Server
的CPU
和RAM
使用率
Kubernetes / System / CoreDNS
总体思路是什么?
-
快速检查
CoreDNS
实例的运行状况 -
获取有关
CoreDNS
的信息以跟踪异常问题
包括哪些面板?
-
CoreDNS
实例运行状况检查 -
按代码、动词、延迟和错误列出的
Kubernetes API
服务器请求 -
API Server
的CPU
和RAM
使用率
Kubernetes Addons / Trivy / Starboard Operator
:warning: 此仪表板适用于 Aqua Security
的 Starboard / Trivy Operator
。它将需要 Giant Swarm
的 starboard-exporter
才能工作。此仪表板将很快更新,以便在可用时使用最新的 trivy-operator
指标。
总体思路是什么?
-
按严重程度汇总漏洞
-
有一个带有可点击链接的漏洞列表,以了解每个漏洞的更多信息
-
按严重性汇总配置审计报告
包括哪些面板?
-
命名空间和严重性的漏洞
-
每个漏洞都带有
CVE/GHSA
链接的漏洞列表 -
配置审计报告命名空间和严重性
最后的话
我希望这篇文章很有用,并为您提供了使用 Grafana
监控 Kubernetes
集群的新工具和想法。如果是这种情况,请随意点赞(拍手)、分享和订阅 :) 您也可以发表评论,特别是如果您发现了一些出色的内容、任何错误或您想到了任何改进。
你也可以为这个项目做出贡献:
喜欢的话给个 GitHub :star:
创建问题以提出功能请求、报告错误或分享想法。如果您想共享代码或对此项目有用的任何内容,请创建一个拉取请求。
感谢你的阅读!
http://github.com/dotdc/grafana-dashboards-kubernetes/
- 基于 CoreDNS 和 K8s 构建云原生场景下的企业级 DNS
- 三种云原生存储方案优缺点及应用场景分析
- 基于云原生的Flink计算平台实践
- 探索 API 优先级和公平性以减轻 APIServer 的负载
- Go 中的 Kubernetes GraphQL 动态查询
- 揭开云原生数据管理的神秘面纱:操作层级
- 云原生数据库,激活数智创新之力
- 企业考虑云原生分布式数据库的三个原因
- 一组用于 Kubernetes 的现代 Grafana 仪表板
- Go 中的构建器模式
- 让我们使用 Go 实现基本的服务发现
- 云原生下一步的发展方向是什么?
- 用更云原生的方式做诊断|大规模 K8s 集群诊断利器深度解析
- 多个维度分析k8s多集群管理工具,到底哪个才真正适合你
- 使用 Kube-capacity CLI 查看 Kubernetes 资源请求、限制和利用率
- 使用 Go 在 Kubernetes 中构建自己的准入控制器
- 云原生数仓如何破解大规模集群的关联查询性能问题?
- 云原生趋势下的迁移与灾备思考
- 2022 年不容错过的六大云原生趋势!
- 使用 Prometheus 监控 Golang 应用程序