Help us understand the problem. What is going on with this article?

SplunkでKubernetesクラスター環境のログとメトリクスを可視化してモニタリング

More than 1 year has passed since last update.

前回の記事 でKubernetesやコンテナのログ・メトリクスをSplunkにインデックスする方法を投稿しましたが、今回はそのデータの可視化について書きたいと思います。

はじめに

こちらの記事は Splunk Add-on for KubernetesSplunk 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`

Screen Shot 2018-07-07 11.20.09 PM.png

マクロ

Splunk Add-on for Kubernetes にはデフォルトで k8s-event-indexk8s-metrics-index の2種類のマクロが入っています。
それぞれを編集して作成したk8s用インデックス名を書きましょう。

Screen Shot 2018-07-07 11.24.54 PM.png

Screen Shot 2018-07-07 11.25.05 PM.png

ダッシュボード

自分で作ったダッシュボードです。

Kubernetes Overview (概要)

NodeやNamespace、Pod、Serviceといったリソースを見ることができます。
kubectl get ...kubectl describe ... で取れるような情報を意識しています。
主にソースタイプ kube:objects:* から作ってあります。

Screen Shot 2018-07-07 11.26.46 PM.png

Kubernetes Operation Monitoring (Kubernetes運用監視)

Pod作成時のkube-controller-managerログやKubernetes各コンポーネントのエラーログ、レプリカの状態や各種メトリクスを入れてます。
Podが作成されると、リアルタイムに成功/失敗のログが吐き出されるので、モニタリングには良いでしょう。
Screen Shot 2018-07-07 11.34.27 PM.png

Pod Detail (Pod詳細)

Podのリソースメトリクスや、Logging Driverから取得されたコンテナのログを入れました。
Screen Shot 2018-07-07 11.40.00 PM.png

Kubernetes Overview ダッシュボード内のPod詳細からもリンクを貼って遷移できるようにしてあります。
Screen Shot 2018-07-07 11.41.55 PM.png

App

Splunk AppとしてGitHubの公開リポジトリに置きました。
https://github.com/kikeyama/splunk_kubernetes_demo

各種サーチ文や設定はこちらをご参照ください。

デモ

動画に撮ってみました。
実際にPodを作成したらどのようにSplunkでモニタリングできるのか、ということを実演しました。

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

https://youtu.be/2A_SOZ4Q3wA

最後に

ダッシュボード作ってみての感想ですが、一番苦労したのは kube:objects:* のJSONを表形式にまとめることでした。
いろいろサーチコマンドを駆使してやってみたのですが、自分にはこれが限界...
正直あまりきれいなサーチ文になっていないので、今後改善していきたいです。

あと、自分のお気に入りは Kubernetes Operation Monitoring にある、Error Messagesパネル内でエラーログをクラスターにまとめるところです。

Screen Shot 2018-07-07 11.46.50 PM.png

サーチ文は以下

`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

$labelonly$ トークンをラジオボタンで作りつつ、Onを選択することでクラスターにまとめることができます。
似通ったエラーメッセージがずっと吐き出され続けて重要なものが埋もれる可能性があるので、似たものはまとめてしまった方が見やすいです。

k8s運用者の観点から、もしくはアプリ開発者の観点から、「こういうのが見られると便利だな」といったご意見いただけるとありがたいです。

kikeyama
こちらに投稿する内容は個人の見解です。特定の企業・団体の意見を反映するものではありません。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした