使用Splunk将Kubernetes集群环境的日志和指标可视化并进行监控

我在之前的文章中介绍了如何将Kubernetes和容器的日志和度量指标索引到Splunk,但这次我想讨论一下如何对这些数据进行可视化。

首先

假设您正在使用Splunk Add-on for Kubernetes和Splunk Connect for Kubernetes将数据导入Splunk,请参考本文。

请参考前一篇文章以了解如何获取数据。
让我们使用Splunk监控Kubernetes的日志和指标吧。

源码类型

这是按源类型分类的数据类型。
以下是大致索引的数据类型。

ソースタイプ概要(データの中身からの推測となります)kube kube:kubeletPod管理のログkube:kube-controller-managerコントローラー管理ログkube:kube-apiserverAPIサーバーログkube:dockerDockerサービスログkube:container:*各コンテナのログ(Logging Driverから取得)kube:objects:*NodeやPod、Service、Namespace等のオブジェクト情報fluentd:monitor-agentfluentdでSplunk HECにPOSTする際のログ

Kubernetes的每个组件都可以在以下文章中找到非常有参考价值的内容。
Kubernetes: 构成组件列表
https://qiita.com/tkusumi/items/c2a92cd52bfdb9edd613

指标的源类型似乎是 httpevent。
在实际搜索时无需特别注意,不了解也无妨。

| mcatalog values(sourcetype) where `k8s-metrics-index`
Screen Shot 2018-07-07 11.20.09 PM.png

可以将”マクロ”翻译成中文的选项是 “宏”.

Splunk Add-on for Kubernetes 中默认包含两种宏:k8s-event-index 和 k8s-metrics-index。
请分别编辑并创建用于k8s的索引名称。

Screen Shot 2018-07-07 11.24.54 PM.png
Screen Shot 2018-07-07 11.25.05 PM.png

仪表盘

这是我自己制作的仪表板。

Kubernetes概述

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

Screen Shot 2018-07-07 11.26.46 PM.png

Kubernetes操作監控

Screen Shot 2018-07-07 11.34.27 PM.png

Pod详情

Screen Shot 2018-07-07 11.40.00 PM.png
Screen Shot 2018-07-07 11.41.55 PM.png

应用程序

我将Splunk应用放置在GitHub的公开代码库中,网址是https://github.com/kikeyama/splunk_kubernetes_demo。

请参考此处以获得各种搜索语句和设置。

示威活动

我试着拍了一个视频。
我演示了如何在实际创建Pod后使用Splunk进行监控。

KubernetesをSplunk各ダッシュボードのデモ

最后

我试着做了一个仪表盘,但我最困扰的是将 kube:objects:* 的 JSON 数据整理成表格形式。
我试了很多搜索命令,但对我来说这已经是极限了…
坦率地说,这些搜索命令并不是很优雅,所以我将来想要进行改进。

另外,我最喜欢的是在 Kubernetes 操作监控中的错误消息面板中,将错误日志整理到集群中的部分。

Screen Shot 2018-07-07 11.46.50 PM.png

以下是搜索文案。(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用户的角度或应用程序开发者的角度得到“这样的功能会很方便”的意见,非常感谢您的参与。

广告
将在 10 秒后关闭
bannerAds