使用Splunk将Kubernetes集群环境的日志和指标可视化并进行监控
我在之前的文章中介绍了如何将Kubernetes和容器的日志和度量指标索引到Splunk,但这次我想讨论一下如何对这些数据进行可视化。
首先
假设您正在使用Splunk Add-on for Kubernetes和Splunk Connect for Kubernetes将数据导入Splunk,请参考本文。
请参考前一篇文章以了解如何获取数据。
让我们使用Splunk监控Kubernetes的日志和指标吧。
源码类型
这是按源类型分类的数据类型。
以下是大致索引的数据类型。
kube
kube:kubelet
Pod管理のログkube:kube-controller-manager
コントローラー管理ログkube:kube-apiserver
APIサーバーログkube:docker
Dockerサービスログkube:container:*
各コンテナのログ(Logging Driverから取得)kube:objects:*
NodeやPod、Service、Namespace等のオブジェクト情報fluentd:monitor-agent
fluentdでSplunk HECにPOSTする際のログKubernetes的每个组件都可以在以下文章中找到非常有参考价值的内容。
Kubernetes: 构成组件列表
https://qiita.com/tkusumi/items/c2a92cd52bfdb9edd613
指标的源类型似乎是 httpevent。
在实际搜索时无需特别注意,不了解也无妨。
| mcatalog values(sourcetype) where `k8s-metrics-index`

可以将”マクロ”翻译成中文的选项是 “宏”.
Splunk Add-on for Kubernetes 中默认包含两种宏:k8s-event-index 和 k8s-metrics-index。
请分别编辑并创建用于k8s的索引名称。


仪表盘
这是我自己制作的仪表板。
Kubernetes概述
您可以查看节点、命名空间、Pod和Service等资源。
我考虑到了可以通过kubectl get …或kubectl describe …获得的信息。
这些主要是从源类型kube:objects:*创建的。

Kubernetes操作監控

Pod详情


应用程序
我将Splunk应用放置在GitHub的公开代码库中,网址是https://github.com/kikeyama/splunk_kubernetes_demo。
请参考此处以获得各种搜索语句和设置。
示威活动
我试着拍了一个视频。
我演示了如何在实际创建Pod后使用Splunk进行监控。

最后
我试着做了一个仪表盘,但我最困扰的是将 kube:objects:* 的 JSON 数据整理成表格形式。
我试了很多搜索命令,但对我来说这已经是极限了…
坦率地说,这些搜索命令并不是很优雅,所以我将来想要进行改进。
另外,我最喜欢的是在 Kubernetes 操作监控中的错误消息面板中,将错误日志整理到集群中的部分。

以下是搜索文案。(Here is the search text.)
`k8s-event-index` (severity="ERROR" OR severity="WARN")
| rex "[^:]+:\w+\]\s+(?P<message>[^$$]+)$$"
| cluster field=message t=0.9 labelonly=$labelonly$ showcount=true
| eval labelonly = "$labelonly$", message = if(labelonly="false", message . " (count: " . cluster_count . ")", message)
| table _time sourcetype severity message
通过使用单选按钮创建标记,可以选择将标记聚合到集群中。由于类似的错误信息可能会不断地被输出,这可能会导致重要信息被掩盖,因此将类似的错误信息进行汇总会更容易阅读。
希望从K8s用户的角度或应用程序开发者的角度得到“这样的功能会很方便”的意见,非常感谢您的参与。