【Splunk】Splunk Observability(特にInfrastructure Monitoring)の基本についてざっくりまとめる

こんにちは。torippy1024です。Splunkについて勉強中です。

今日は、SplunkのObservabilityの基本的な用語をまとめます。

## Observabilityとは
Observabilityについてはこちらの記事では解説はしません。
私より詳しくわかりやすいサイトがたくさんあるのでそちらを参照ください。

個人的な考えを書かせていただくと、**「Observabilityも従来の監視も目的は同じだが、クラウド利用が進むにつれて従来の監視をカバーしきれなくなった部分を補うものがObservabilityである」** と考えています。
**Observabilityは、従来の監視を置き換えるものではない**、という考えです。
(じゃあ二重投資になってしまうではないか、、と経営層に言われてしまいそうになるのですが、そこに対してObservabilityを使うメリットを明確に説明するのがエンジニアとしての責務ですね)


## 参考資料
何はなくとも、まずはSplunk Docです。リンク先はこちら。
日本語版もありますが、完全なものではなく、結構英語訳が残ってしまっています。苦手な方はブラウザに翻訳アドインを入れるなどして頑張ってください。

Splunk Docs
https://docs.splunk.com/observability/en/index.html

Splunk Enterprise/Splunk Cloudとはリンク先のトップが違っており、Observability専用のページとなっています。
(もともとSplunk Observabilityはいくつかの会社を製品ごと買収して統合した製品だからと推測します。SingnalFXが今でも名称に残っている製品の例です)

## Splunk Observabilityの製品一覧
Splunk Observabilityに関連する製品一覧は以下の通りです。
https://www.splunk.com/ja_jp/products/observability.html

1. Splunk Application Performance Monitoring
2. Splunk Infrastructure Monitoring
3. Splunk IT Service Intelligence
4. Splunk Log Observer Connect
5. Splunk Real User Monitoring
6. Splunk Synthetic Monitoring
7. Splunk On-Call


いろいろな製品がありますが、一般的なObservability製品として当然ある機能として、Application Performance Monitoring(APM)、Infrastructure Monitoring(インフラ監視)は当然備えているということになります。
覚えておきたいのがLog Observer Connect(Splunk Plartformと連携することによるログ管理)です。これは、Splunk Platform(Splunk Enterprise/Cloud)がログの収集や分析機能を持っているため、Splunk Observability単独ではログ管理機能を持っていないということを意味しているようです。


## Splunk Observabilityの特徴
個人的に、Splunk Observabilityの特徴は以下の通りと思っています。
- Splunk Platform(Splunk Enterprise/Cloud)とは独立した製品
    - Splunkの代表製品は、ログの収集・分析を行うプラットフォームであるSplunk Enterprise/Cloudですが、それらとは(現時点では)独立した製品であり、Splunk Enterprise/Cloudが導入されていない環境にも導入可能です。
