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

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 一套用于 Kubernetes 的现代 Grafana 仪表板


前言


我在2018年6月加入空客防务与航天公司( Airbus Defense&Space )担任 DevOps 工程师时,就开始了 Kubernetes 相关的工作。我在那里的第一个任务是测试在谷歌 Kubernetes 引擎(GKE)上运行的多个 Go 微服务的性能。为了完成这项任务,我在一个定制测试平台上使用 Grafana 来可视化和了解 Kubernetes 工作负载的资源使用情况。从那时起,我就对 Kubernetes 监控充满热情,并从未停止过。这个项目的灵感就来自于我在这个主题上所做的所有工作。


项目启动


我开始从社区中获取一些现有的仪表板,主要来自kubernetes-mixin 或 grafana.comgrafana.com 上提供的一些仪表板,如 Node Exporter Full 。使用这些仪表板并对它们进行调整,让我有机会在 Kubernetes 、Prometheus 和 Grafana 上学到很多东西。

在使用 Kubernetes 两年后,我认为是时候将我学到的所有东西都嵌入到一套 Grafana 仪表板中了,它可以帮助我在 Kubernetes 集群上构建和运行应用程序。这就是为什么我决定在2020年9月在 GitHub 上启动 dotdc/grafana-dashboard-kubernetesdotdc/grafana-dashboard-kubernetes 作为开源项目。


范围和功能


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

该研究并没有使用USE, RED 或 the Four Golden Signals 等方法,但这些仪表板可能包括其中的一些零碎内容。如果您正在寻找其中一个更准确的工具,您应该检查 Kubernetes-Mixin 项目。

在过去的3年里,观看 Grafanacon 让我想使用最新的 Grafana 功能和面板。这就是为什么我决定使用那些可以带来一些有用的东西。代价是它们不能向后兼容旧的 Grafana 版本,因为它们使用:

gradient mode  在Grafana 8.1中引入(Grafana Blog post)

time series 在Grafana 7.4中引入 (Grafana Blog post)

$__rate_interval Grafana 7.2中引入(Grafana Blog post)

在我可能忘记的其他事情中,他们还有一个 Resolution 变量来配置 min_step ,以及一个 Prometheus Datasource 变量,因此他们将在一个联邦 Grafana 实例上工作。


如何安装


这个项目是开源的,你可以在GitHub上找到它,网址是:https://github.com/dotdc/grafana-dashboards-kubernetes

从那里,你会发现几种安装方法,包括:

● 在 Grafana 中导入 JSON 文件;

● 从 grafana.com 导入它们(使用仪表板ID);

● 使用 Kubernetes ConfigMaps 进行配置;

● 使用 Terraformed Kubernetes ConfigMaps 进行配置。

如果您只想快速浏览一下,可以使用以下方法克隆存储库:

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

cd grafana-dashboards-kubernetes


仪表板说明和用法


就像我之前说的,我制作了这些仪表板,这样它们就可以很好地协同工作。您通常从全局视图开始,然后根据用例放大到更详细的视图。这就是为什么我决定称它们为“  Kubernetes 视图”,因为它们从特定的角度和特定的缩放级别显示 Kubernetes 集群上的信息。最后,您将看到还有一个 API 服务器、一个 CoreDNS 和一个 Starboard Operator (现在是 Trivy Operator )仪表板。

下面是对它们的简短描述:


Kubernetes / Views / Global


总体思路是什么?

● 能够快速获得 Kubernetes 集群的全局视图;

● 发现集群、命名空间和节点上的异常资源使用情况;

● 在您的 Kubernetes 集群上发现异常数量的资源类型;

● 发现错误配置的应用程序资源(请求和限制与实际)。


包括哪些面板?

● 群集 CPU、RAM 和网络的总利用率;

● 实际请求并限制群集的资源使用;

● Kubernetes资源总数(按类型);

● 按命名空间和节点划分的 CPU、RAM 和网络利用率。


Kubernetes / Views / Namespaces


总体思路是什么?

● 拥有 Kubernetes 集群的命名空间视图;

● 发现命名空间中不寻常的资源使用情况;

● 找出命名空间中异常数量的资源类型;

● 能够检查 PODS 状态和 PODS 副本;

● 监视命名空间中的持久卷容量和信息节点。


包括哪些面板?

● 命名空间 CPU、RAM 和网络利用率;

● 请求并限制命名空间的资源使用;

●  Kubernetes 资源按命名空间中的类型计数;

●  POD 状态、每个 POD 的容器数量和副本可用性;

● 您的命名空间中的持久卷容量和信息节点。


Kubernetes / Views / Nodes


总体思路是什么?

● 获取 Kubernetes 节点的详细视图;

● 发现节点中的异常资源使用情况;

● 能够在故障节点上找到受影响的 Pod;

● 从节点获取操作系统指标。


包括哪些面板?

● 节点的一般 CPU 和 RAM 使用情况;

