ちょっと話題の記事

【登壇】SplunkミートアップでAWS連携の基礎について喋ってきた #GOJAS_JP

先日のSplunkミートアップにおける登壇の様子です。会場が非常に綺麗で広くてコミュニティの熱も高く、非常に楽しい経験でした。
2019.06.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

先日、FargateのログドライバーにSplunkが対応し、「えらいこっちゃやで!」とブログ書きました。

【祝】FargateでログドライバーにSplunkが利用可能になりました! | DevelopersIO

気づいたら、その1ヶ月後、Splunkミートアップで喋っている自分がいました。この業界、スピード感やばいな。

Splunkド初心者が、いろいろ苦労しながらAWS連携部分の基礎をまとめてみたので、普段AWS触っていてSplunkにも興味があるかたは、是非見ていただければと思います。

(祭) ∧ ∧
 Y  ( ゚Д゚)
 Φ[_ソ__y_l〉     Splunk マツリダワッショイ
    |_|_|
    し'´J

超綺麗で豪華なミートアップ会場の様子

イベントページはこちら。

【GOJAS Meetup-11】 GOJAS Meetup Summer Special - Go Japan Splunk User Group | Doorkeeper

会場は、セガサミーホールディングス・TUNNEL TOKYO 。ものすごい広くて綺麗で、ディスプレイがめちゃくちゃでかくて驚きました。

会場全体、超広々としており。

何故か、ワープする入り口があったり。

発表時の様子。このディスプレイの大きさですよ。どないなっとんねん、これ。

というわけで、張り切って登壇させていただきました。

登壇資料

発表内容

登壇のきっかけ

AWS FargateがSplunkに対応したというニュースがきっかけです。Splunkをそれまで全く触ったことがなかったので、いろいろ調べながら書いてみたブログがこの2つ。

そうすると、全く面識がなかった山田さんから、こんなメッセージが飛んできました。

この男気!というわけで、今自分はここにいるわけです。宜しくおねがいします。

今日のAgendaです。

  • AWS環境へのSplunk構築方法
  • SplunkのAWS連携サービスの概説
  • AWSデータ連携パターンとその解説

AWS環境へのSplunk構築方法

AWS環境へSplunk構築する方法は、大きく分けて3つです。

  1. EC2を構築し、自分でインストールする
  2. AWS Maketplaceから、Splunk Enterpriseを起動する
  3. AWS クイックスタートから、Splunk Enterpriseを起動する

「1. EC2を構築し、自分でインストールする」

普通に、EC2インスタンスを立ててインストールする方法です。そんなに詰まる要素は無いと思います。

「2. AWS Maketplaceから、Splunk Enterpriseを起動する」

Marketplaceから起動する方法です。

予めSplunk Enterpriseインストール済みのAMIが用意されているので、セットアップがめっちゃ楽です。とりあえずHA構成など不要で1台で良いのであれば、有力な選択肢ですね。

「3. AWS クイックスタートから、Splunk Enterpriseを起動する」

AWS クイックスタートもあります。

CloudFormationを駆使してパラメータを指定して、AWSのベストプラクティスに基づいたHA構成を実現できます。こんな雰囲気です。すばらしい。

ガイドも30ページぐらいあって非常に充実しているので、本格的なプロダクション環境で利用するための構成もすぐに作ることができるので、一度試してみることをおすすめします。

SplunkのAWS連携サービスの概説

Splunkに対して、AWS側からデータ連携する方法は複数あります。

で、本日メインでお話するのは、「Splunk Add-on for Amazon Web Services」です。

AWSデータ連携パターンとその解説

Source Typeは複数あり、連携設定パターンも複数あります。

  • CloudWatch
  • CloudWatch Logs
  • Generic S3 inputs
  • Incremental S3 inputs
  • SQS-based S3 inputs

CloudWatch

CloudWatch Metricsの内容をSplunkに転送します。転送するメトリクスのフィルタ条件やディメンションも設定可能。

CloudWatch Logs

CloudWatch Logsの内容をSplunkに転送します。設定は転送対象のLogGroupを指定するだけで非常に簡単。ただし、SourceTypeが全てCloudWatchLogsになるので、アプリケーションログの種類ごとに区別が必要であれば、利用には注意が必要。

Generic S3 inputs

バケット内の全てのオブジェクトを都度リストし各ファイルの変更日を調査し、未収集のデータを取得。バケット内のオブジェクトの数が多い場合、めちゃくちゃ遅くなる。

Incremental S3 inputs

ファイル名に含まれる日時情報をチェックポイントレコードと比較して、バケットから取得されていないオブジェクトのみを取得。Generic S3 inputsに比べてだいぶ高速

SQS-based S3 inputs(推奨)

現在の推奨方式。ほぼリアルタイムで、S3に新しく作成されたレコードをSQSに送信し、Splunk側から取得。

SNSのサブスクリプションはクロスアカウント指定できるため、マルチアカウント(開発〜検証〜本番)の各ログを統一ログ分析基盤アカウントに一括集約することも可能。

SNS→SQSのクロスアカウント接続や、SNSとSQSの連携に関わる情報は、以下のページを参照。

また、大規模構成では、以下のようにCloudWatch AlarmにApproximateNumberOfMessagesVisibleのしきい値を設定したAuto Scalingでheavy fowaderのインスタンスを指定する方法もあり。

まとめ

  • AWS環境へのSplunk構築は、Market Placeかクイックスタートを使うのが早い
  • AWSの各種データからSplunkへデータ転送する方法は複数ある
    • 各サービスネイティブなものはそのまま転送
    • S3格納の時系列データは、Incremental S3 inputs、または、SQS-based S3 inputsから選択

つぶやき(twitter)の数々

当日のハッシュタグ、#GOJAS_JPで、流れていたツイートをいくつか紹介します。ツイ廃としては、イベントのハッシュタグが盛り上がっているのを見るのは、すごい楽しい。

まとめ「あったけぇ、来て良かった」

一言、そんな感想です。

セッションでも話しましたが、最初山田さんから登壇依頼があったときは正直ひよりました。「まじか、俺、なんかしゃべることあるのかな…」と。AWSのことなら、なんぼでもしゃべることはあるんですが、Splunkはド素人でしたからね。

率直に言って、Splunkの設定に関する情報、特にAWS連健周辺については、現状非常に情報が少なく感じます。そんな中、自分が試している途中で感じた詰まった点や苦労した点を初心者目線で解説して共有できれば、来てくれた人の役に立つのかなと思って、登壇を引き受けさせてもらいました。その目的はなんとか達成できたのかなと思ってます。

会場がめちゃくちゃ豪華で喋っててごっつ楽しかったですね。また、ヤフー株式会社 山田さんをはじめ、Splunkの中の人やコミュニティの方々といろいろ話ができたのも良かったです。お誘いありがとうございました。飯も美味かった… なんと生ビールまであったし。

まだまだ自分にはノウハウ不足していますが、AWS環境におけるログ分析のバリエーションとして、Splunkの今後の進化を追いつつけてみようと思います。Splunkに興味を持たれた方は、Go Japan Splunk User Groupに参加されてみてはいかがでしょうか。今後も継続的にイベントが開催されるようです。

それでは、今日はこのへんで。濱田(@hamako9999)でした。