AWSのログをSplunkで分析してみよう

 AWSのログをSplunkで分析してみよう

下記イベントでの登壇資料です。
AWSでは様々なマネージドサービスのログが取得可能ですが、それらを一つにまとめて集約〜分析するのは存外難しいものです。今回のセッションでは、AWSにおけるSplunk環境の構築方法と、AWSの各種ログをSplunkに転送する方法を中心にお話します。

【GOJAS Meetup-11】 GOJAS Meetup Summer Special - Go Japan Splunk User Group | Doorkeeper
https://gojas.doorkeeper.jp/events/92430

C47bda32c8455a59471cd7e19c32c074?s=128

濱田孝治

June 21, 2019
Tweet

Transcript

  1. AWSのいろんなログを Splunkで分析しよう︕︕

  2. 2 ⾃⼰紹介 濱⽥孝治(ハマコー) •AWS事業本部コンサルティング部 ソリューションアーキテクト •好きなAWSサービス •Fargate、ECS、EKS •@hamako9999

  3. 3 コンテナジャーニー

  4. 4 コンテナ環境徹底⽐較

  5. 5 @hamako9999

  6. 6 #GOJAS_JP

  7. 7 登壇のきっかけ

  8. 8 あるひこんなニュースが⾶び込んできた きたか…!! ( ゚д゚) ガタッ / ヾ __L| / ̄ ̄ ̄/_

    \/ /
  9. 9 勢い余って これ、超すごいアップデートやん 早速試してみるで︕︕

  10. 10 ふと気づく Splunk ⼀切触ったことない

  11. 11 ブログを書いた

  12. 12 ⼭⽥さんからメッセージが来た︕ きたか…!! ( ゚д゚) ガタッ / ヾ __L| / ̄ ̄ ̄/_

    \/ /
  13. 13 ⼀つ感じたことがある Splunkド初⼼者が AWS連携試していて 率直に感じた事

  14. 14 情報 あんまりないなぁ

  15. 15 奮い⽴つ ⾃分なりにまとめて 登壇することで きっとお役に⽴てるだろう︕

  16. 16 しゃべる事、しゃべらない事 ・AWSにおけるSplunkの 構成 ・SplunkとAWS連携の基 礎 ・Splunk⾃体の⾼度なログ 分析 ・他のログ分析ソリューション との⽐較

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

  18. 18 AWS環境へのSplunk構築⽅法

  19. 19 Splunkの構築⽅法は⼤きく分けて3つ ① EC2を構築し、⾃分でインストールする ② AWS Marketplaceから、Splunk Enterpriseを起動 する ③

    AWS クイックスタートから、Splunk Enterpriseを 起動する
  20. 20 ①EC2を構築し、⾃分でインストールする • Installation Manualからインストール • Installation Manual • Dockerバージョンも有り

    • Deploy and run Splunk Enterprise inside a Docker container • 1台だけだったら、なんとかいけそう
  21. 21 ①EC2を構築し、⾃分でインストールする • HA構成 • High availability deployment: Indexer cluster

    • これを全て構築するのは ⼤変そう… • 取っ掛かりには敷居が⾼ い
  22. 22 ②AWS Marketplaceから、Splunk Enterpriseを起動する • 予めSplunk Enterpriseインストール済みのAMIが⽤意されているの で、セットアップがめっちゃ楽 • EC2のパブリックIPにポート8000で接続

    • usernameとpassword⼊⼒で即利⽤可能 • HA構成不要で1台で良いのであれば、有⼒な選択肢 • BYOLなのでライセンスは別途⽤意する必要有り
  23. 23 ③AWS クイックスタートから、Splunk Enterpriseを起動する • CloudFormationを駆使して、パラメータを指定するだけで、 Splunk EnterpriseのHA構成を実現するサービス • 最新バージョンは2019年5⽉

    • デプロイメントガイドが充実 • 指定パラメータも豊富で様々な構成に対応 • プロダクション環境で利⽤可能なHA構成をサクッと構築可能
  24. 24 ③AWS クイックスタートから、Splunk Enterpriseを起動する

  25. 25 リソースのサイジングと料⾦の把握 Splunkを利⽤する上で必要なEC2のサイジング(CPU、メモリ、ディス クの容量の⽬安)や、関連リソースの料⾦は、下記資料を参考に実施 https://docs.splunk.com/Documentation/AddOns/released/AWS/Sizingandcost

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

  27. 27 SplunkをAWS連携で主要なAdd-on, App • Splunk Add-on for Amazon Web Services

    • 様々な種類のAWSからのデータインターフェースを提供する • Splunk Add-on for Amazon Kinesis Firehose • Firehose経由でSplunkにデータを取り込む • Amazon GuardDuty Add-on for Splunk • GuardDutyのデータをインプット • イベント検知後、アラームを起こすなど • Splunk App for AWS • AWSから取得したログのダッシュボードを提供
  28. 28 SplunkをAWS連携に必要なAdd-on, App • Splunk Add-on for Amazon Web Services

    • 様々な種類のAWSからのデータインターフェースを提供する • Splunk Add-on for Amazon Kinesis Firehose • Firehose経由でSplunkにデータを取り込む • Amazon GuardDuty Add-on for Splunk • GuardDutyのデータをインプット • イベント検知後、アラームを起こすなど • Splunk App for AWS • AWSから取得したログのダッシュボードを提供 今⽇のメインはこちら
  29. 29 AWSデータ連携パターンとその解説

  30. 30 Splunk Add-on for Amazon Web Services

  31. 31 Splunk Add-on for Amazon Web Services • AWSの各種データを連携するAdd-on •

    AWSの各種ログデータの主要なSource-typeに対応
  32. 32 対応ソースタイプ⼀覧 Data source Source type Config aws:config、aws:config:notification Description aws:description

    Config Rules aws:config:rule Inspector aws:inspector CloudTrail aws:cloudtrail CloudWatch Logs aws:cloudwatchlogs、aws:cloudwatchlogs:vpcflow CloudWatch aws:cloudwatch Billing aws:billing、aws:billing:cur S3 aws:s3、aws:s3:accesslogs、aws:cloudfront:accesslogs、 aws:elb:accesslogs、aws:cloudtrail Kinesis aws:kinesis SQS aws:sqs
  33. 33 というわけで ほな、連携設定やってみますかね やるぞやるぞ〜

  34. 34 正直感じた なんか、いっぱいある︕ なんか、怖い どれにすればいいの︖

  35. 35 連携設定のパターン Source Typeは複数あり、連携設定パターンも複数 • CloudWatch • CloudWatch Logs •

    Generic S3 inputs • Incremental S3 inputs • SQS-based S3 inputs
  36. 36 CloudWatch(Metrics) • CloudWatch Metricsの 内容をSplunkに転送 • APIGateway, Application LoadBarancer,

    Billing, EBS, EC2, ELB, Lambda, RDS, S3
  37. 37 CloudWatch(Metrics)(設定画⾯) メトリクスで送信する値のフィルタ条件やディメンションを 設定可能

  38. 38 CloudWatch Logs • CloudWatch Logsの内 容をSplunkに転送

  39. 39 CloudWatch Logs(設定画⾯) ロググループ名と フィルタリング⽤ の正規表現を指定 可能

  40. 40 Generic S3 inputs 「汎⽤S3⼊⼒」 • バケット内の全てのオブジェクトをリストし、S3バ ケットから未収集のデータを取得 • 各ファイルの変更⽇を調査

    • バケット内のオブジェクトの数が多い場合、めちゃ くちゃ遅い
  41. 41 Generic S3 inputs 構成 • SplunkがS3からファ イルを取得

  42. 42 Generic S3 inputs(設定項⽬)

  43. 43 Incremental S3 inputs 「インクリメンタルS3⼊⼒」 • ファイル名に含まれる⽇時情報をチェックポイント レコードと⽐較 • バケットから取得されていないオブジェクトのみを

    取得 • 汎⽤S3⼊⼒に⽐べて、パフォーマンスはだいぶ向上
  44. 44 Incremental S3 inputs 構成 • SplunkがS3からファ イルを取得

  45. 45 Incremental S3 inputs(設定項⽬)

  46. 46 SQS-based S3 inputs 「SQSを介したS3⼊⼒」 • 現在の推奨⽅式 • ほぼリアルタイムで、S3に新しく作成されたレコー ドをSQSに送信、Splunk側から取得

    • 過去に発⽣したイベントは通知なし • SNSを介さなかったSQSも収集されない
  47. 47 SQS-based S3 inputs 構成 • S3バケットへ時系列 データ格納 • S3からSNSへイベン

    ト通知 • SNSのサブスクリプ ションにSQS指定 • SplunkはSQSを Subscribeしてデータ を取得
  48. 48 SQS-based S3 inputs 構成 SNSのサブスクリプションはクロスアカウント指定できるた め、複数AWSアカウントの同⼀種類のログを1つのSQSから 取得することも可能 アカウントA アカウントB

    アカウントC アカウントZ
  49. 49 SNSからSQSへのクロスアカウント設定 https://dev.classmethod.jp/cloud/aws/cross-account-sns-sqs-integration/

  50. 50 SNSからSQSへのクロスアカウント設定 https://dev.classmethod.jp/cloud/aws/cross-account-sns-sqs-integration/

  51. 51 SNSからSQSへのクロスアカウント設定 https://dev.classmethod.jp/cloud/aws/sns-topic-should-be-placed-behind-sqs-queue/

  52. 52 SQS-based S3 inputs 構成(⼤規模) • heavy forwarderのインスタン スをAuto Scaling

    groupで構 成 • launch configurationでheavy forwarderのbootstrapスクリ プトをインストール • CloudWatch Alarmに ApproximateNumberOfMess ageVisibleを指定 • Auto Scalingのトリガーに設定
  53. 53 SQS-based S3 inputs (設定項⽬)

  54. 54 その他インプットデータ 下記のようなサービス固有のものは個別に設定していく • Billing • Config Rules • Description

    • Inspector
  55. 55 (おまけ) Splunk App for AWS

  56. 56 Splunk App for AWS AWSの各種データのダッシュボードを提供

  57. 57 Splunk App for AWS https://dev.classmethod.jp/cloud/aws/splunk-app-for-aws/

  58. 58 Splunk App for AWS https://dev.classmethod.jp/etc/create_dashboard_splunk_cloud/

  59. 59 まとめ

  60. 60 まとめ AWS環境へのSplunk構築は、Market PlaceかQuickStartを使う のがはやい AWSの各種データからSplunkへデータ転送する⽅法は複数ある ・各サービスネイティブなものは、そのまま転送設定する ・S3格納の時系列データは、以下の2種類から選択 ・ Incremental

    S3 inputs ・ SQS-based S3 inputs
  61. 61 Splunkで楽しいエンジニアライフを 濱⽥孝治(ハマコー) @hamako9999