- オープンソースフレームワークであるOpenTelemetryを使用している
    - まだ新しい分野であるObservability製品については、各社でいろいろな実装方式があります。その中でもSplunk Observabilityの実装方式は、オープンソースフレームワークでありOpenTelemetry(https://opentelemetry.io/ )を使っています。
- ライセンス体系はホスト単位
    - ライセンス体系はホスト単位であるため、通信量やデータ量による利用料の急騰が発生する心配はありません。(厳密には、APMだとコンテナ数に上限があったりコンテナ単位のライセンスもあったりといろいろあるようですが)
    - https://www.splunk.com/ja_jp/products/pricing/observability.html


## 覚えておきたい用語など
Splunk Observabilityを扱うにおいて、覚えておきたい用語を簡単に説明します。

### Splunk Observabilityのデータ型
Splunk Observabilityのデータ型はMetric、Event、Log、Trace/Spanに分けられます。
https://docs.splunk.com/observability/ja/metrics-and-metadata/data-model.html
1. Metric：最初に学ぶデータ型と思います。CPUやメモリなどの測定したいデータの測定値です。Metricは単一の値だけを持つものではなく、その中のName, Type, Value, Dimensionなどの複数の項目(key-valueペア)を持っているデータ型です。
2. Event：Splunk Observabilityが定義するイベントには、アラートの出力や、ユーザーのSplunk Observability上の組織に加入・脱退などが含まれます。
3. Log：イベントやユーザーの活動によって発生するログのことを指します。このログは、Splunk Observability側で発生したログであり、監視対象のサーバーなどから発生したログのことを指しているわけではないと思われます。
4. Trace/Span：トランザクションなどのユーザー操作をまとめてTraceやSpanと呼びます。これらを分析する機能をAPMなどが提供しています。

### Splunk ObservabilityにおけるMetric
Splunk ObservabilityにおけるMetricとは、CPUやメモリなどの測定したいデータの測定値です。
Metricは、Metric Name, Metric Type, Value, Dimensionなどで構成されています。

1. Metric Name：memory.free, CPU.UtilizationなどのMetricの名前です。基本的にはデータソースによって決定されます。
2. Metric Type：counter, cumulative counter, gaugeのいずれかです。
3. Value：Metricの測定値です。
4. Dimension：Metricに付与されるメタデータです。付加情報とも言うことができます。"hostname":"server1"、"host_location":"Tokyo"などのKey-Valueペアです。

以下にもっと詳しい記載があります。
https://docs.splunk.com/observability/en/metrics-and-metadata/metrics.html

更に情報を加えると、これらMetricデータを収集した後、Splunk Observability CloudでPropertiesやTagといった情報を付与することができます。これらはデータの可視化時、グルーピングやフィルターをするために使用されます。

### MTS(Metric Time Series)とデータポイント
データの測定値がMetricですが、あるMetricについて時系列にデータを並べたものをMTS(Metric Time Series;時系列メトリック)、あるタイムスタンプにおける一点のデータをデータポイントと呼びます。

もう少し厳密にいうと、同じMetric Name, Dimensionを持つデータポイントの集合がMTSとなります。言い換えると、途中でMetricのNameやDimensionを変更すると、同じMTSとは見なされなくなるということです。

### データのResolugtion(解像度)とRoll up
得られたMetricを可視化し、分析する上で、重要となる考えにResolugtion(解像度)とRoll upがあります。
Resolugtionは、データポイントを保存したり表示したりする間隔(例えば1秒に1つのデータポイントなのか、1分に1つのデータポイントなのか)です。高解像度と標準解像度の2種類があります。
1. 高解像度: 1秒程度に1つのデータポイントの解像度です。
2. 標準解像度: 10秒程度に1つのデータポイントの解像度です。

Roll upは、得られたデータポイントを特定の単位で丸めることです。例えば1秒に1つのデータポイントを得ていると、1分では60個のデータとなり、期間が長くなれば長くなるほど、膨大なデータをそのまま扱うのは困難になります。これらの丸めた値をSplunk Observabilityは解像度毎に保持しています。
また、データの保存期間は、高解像度データ(1秒単位)は8日(Enterprise/Custom Planだと最大96日)、それ以上10秒〜1時間単位の標準解像度データは416日(Enterprise/Custom Planでも同じ)になるそうです。
ロールアップの種類としては、sum,min,max,count,latest,delta,lagなどがあります。(https://docs.splunk.com/observability/en/infrastructure/retention.html#resolution
https://docs.splunk.com/observability/en/data-visualization/charts/data-resolution-and-rollups.html )

### DetectorとAlert Rule
Splunk Observabilityにおいて、アラートをトリガーするための仕組みがDetectorです。
Alert Ruleを定義すると、Detectorがその条件を満たしているか監視し、条件を満たすとアラートイベントを発生させます。アラートをトリガーとして、Webhookを実行してSlackやMicrosoft Teamsに送信したり、Eメールを送信することが可能です。
(まあ、ここらへんは監視製品であれば当然のように備えている機能ではありますね)
https://docs.splunk.com/observability/en/alerts-detectors-notifications/alerts-detectors-notifications.html


## 終わりに
書き終わって思ったのですが、ちょっとInfrastructure Monitoring機能に偏った記事な気がします。包括的な記事を期待している方はすいません。
いつも通りですが、上記事でどこか間違っていたら教えてください。