博客/工程

bob电竞频道Grafana实验室KubeCon:万无一失Kubernetes仪表板对睡眠不足的电话

2019年5月29日 9分钟

我们都在的情况下突然你孤独的开发人员调用,每个人都是赔钱的。

或在Grafana实验室主任大卫•Kbob电竞频道altschmidt用户体验他的商业伙伴,Grafana实验室产品副总裁汤姆•威尔基被检查出一个周末音乐节日。

“汤姆和我成立了一个公司在几年前,我的一个前端的人。汤姆做了所有后端,devops东西,”Kaltschimdt解释道。“那一个周末汤姆说:“大卫,我要一个重金属的节日,和你需要看服务器。”

“我吓坏了,”他承认。”一个简单的电话转移允许调试和跟踪等工作特性或减少辛劳。但困难叫经验让开发人员处于守势,主要应对事件分秒必争的地方。”

“我只是希望从未发生过某地的一个帐篷当汤姆在睡觉,”Kaltschimdt说。

所以没有人失去睡眠在电话了,Kaltschmidt共享他的提示和技巧用于创建简单Kubernetes仪表板KubeCon 2019。

在上下文中调用Kubernetes,起初,“令人难以置信”,Kaltschmidt说。”这个过程非常困难,因为你必须做故障排除在几个维度和Kubernetes中的所有概念。”

和故障诊断是发现这个问题,因为它是关于消除潜在的情况问题不是,Kaltschimdt说。

帮助,Kaltschmidt介绍了仪表盘成熟度模型(DMM),一个三层的方法,将有助于使团队和使仪表盘更一致的组织内。也DMM将给每个工程师一些指导仪表盘的旅程,并向他们展示如何更上一层楼。

成熟度级别

低成熟度

这里有三个低成熟度仪表盘的迹象,这表明没有有效的策略。

扩张:这是当复制仪表板非托管和笨拙。“Grafana使它很容易修改仪表板,”Kaltschmidt说。但很容易离开“复制标签”功能。

“你可能有善意使用它。然后其他人出现,克隆仪表板,左复制标签,但是修改语义代表你的一个标签,“Kaltschmidt说。“那些仪表板分歧,如果你以后使用这些标签找到你的东西,你最终得到的一套长期的仪表板,不再代表标签原来是什么意思。”

没有版本控制:当你修改一个仪表板和你打救没有版本控制?“如果你有一个标准Grafana实例和你不备份数据或你没有仪表板JSON版本控制和Grafana消失,然后你将会有一个坏的时间,”他说。

仪表板的浏览:类似的行为症状的低成熟度是仪表盘的浏览。“如果你发现自己浏览很多——通过文件夹和来回寻找正确的事的行为——这是一个成熟的用户想要摆脱,“Kaltschimdt说。

中等成熟度

这里有一些Grafana-approved方法来管理你的监视仪表板。

模板化变量:仪表板Kubernetes不是必要的,因为每个节点的跟踪的因素,如CPU使用率或每核心使用,出现在同一个面板布局的所有节点。

在Grafana,节点可以注册模板变量,用户可以访问一个下拉查看所有的实例。说:“如果你真的聪明Kaltschimdt,“你可以做不同的数据源作为更高层次的模板变量。然后你可以访问许多不同的集群”。

系统的指示板:有一些仪表盘帮助理解什么可能出错的方法在Kubernetes各种维度。

服务,红色的方法措施请求和出错率以及每个服务时间。看看汤姆·威尔基的概述这种方法的。

对于资源,使用方法措施利用率、饱和度和错误。在下面的示例中,这些指示板的一部分Kubernetes监控混合

! [kube mixin1](/静态/资产/ img /博客/ kubecon2019_ david_kubemixin1.png)

上面一个视图的一个节点代表一个节点可以有什么问题。

kube mixin2

上面是一组仪表板的回购持久卷,还显示了其他各种仪表盘。

分层仪表板:这种类型的仪表盘方法并总结意见提供相应的聚合查询使用树的力量或对数深化查明问题在哪里。

“他们真的帮助消除的过程。你很快就会看到更高层次树中的仪表板,事情是好的,你可以继续下一个,”Kaltschimdt解释道。

hierarchical1

层次结构的一个例子将集群、名称空间和豆荚。所有这些将结构化查询的方式,无论低于或者高于,总量指标以一种有意义的方式。但随后问题就变成他们之间,你如何处理?