● 每个节点上的 pod 计数和 pod 列表(带有命名空间和优先级类);

● 节点的详细 CPU、RAM 和网络使用情况;

● 系统加载、上下文切换和中断、文件描述符和时间同步;

● 连接到节点的工作负载的持久卷信息;

● 本地节点存储容量、信息节点、IO 和错误。


Kubernetes / Views / Pods


总体思路是什么?

● 详细查看您的 POD 和容器;

● 容器的 CPU 和 RAM 使用和配置;

● 能够调整您的容器资源请求和限制;

● 跟踪 POD 的网络利用率。


包括哪些面板?

●  Pod 信息:创建者,运行节点, Pod IP;

● 请求并限制命名空间的资源使用;

● 您的 PODS 容器的 CPU 和 RAM 请求和限制;

● 容器的 CPU 和 RAM 资源使用情况(实际使用情况);

●  POD 的网络使用情况。


Kubernetes / System / API Server


总体思路是什么?

● 快速检查 Kubernetes API 服务器运行状况;

● 获取已弃用的 Kubernetes 资源列表;

● 获取有关 API 服务器的信息以跟踪异常问题。


包括哪些面板?

●  API 服务器实例运行状况检查;

● 不推荐使用的 Kubernetes 资源列表;

●  Kubernetes API 服务器请求(按代码、动词、延迟和错误);

●  API 服务器的 CPU 和 RAM 使用情况。


Kubernetes / System / CoreDNS


总体思路是什么?

● 快速检查 CoreDNS 实例运行状况;

● 获取有关 CoreDNS 的信息以跟踪异常问题。


包括哪些面板?

● CoreDNS 实例运行状况检查;

● Kubernetes API 服务器请求(按代码、动词、延迟和错误);

●  API 服务器的 CPU 和 RAM 使用情况。


Kubernetes Addons / Trivy / Starboard Operator


此仪表板适用于 Aqua Security 公司的 Starboard / Trivy Operator。它需要 Giant Swarm 的  starboard-exporter 才能工作。该仪表板将很快更新,以便在最新的 Trivy-Operator 指标可用时使用这些指标。


总体思路是什么?

● 按严重性列出漏洞摘要;

● 有一个漏洞列表,其中包含一个可点击的链接,以了解有关每个漏洞的更多信息;

● 按严重性列出配置审核报告摘要。


包括哪些面板?

● 漏洞(按命名空间和严重性);

● 漏洞列表,每个列表上都有一个 CVE/GHSA 链接;

● 配置审核报告命名空间和严重性。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
|
JSON Prometheus Cloud Native
Grafana 系列 - 统一展示 -8-ElasticSearch 日志快速搜索仪表板
Grafana 系列 - 统一展示 -8-ElasticSearch 日志快速搜索仪表板
|
3月前
|
Prometheus Kubernetes 监控
Grafana 与 Kubernetes 的集成
【8月更文第29天】Grafana 是一个开源的仪表板和可视化平台,它支持多种数据源,可以用来创建美观的仪表板和图表。Kubernetes (K8s) 是一个流行的容器编排平台,用于自动化容器应用的部署、扩展和管理。将 Grafana 与 Kubernetes 集成起来,可以方便地监控 Kubernetes 集群的状态和性能指标。本文将详细介绍如何配置和使用 Grafana 来监控 Kubernetes 集群。
74 2
|
3月前
|
Prometheus Kubernetes 监控
Kubernetes(K8S) 监控 Prometheus + Grafana
Kubernetes(K8S) 监控 Prometheus + Grafana
223 2
|
4月前
|
Kubernetes Cloud Native 持续交付
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
|
6月前
|
监控 JavaScript 前端开发
Grafana 系列 - 统一展示 -6-Zabbix 仪表板
Grafana 系列 - 统一展示 -6-Zabbix 仪表板
|
6月前
|
JSON Prometheus Cloud Native
Grafana 系列 - 统一展示 -3-Prometheus 仪表板
Grafana 系列 - 统一展示 -3-Prometheus 仪表板
|
6月前
|
关系型数据库 API RDS
Grafana 系列 - 统一展示 -5-AWS Cloudwatch 仪表板
Grafana 系列 - 统一展示 -5-AWS Cloudwatch 仪表板
|
6月前
|
JSON Prometheus Cloud Native
Grafana 系列文章(十二):如何使用 Loki 创建一个用于搜索日志的 Grafana 仪表板
Grafana 系列文章(十二):如何使用 Loki 创建一个用于搜索日志的 Grafana 仪表板
|
6月前
|
JSON Kubernetes 数据格式
Grafana 系列文章(十三):如何用 Loki 收集查看 Kubernetes Events
Grafana 系列文章(十三):如何用 Loki 收集查看 Kubernetes Events
|
Prometheus Kubernetes 监控
Kubernetes(k8s)上安装Prometheus和Grafana监控(下)
Kubernetes(k8s)上安装Prometheus和Grafana监控(下)
361 0