用于Kubernetes管理的Grafana面板

大家好! 今天,我们继续分享专门为基于Kubernetes的基础设施平台课程的学生翻译的材料。 好好阅读。



引言




一段时间以来,我一直在尝试创建用于管理Kubernetes的Grafana仪表板。 作为多个Kubernetes集群的所有者和管理员,我希望获得一些指标的直观表示。 首先,我需要用于Kubernetes控制平面和节点组件的普通Grafana仪表板: kube-api,kube-scheduler,kube-controller-manager以及kubelet和kube-proxy 。 其次,我想将生成的面板发布到GitHub上,以便其他人可以留下建议和错误报告(问题),发送更改请求(拉请求),更新面板(git pull)并帮助我进行处理。

发布Grafana仪表板


Grafana面板现在大部分发布在grafana.com/dashboards上 。 要获取所需的面板,您需要在页面上找到它,复制标识符并将其导入到本地Grafana实例中。 尽管导入仪表盘相对简单,但是经验表明,大多数用户发现使用它们很不方便。 这有几个原因。

首先,人们使用不同的标签选择器来指示Prometheus中的监视目标。 其次,在新版本的Prometheus导出器和用于访问度量的应用程序中,度量名称不断变化和删除。 第三,要找到真正高质量的仪表板非常困难-您永远都不知道导入后最终会得到什么。 选择面板后,您必须浏览所有图形并编辑度量以及标签的选择器-这是大量的手动工作。

监视Mixins项目


我找到了一个非常酷的项目,名为Monitoring Mixins。 实际上,这是一种旨在克服所有面板疼痛问题的生态系统。 这个想法来自Frederic Branczyk,是他撰写了原始设计文档 ,我强烈建议您阅读。 此外,他想出了一种更新仪表板并将其从各种GitHub存储库中提取出来的真正机制。 这种机制与go get非常相似,我非常喜欢它。 在这里,您可以阅读使用此机制的jsonnet-bundler软件包管理器的简要说明。 非常感谢弗雷德里克的有益发展!

Kubernetes Grafana Mixin软件包


如果您阅读这个地方,可以休息一下,欣赏美丽的图画。

API服务器



Kubernetes API服务器仪表板

财务经理



Kubernetes控制器管理器仪表板

策划人



Kubernetes Scheduler仪表板

Kublet(节点代理)



Kubernetes Cublet仪表板


Kubernetes Cublet仪表板

Kube代理



Kube代理仪表板

使用Kubernetes Grafana Mixin


首先,您需要安装jsonnetjsonnet-bundler

杰森


如果使用的是macOS,则可以使用brew install jsonnet 。 否则,最好自己编译此组件。

 git clone https://github.com/google/jsonnet.git jsonnet_git cd jsonnet_git make sudo mv jsonnet /usr/local/bin/ 

Jsonnet捆绑器


 go get -u github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb 

导入面板


为项目创建一个新目录,并使用cd输入该目录。

安装mixin

 jb init jb install https://github.com/povilasv/kubernetes-grafana-mixin 

现在创建一个新的config.libsonnet文件。

 local kubedashboards = import 'kubernetes-grafana-mixin/mixin.libsonnet'; kubedashboards { _config+:: { kubeletSelector: 'job="kubernetes-nodes2"', kubeSchedulerSelector: 'job="kube-scheduler2"', kubeControllerManagerSelector: 'job="kube-controller-manager2"', kubeApiserverSelector: 'job="kube-apiserver2"', kubeProxySelector: 'job="kube-proxy2"', }, } 

之后,将导入信息面板,并且作业选择器将被覆盖。
请更正Prometheus标签选择器以适合您的环境。
现在创建dashboards目录。 最后,运行jsonnet来编译config.libsonnet

 jsonnet -J vendor -m dashboards -e '(import "config.libsonnet").grafanaDashboards' 

您将看到以下列表:

 dashboards/kube-apiserver.json dashboards/kube-controller-manager.json dashboards/kube-proxy.json dashboards/kube-scheduler.json dashboards/kubelet.json 

结果


显示仪表板目录的内容。

 ls -l dashboards 

 -rw-r--r-- 1 povilasv povilasv 35746 Apr 26 08:29 kube-apiserver.json -rw-r--r-- 1 povilasv povilasv 34790 Apr 26 08:29 kube-controller-manager.json -rw-r--r-- 1 povilasv povilasv 62845 Apr 26 08:29 kubelet.json -rw-r--r-- 1 povilasv povilasv 27673 Apr 26 08:29 kube-proxy.json -rw-r--r-- 1 povilasv povilasv 25650 Apr 26 08:29 kube-scheduler.json 

将仪表板添加到Grafana


我已经说过,我强烈建议您通过配置文件放置面板。 您可以在Grafana文档中了解有关此操作的更多信息

另一方面,没有什么可以阻止您打开Grafana界面并通过它添加面板。

更新仪表板


随着时间的流逝,面板将发生变化。 要更新它们,以下命令就足够了:

 jb update 

今天就这些了。

希望您喜欢我的仪表板。 在另一篇文章中,我将讨论如何创建它们以及为什么要像这样创建它们,因此请务必订阅更新。 订阅者首先看到我的作品,甚至在发布之前。

我对您的反馈意见也非常感兴趣。 如果您使用我的面板,请评估它们对您有多有用,或者在实际工作情况下分享它们是否对您有帮助。 留下评论!

顺便说一句,如果您想感谢我的努力,可以查看我的公开愿望清单,然后购买例如一本好书。

我非常感谢高质量的开源项目。 kubernetes-grafana-mixin软件包可根据Apache 2许可许可证获得。 如果您喜欢该项目,请在Github上查看!

Source: https://habr.com/ru/post/zh-CN456946/


All Articles