hierarchical2

在Grafana,会有一个集群视图名称空间分解。这些查询的分解将永远是下一个级别,这样你就可以进入下一阶段通过使用其中一个钻取表中的链接。这也是的一部分Kubernetes监控混合

服务等级:使用相同的仪表板,您可以看到如何通过一个应用程序的数据流。

服务

这是红色的方法使用每一行服务,请求率和错误率在左边和右边的延迟时间。

“真正强大的事情是,你可以看到,这是当地回答跟踪响应给用户,用户不会看到任何错误因为没有红色的。但显然错了,因为较低的仪表盘有红,“Kaltschimdt解释道。

“如果我们看看应用程序,这里有一些红。我们知道,应用程序依赖于数据库的数据,并通过数据库也红,我们得到一个直觉的错误可能在数据库中,”他说。“这垂直层次结构本质上让我对直觉的系统不工作。”

表达指示板:“要记住的一件事是,有时值得把服务或应用程序分割为两个不同的仪表板,主要是因为大小可以不同,“建议Kaltschmidt。

富有表现力的分裂

例如,Grafana皮层,Prometheus-based服务,大量的数据被消耗。“如果它总是在1000 x级,任何错误的阅读路径会淹死在视觉上如果他们在相同的仪表板和这些指标聚合、“Kaltschmidt说。

富有表现力的图表:一个小技巧,仪表板“真的表达”是使用什么颜色给你一个快速提示,Kaltschmidt说。

富有表现力的颜色

前图,只有绿色的200年代和500年代的红色,“这有助于快速得出结论这个程序的状态,“Kaltschmidt说。

Kaltschmidt还建议规范化图表的Y轴“所以你立即了解有多忙。“这是特别有用的仪表板,跟踪情况资源绑定,如CPU。

归一化

的另一个例子Kubernetes监控混合,上面是一个集群和文件中的每一行代表一个节点。但还不清楚有多少cpu的节点,因为可能会有大小不同的规定。

“如果我们正常通过CPU数或跨集群,我们可以肯定地说很多资源跨集群使用100%,“Kaltschmidt指出。“这确实是强大的,因为你降低认知负荷的得出结论多少空间了。”

直接浏览:而模板变量很难导航通过仪表板或“浏览”,这是一件好事。

“你真的不应该只是浏览,特别是如果你有三级层次结构,“Kaltschmidt说。”,会鼓励你使用警报。”

管理仪表板:最后,我们应该在哪里存储仪表板代码自己?“有几个项目在Grafana,最重要的是围绕提高配置工作流、“Kaltschmidt说。

任何开发人员对这个感兴趣,看看Grafana设计文档或者去问题# 13823Github和评论。

高成熟度

有时在devops组织中,人们知道良好的实践,但他们仍然偏离。下面是实现一致性的设计方法。

脚本库:脚本库等grafonnet(Jsonnet)和grafanalib(Python)给你高阶函数来生成特定类型的仪表板,Kaltschmidt说。

“重要的是,这些函数可以编码,例如,查询面板中,”他说。“如果你使用这个函数,可以确保所有的行和仪表板,创建了将共享相同的风格。不再有战斗,我们应该使用线填充…和你保证整个组织仪表盘面板足够相似,这样人们就可以迅速找到问题的答案。”

脚本库的最大好处之一是较小的变更集。“如果你使用高阶函数,你不需要处理这个巨大的JSON了因为你只需要比较查询改变。”

mixin或其他同行评议的模板:mixin的仪表板和警报是一组同行评议的任何组织和一个巨大的资源。

“mixin我一直显示在Jsonnet写,但你仍然可以提取查询和使用它们在自己的仪表盘的旅程。这是一个很好的资源来看看人们如何使用普罗米修斯,监控Kubernetes”Kaltschmidt说。

有关Kubernetes mixin的更多信息,请查看这篇博客

未来的工具来帮助

Grafana希望改善其工作流程,以便在浏览器中,将会有一个编辑器来编辑JSON。“但这有点在未来,“Kaltschmidt说。

在此之前,“很高兴有一个仪表盘的策略。从管理系统的使用仪表板的目标。下一步可以通过设计、一致性”Kaltshcmidt说。

但是永远记住:“你的仪表盘实践应该减少认知负荷,而不是添加到它。”