一组用于 Kubernetes 的现代 Grafana 仪表板

语言: CN / TW / HK

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 作为开源项目。

https://grafana.com/grafana/dashboards/
https://github.com/dotdc/grafana-dashboards-kubernetes

范围和特性

我想做的是一组仪表盘,它们可以帮助我快速解决日常操作。我不希望它们是详尽的,也不希望展示 kube-state-metrics node_exporter 中可用的完整指标,而是希望在我需要它们的时候是有用的和直接的。到目前为止,它们对谷歌的技术团队非常有用

该项目并没有声称使用了 use RED 或四大黄金信号等方法,但这些仪表板可能包含了它们的一些片段。如果您想寻找其中一个的更精确的实现,您应该查看 kubernetes-mixin 项目。

https://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 https://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: 创建问题以提出功能请求、报告错误或分享想法。如果您想共享代码或对此项目有用的任何内容,请创建一个拉取请求。

感谢你的阅读!

https://github.com/dotdc/grafana-dashboards-kubernetes/