お仕事でSplunkと毎日対話しています。Splunk Appを作るきっかけは、私にとってはそのAppを作ることでいつもと違うエンドユーザーの方々とつながる機会を作りたいから。要するにベンダーの立ち位置です。それ以外にも、作ったナレッジやレポート、ダッシュボードなどを簡単に他のSplunk環境でも使えるようなモビリティを求めて、ということもあるでしょう。
Splunkで「Appを作る」とは、コードとかプログラムを書いて、実行させてデバッグして、なにか実行ファイルを作る、という特別感とは違い、「気付いたらAppを作っていた」というくらい、その他の操作との境界が曖昧だと私は思っています。Splunkで誰もが使うSearchも、Appの一つです。サーチに、なにかイベントタイプでイベントに濃淡をつけたり、自分だけの特別な値を自動的に抽出できるようにフィールド抽出を追加設定したり、フィールドに別名(エイリアス)をつけたり、とこういった行為によってできるものがナレッジとcollectiveに呼ばれるようですが、ナレッジを作ろうと思うと、もうAppを作るべき段階に来ていると私は考えています。
Splunk JapanのNINJAでありGOJASのリーダーの某氏のレクチャーの受け売りですが、単にサーチするだけでなければ、まず「Appを作る」ことから始めましょう。作ってしまえばそこは自分の陣地。このAppに対して、ナレッジを作っていくことで、同じSplunk環境の設定を書き換えて怒られたり、他の設定に干渉したりせず自分の作業に集中できます。
Splunk Appには、AppとAdd-onの2種類があるようです。Add-onもAppなのですが、Add-onは特にデータ入力やその時の初期設定などを提供するものでナレッジやダッシュボードは入らないようなものです。Appが公開されている場所のSplunkbaseを見ると、ベンダーがAppとAdd-onどちらも出していることがありますが、上記も理由の一つと考えられます。
Splunkのサーチなど、ブラウザからアクセスする主なインターフェースをSplunk Webと言います。Splunk Web上でレポートやダッシュボードを作成したり、ソースタイプの抽出ルールを決めたりとおおよそのことがシームレスに実行できますが、これをまとめてAppとしてリリースするときには、少し配慮が必要になります。単一のSplunkインスタンスが構築されている環境であれば不要ですが、分散環境やクラスタリングされている環境にてAppが使われることを想定するならば、話が変わってきます。
Splunkの大きな構成要素は、サーチヘッド、インデクサー、データ収集ですが、そのどこにAppを入れる必要があるのか。ここをAppをパッケージングするときに使うSplunk Packagin Toolkitで決めていくことができます。
これら触ってきた事柄などを皮切りに、Appを作っていくことに集中してまとめていくことを始めようと思います。こちらにすべての答えの入り口がありますが、私なりに味付けしながら勉強していきます: