はじめに

案件でSplunk Enterpriseを触る機会があり、少しではありますが、その魅力を感じる事が出来ました。
自分のようにSplunk Enterpriseに入門される方向けの記事を書きたいと思います。

前提

Splunkの公式ドキュメントを見ると、沢山のソリューションがあります。
当記事では、パッケージをサーバに導入して利用するSplunk Enterprisesとして概説します。

Splunk Enterpriseとは?

Splunk Enterpriseは「統合分析プラットフォーム」の1つです。

複数のシステムによってログが出力され、それらのログはビジネス用途であったり、トラブルシューティング、あるいは監査要件など様々な用途で活用されるかと思います。しかしながら、システム毎に出力先が異なると上手く活用する事は出来ません。
そういった問題を解消するため、Splunk Enterpriseは、出力されたログを集約させ、ログの検索を掛けたりダッシュボード化によってシステムの状態を可視化する事が出来ます。

また、Splunk EnterpriseはWEB UIが提供されており、ブラウザからアクセスする事で上述したログの検索や可視化などを画面上で行う事が出来ます。

AWSで例えるとAmazon OpenSearch Serviceをイメージいただくと良いです。

Splunk Enterpriseの機能について

以下の7機能があります。
当記事ではその中でも主要な機能である「Indexing、Search、Alert、Dashboards」の4機能について紹介します。

  • Indexing(インデックスの作成機能)
  • Search(検索機能)
  • Alert(アラート機能)
  • Dashboard(可視化機能)
  • Pivot(ピボット機能)
  • Reports(レポート機能)
  • Data model(データモデル機能)

Indexing(インデックスの作成機能)

簡単に言うと「ログをSplunk上に保存して検索出来る状態にする」です。
厳密には後述するIndexer(インデクサー)上にログを書き込みし、Search Head(サーチヘッド)にて検索が出来る状態の事を指します。

参考:公式ドキュメント

You can collect data from devices and applications such as websites, servers, 
databases, operating systems, and more. Once the data is collected, the index segments,stores,
compresses the data, and maintains the supporting metadata to accelerate searching. 

Search(検索機能)

Splunk上に保存されたデータの検索をする事です。
厳密には、後述するSearch Head(サーチヘッド)が検索機能を提供します。
データ内のパターン(例:ログの種類毎やID別、時間別などのフィールド値)によって条件付けし検索をかける事が出来ます。

一概に検索機能といっても様々な機能を有しています。
参考:公式ドキュメント

・Retrieving events from an index
・Calculating metrics
・Searching for specific conditions within a rolling time window
・Identifying patterns in your data
・Predicting future trends

Alert(アラート機能)

Splunkは検索結果に応じた通知機能を有しています。
指定した電子メール宛のアラート情報の送信であったり、RSSフィードの投稿などが可能です。

参考:公式ドキュメント

Alerts notify you when search results for both historical and real-time searches 
meet configured conditions. You can configure alerts to trigger actions like 
sending alert information to designated email addresses, 
posting alert information to an RSS feed,and running a custom script, 
such as one that posts an alert event to syslog.

Dashboard(可視化機能)

ダッシュボード機能で検索結果に対する可視化を行う事が出来ます。

参考:公式ドキュメント

Dashboards contain panels of modules like search boxes, fields, charts, and so on.
Dashboard panels are usually connected to saved searches or pivots. 
They display the results of completed searches and data from real-time searches that run in the background.

Splunkにおけるコンポーネントについて

Splunk Enterpriseの機能を簡単に列挙しましたが、具体的にどのような構成要素、コンポーネントが動いているかを概説します。

基礎となるコンポーネントは以下3点あります。

  • Forwarder(フォワーダー)
  • Search Head(サーチヘッド)
  • Indexer(インデクサー)

また、オプショナルなコンポーネントとして、以下のようなものがあります。

  • Cluster Master Node(クラスターマスターノード)
  • License Master(ライセンスマスター)
  • Deployment Server(デプロイメントサーバ)

補足すると、Splunk Enterpriseにおけるコンポーネントは、後述するUniversal Forwarder(ユニバーサルフォワーダー)を除き同一のインストーラを用います。Indexer機能を使う場合、Search Headを使う場合、それぞれで同じインストーラを使うことになります。

ベースコンポーネントを組み合わせた構成例

構成としては、単一インスタンスにコンポーネントを詰め込むタイプと、クラスター構成の2種類があります。
データの規模や非機能要件を踏まえて選択しますが、中規模以上は基本的にクラスター構成を使うのではないかと思います。

クラスター構成のイメージは以下です。

Forwarder(フォワーダー)

データを収集し、Indexerへデータを転送するためのコンポーネントです。
Forwarderはログを出力するサーバ自体にインストールしてIndexerへ転送を行うUniversal Forwarder(ユニバーサルフォワーダー)と転送機能に加えて、データのマスク処理であったり、フィルタリング処理を行う事が出来るHeavy forwarder(ヘビーフォワーダー)の2種類があります。

Universal Forwarderは、軽量でデータの収集、転送に特化しています。

Search Head(サーチヘッド)

ユーザに検索機能を提供するコンポーネントです。
Indexerに対して検索を行います。
Indexerが複数ある場合でも分散検索を行う事が出来ます。

Indexer(インデクサー)

データを取り込むためのコンポーネントです。
インデックスを作成し、データを蓄積します。

オプショナルコンポネート

Cluster Master Node(クラスターマスターノード)

上述したコンポーネントをクラスタリングするためのコンポーネントです。
Cluster Master Nodeの配下にIndexerやSearch Headに追加し管理を行います。
Manager Nodeとも表現されます。

License Master(ライセンスマスター)

ライセンス管理を行うコンポーネントです。
クラスタリング環境ですと、Cluster Master Nodeと同居して利用するケースがありますが、単一のノードとして利用する事も可能です。

Deployment Server(デプロイメントサーバ)

設定ファイルを配布するためのコンポーネントです。
配布するサーバをグループ化することで、グループ毎に配布が出来ます。

Linux カーネル・OSバージョンの要件

Splunk Enterpriseの9.0バージョン以上の場合、Linuxカーネルバージョンが3.x以上である必要があります。
ただ、現時点ではカーネルバージョンが6以上はサポート外の様です。(Universal Forwarderは対応している模様)

また、サポートしているLinuxディストリビューションは以下の通りです。

  • RHEL 7, 8, 9
  • CentOS 7, 8
  • Ubuntu 16.04 LTS以上
  • SUSE 12, 15

Amazon Linux2はサポートしていますが、Amazon Linux2023はサポートしていないです。

通信ポート

代表的なポートを以下に示します。

コンポーネント 用途 ポート番号
全コンポーネント REST API TCP/8089
Search Head(サーチヘッド) WEBUIへのアクセス TCP/8080
Indexer(インデクサー) Forwarder(フォワーダー)からのデータ転送を受け取る TCP/9997
Indexer(インデクサー) クラスタリング時にIndexer間のデータ同期 TCP/8080

まとめ

Splunk Enterpriseは必要なコンポーネントがUniversal Forwarderを除き、全て同一のインストーラに含まれているので、
設定次第で上述した様な機能を簡単に扱う事が出来ます。
実際に使ってみた所、とても直感的でわかりやすかったため、次は実際にインストールして動かしてみた系の記事を書いてみます。
こんなコンポーネントで構成されているんだと入門の記事になっていれば幸いです。

参考ドキュメント

Splunk Enterpriseのドキュメントは、バージョンに9.2.1を指定しています。