6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

前回の記事 で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各ダッシュボードのデモ

最後に

ダッシュボード作ってみての感想ですが、一番苦労したのは 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運用者の観点から、もしくはアプリ開発者の観点から、「こういうのが見られると便利だな」といったご意見いただけるとありがたいです。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?