実施環境: Splunk Cloud 8.2.2104.1
0. 前置き
企業や団体でしばしば使用されるソフトウェアの1つに、 Splunk というソフトウェアがあります。
本記事では、この Splunk というソフトウェアについて、ざっくり解説していきます。
簡潔にするために少々正確性を欠いた説明もありますが、ご了承ください。
1. Splunk とは
Splunk を一言でいえば、 「ログを集めるソフトウェア」 です。
情報化社会の現代において、企業や団体の活動には様々な IT 機器(サーバ、スマートフォン、 IoT 機器、...)が使用されます。
そして、それらの機器は操作や通信などの記録、すなわちログを日々出力しています。
これらのログには、例えば「太郎さんがりんごを10個購入した」「花子さんが9時にサーバにアクセスした」といった様々な情報が含まれています。
ログを活用してこれらの膨大な情報を分析すれば、「りんごは20歳の人によく買われている」「15時ごろにサーバへのアクセス数が最大になる」といった傾向が発見でき、業務に役立つかもしれません。
ところが、いざログを活用しようにも、各々のログは当然別々の場所にあるので、いちいちログの場所を確認し、そこへ見に行かなくてはいけません。
また、形式もハードウェアやソフトウェアによってバラバラで、このままではとても扱いにくいです。
そこで登場するのが、 Splunk です。
Splunk を使用すると、複数のログを 「同じ場所に」「同じ形式で」 集めることができます。
一度集めてしまえば、あとはそこにアクセスするだけであらゆるログを参照できます。
ログ毎に専用の処理を作成する必要はないですし、複数のログを組み合わせるのも簡単です。
また、 Splunk は単にログを集めてそれを見ることができるだけでなく、集めたログを検索・集計・加工して表やグラフにする機能もあり、さらにそれらの表やグラフを1つの画面(ダッシュボード)にまとめることも可能です。
これら Splunk の機能を活用することで、膨大なログを容易に分析し、業務に役立てることができるのです。
2. 活用例
実際にどのようなことができるのか、 Splunk のダッシュボード画面とともに例示していきます。
2.1. EC サイト販売実績
EC サイトの販売ログを用い、直近の売り上げの傾向をグラフとして出力します。
2.2. セキュリティルーム入退室履歴
セキュリティールームの入退室ログを用い、特定のユーザの入退室記録を表として出力します。
2.3. サーバパフォーマンス
サーバのパフォーマンスログを用い、特定のサーバの直近の性能値を出力します。
3. Splunk が得意な処理、苦手な処理
Splunk は決して万能なソフトウェアではありません。
確かに多くのことができますが、それでも得意な処理と苦手な処理があります。
3.1. ログ収集
得意な処理 : テキストログ収集
苦手な処理 : バイナリログ収集
Splunk のログ収集は、基本的にテキスト形式のログを対象としています。
バイナリ形式のログの収集は、あまり得意ではありません。
ログを出力している製品によっては Splunk に機能を追加することで対応できる場合もありますが、そうでない場合は一旦 Splunk で読み込める形に変換する必要があります。
3.2. 実行形式
得意な処理 : リアルタイム処理
苦手な処理 : バッチ処理
Splunk の処理は、手動で処理文を入力したり、ダッシュボード上で実行したりするリアルタイム処理が基本です。
バッチ処理もできないわけではないですが、指定の時間が来る度に単一の処理を実行する程度の単純な処理しか作成できません。
処理に前後関係があったり、リカバリ処理が必要だったりする場合は、外部のジョブ管理ソフトを使用する必要があります。
3.3. 処理内容
得意な処理 : ログの集計
苦手な処理 : ログの監視
Splunk はログの分析を目的としたソフトウェアであり、特に集計においては様々な手法を利用することが可能です。
一方でアラートを出すようなログの監視はあまり向いておらず、指定した項目の値を定期的に確認し、一定値を超えたらメールを出す程度の単純な処理しか実現できません。
ログの監視を行いたい場合は、素直に監視用のソフトを使用したほうがよいかと思います。
4. Splunk の機能
Splunk の機能は大きく分けて、次の3つに分割されます。
-
サーチヘッド ( Search Head )
-
インデクサー ( Indexer )
-
フォワーダー ( Forwarder )
この3つの機能は1つのサーバに全て担わせることも可能ですが、大規模な環境では各機能を別々のサーバに分けるほうが一般的です。
この3機能はあくまで基本的な機能であり、構成によっては上記以外の機能を持つサーバが存在することもあります。
4.1. サーチヘッド ( Search Head )
サーチヘッドは Splunk の頭のような機能です。
ユーザーの入力を受けてインデクサーに検索命令を送り、返ってきた検索結果を集計・加工してユーザーに出力します。
4.2. インデクサー ( Indexer )
インデクサーは Splunk の心臓ともいうべき重要な機能です。
フォワーダーから送付されたログを溜め込み、サーチヘッドから受け取った命令をもとにそれらを検索します。
4.3. フォワーダー ( Forwarder )
フォワーダーは Splunk の手足となる機能です。
様々な機器上で稼働し、ログをインデクサーに送ります。
5. Splunk を使ってみる
さて、実際に Splunk を使ってみましょう。
Splunk は公式で、無料のクラウド環境を提供しています。
アカウントを作成すればお手軽に環境を持てるので、以下ページを参考に実施してみてください。
Splunk: マシンデータ解析ソフト「Splunk」の無料クラウド環境を作成してみた
環境を作成したら、早速ログ検索をしてみましょう。
左の「 App 」から、「 Search & Reporting 」を選択します。
選択すると、以下のような画面が表示されます。
次の文字列をフォームに入力し、実行してみてください。
この文字列は「 SPL 文」と呼ばれる、 Splunk 独自の言語「 SPL 」で書かれた処理文です。
細かい説明は別の記事でするので、今はとりあえず「こんなのあるんだな」くらいに思っておいてください。
index="_internal"
上記を実行すると、検索結果として Splunk の内部ログが表示されます。
先の検索では過去24時間分が検索されましたが、もっと長い、もしくは短い期間で検索したいという場合も当然あるかと思います。
フォーム右の「過去24時間」と書いてある場所をクリックすると、以下のように検索期間を変更できます。
今回は過去60分を選択してみましょう。
検索期間が過去60分に変更されます。
ホーム画面に戻りたい場合は、左上にある Splunk のロゴをクリックすれば戻れます。
Splunk の基本的な使い方はこれで以上です。
6. Splunk 関連サイト
最後におまけとして、よく使いそうな Splunk 関連サイトのリンクを置いておきます。
今回は以上です。
次回からは、 Splunk の独自言語である SPL について紹介していきます。