SplunkのAWS統合サービス「Splunk App for AWS」を試してみた
先日、こちらの記事で生まれて始めてSplunkを試してみたハマコーは、そのログ分析プラットフォームとしての柔軟かつパワフルな機能に惚れ込んでしまいました。
「こんなんできるんやったら、AWSと統合したらもっとおもろいことできるんちゃうん?」と興奮して試してみたのがこちらの記事となります。
Splunkド初心者の自分には結構敷居が高かったのですが、AWS統合サービスとして用意されている「Splunk App for AWS」を使うことで、AWS上の下記いろんなサービスのログを扱うことができます。
- Billing
- CloudTrail
- CloudWatch
- Cloudfront Access Logs
- Config
- Config Rules
- Description
- ELB Access Logs
- Inspector
- S3 Access Logs
- VPC Flow Logs
今回は、一番基本となるDescriptionの設定手順解説だけですが、この記事読めば他のログの分析も可能になるので、SplunkでのAWSサービス分析に興味があるかたは、お試しくださいませ。
(祭) ∧ ∧ Y ( ゚Д゚) Φ[_ソ__y_l〉 Splunk AWSダワッショイ |_|_| し'´J
Splunk App for AWSとは
Splunk® App for AWS - Splunk Documentation
Amazon Web Servicesにおける致命的な操作やセキュリティの情報を集約してダッシュボード参照できるアプリケーション。
- 予め定義されたリアルタイムに分析可能なレポート、アラート
- AWSインフラ全体を最適化し、問題を見つけるためのダッシュボード
- AWSリソースをベストプラクティスに基づいて運用するためのノウハウの提示
Splunk App for AWSのインストール方法
公式ドキュメントはこちら。
Install the Splunk App for AWS on Splunk Enterprise - Splunk Documentation
必要なアプリケーションは以下の2つ。それぞれ役割が違ってドキュメントも別々に用意されているので、この2つの違いは意識しておきましょう。
- Splunk App for AWS | Splunkbase
- 主にインプットされたデータからUIを提供する
- Splunk Add-on for Amazon Web Services | Splunkbase
- AWSからデータを取得するアドオン。入力設定はこちらで実施
それぞれのファイルをダウンロードし、Webコンソール上の「Appの管理」より、「ファイルからAppをインストール」するのが簡単です。
インストール直後、このようなダッシュボードが表示されます。まだ設定が完了していないので、各種情報が取得できていない状態です。
通常の運用では、クラスターモードで構成している場合が多いと思うので、そういう場合は別途上記マニュアルを参照の上対応しましょう。
Splunk Add-on for AWSの設定方法
ここまでAppのインストールが完了したら、実際にAWS環境にアクセスするための設定を実施していきます。ここからは、Add-onのマニュアルを参照して設定していきます(余談ですが、公式ドキュメント、AppのマニュアルとAdd-onのマニュアルがわかれてて、最初違いがよくわかんなかった…)。
About the Splunk Add-on for Amazon Web Services - Splunk Documentation
Splunk EnterpriseがインストールされているEC2へのIAMロール設定
今回自分の環境では、取得したいAWSアカウント上のEC2にSplunk Enterpriseをインストールしているため、このインスタンスにIAMロールを割り当てます。割り当てるポリシーは、ここでは簡易的にAdministratorAccess
としておきます。
AWSから取得するサービスごとに必要なポリシーは異なるので、そのあたりの詳細はこちらを参照してください。
(重要)Splunkに入力するAWSサービスの事前設定
AWS Config、AWS Config Rules、CloutTrailなど、あらかじめSplunkからログを取得させたいサービスは、事前にAWS側での設定が必要になります。下記を参照に設定しておきましょう。
特に、Splunkへのデータ送信のためにSQSを介すものがほとんどなので、そのあたり一つ一つ確認していく必要があります。
Splunk Add-onのAWSへのアクセス許可設定
グローバルメニューから、「Splunk Add-on for AWS」をクリック。
上部のメニュー「設定」をクリックし、Account一覧に、EC2に設定したIAMロール(ここでは、ec2-splunk-role
)が表示されていれば、アクセス許可設定はOKです。
(重要)Splunk Add-onのAWS インプットの作成
いよいよ、Splunk Add-on for AWSのインプットの作成をやります。これを実施して初めて、Splunk側のデータソースに対してAWS側のデータが入力されます。ドキュメントはこちら。
Add-onのWebコンソールから、「Create New Input」ボタンをクリック。
インプットに設定できるData Typeの一覧が表示されます。ここでは、一番お手軽に設定できる「Description」をクリック。
設定画面が表示されるので、インプットの名前、AWS ACcount、Assume Role(オプション)、AWS Regionsを埋めていきます。また、取得対象のAPIをチェックし、「保存」ボタンをクリック。
デフォルトの設定だとインターバルが3600秒なので、データがSplunkに送られてくるのをしばらく待ちます。
しばらく待った後、サーチ画面を起動。こんな感じで、ソースタイプにaws:description
が増えていたら、無事Splunkにデータが入力されています。
aws:description
をクリックすると、送信データが表示されます。後は、Splunkの世界ですな。自由にログを検索できます。
Splunk App for AWSでのダッシュボード表示
aws:description
のSplunkへの取り込みが確認できたら、Splunk App for AWSでの表示をみてみます。
グローバルメニューから、Splunk App for AWSをクリック。
すると、Compute InstancesとStorageに値が取得できていることが確認できると思います。
もちろんドリルダウンも可能で、クリックすることで、さらに詳細を表示することができます。
ダッシュボード上表示されていないデータは、Splunk Add-onでのAWSインプットが未作成なのが原因なので、表示したいものについては、適宜インプットを追加していきながら対応していくことになります。
AWSの各種情報をSplunkで統合管理するための第一歩として
以上、SplunkのAWS統合AppとAdd-onの基本的な使い方を紹介してきました。AWS用のAppとしては、この記事で紹介したもの以外にも、以下のAppが用意されています。
- Splunk Add-on for Amazon Kinesis Firehose | Splunkbase
- Kinesis Firehose経由のデータをインプットするApp
- Kinesis Firehoseに流せるデータはすべてインプットできるので、汎用性が高い
- Amazon GuardDuty Add-on for Splunk | Splunkbase
- GuardDutyのデータをインプットするApp
- GuardDutyのイベントを検知してアラームを起こすなどの対応が可能
- こちらの記事が非常に参考になります
- Amazon GuardDutyのイベントをSplunkで検索・可視化 - Qiita
Splunkを全く知らない場合は、各種設定の意味がわかりにくく苦労すると思うので、先に公式のチュートリアル(About the Search Tutorial - Splunk Documentation)を実施しておくなどしたほうが、理解は早いかと思います。
チュートリアルを実施してみた記事として、こちらも参考にしてみてください。
また、シングルインスタンスモードではなく、Splunkをクラスター運用する場合は、こちらのQuickStartが全て網羅しており構築がめちゃくちゃ簡単なので、クラスターを自分で構築する前にまずは参照しておくことをおすすめします。
皆さんに良きSplunkライフが訪れることを祈って。
それでは、今日はこのへんで。濱田(@hamako9999)でした。