Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Splunk Enterpriseで​ S3のデータを直接検索してみた!

Recruit
December 10, 2024

Splunk Enterpriseで​ S3のデータを直接検索してみた!

2024/12/10に、GOJAS Meetupで発表した、嶋寺の資料です。

Recruit

December 10, 2024
Tweet

More Decks by Recruit

Other Decks in Technology

Transcript

  1. 自己紹介 2 ◆名前 嶋寺 克彰 Katsuaki SHIMADERA, CISSP ◆所属 リクルートSOC

    ◆Splunk歴 9年くらい Ver.5 あたりから でも何もわかりません・・ ◆好きなことなど けん玉(ギネス世界記録持ってます)、 天体写真、カラオケ、育児(娘+息子) ◆ひとこと LT or Kendama?
  2. リクルートグループについて 3 創業 グループ 従業員数 51,373名 連結売上収益 34,164億円 連結営業利益 4,025億円

    グループ 企業数 連結子会社 227社 関連会社8社 ビジョン・ミッ ション 「大学新聞広告社」としてスタート (2024年3月31日時点) (2023年4月1日~2024年3月31日) (2023年4月1日~2024年3月31日) (2024年3月31日時点) 1960年3月31日
  3. Splunk活用事例の紹介 ▪ リクルート執務環境におけるSplunkの活用例です 5 個人情報なし環境 個人情報あり環境 サーバログ NWログ 端末操作ログ サーバログ

    NWログ 端末操作ログ セキュリティ 監視 脅威 ハンティング 監査レポート 執務環境 ログ分析基盤 SOC業務 Advanced Security Unified “L”og Analysis シン: 新・真・神・進・深、などいろんな意味 ∀: 数学記号で「すべて」を表す
  4. システム構成概念図 6 ポイント ・Splunk本体はAWS上 ・SVAで言うC3+C1構成 ・オンプレ・クラウドのログ ・ほぼ全てIaCによる構成管理 SHC シングルSH IDX-C

    License Deployment Monitor Console S3 SmartStore CodeCommit 各種クラウドサービス群 オンプレDC Forwarder群 ロジック開発 アラート・レポート ※SVA: Splunk Validated Architectures ※IaC: Infrastructure as Code 構成管理 ※概念図につき、実際の構成とは 多少異なる部分があります。 m5a系 i3en系
  5. (おさらい)Federated Search for S3 とは ▪ (1行で言うと)Splunk CloudからS3にあるデータをIndexingせずに検索で きる機能です。 ▪

    「sdselect」 というSQLライクなSPLコマンドを使って検索することができ ます。 ▪ DSU(Data Scan Unit)という単位でスキャンしたデータのサイズに応じて課 金されます。 ▪ DSUはあらかじめ使用量を予測して購入しておく必要があります(前払い)。 ▪ (2024/10時点で)Splunk Enterpriseでは使えません。 参考: Announcing Splunk Federated Search for Amazon S3 Now Generally Available in Splunk Cloud Platform | Splunk 8
  6. Federated Search for S3 概念図 ▪ FS-S3の概念図です。 9 AWS Cloud

    AWS Glue Data Catalog Amazon S3 Search Head | sdselect … FROM … WHERE … Federated Index IAM User CSV, JSON など
  7. Amazon Athenaとは ▪ (1行で言うと)S3にあるデータをSQLで検索できるAWSのサービスです。 11 Amazon Athena は、オープンソースフレームワーク上に構築さ れたサーバーレスのインタラクティブな分析サービスで、オープ ンテーブルとファイル形式をサポートしています。Athena

    は、 ペタバイト規模のデータが存在する場所で分析するための簡素化 された柔軟な方法を提供します。Amazon Simple Storage Service (S3) データレイクと 25 以上のデータソース (オンプレ ミスデータソースや SQL または Python を使用した他のクラウ ドシステムを含む) からデータを分析したり、アプリケーション を構築したりできます。Athena は、オープンソースの Trino お よび Presto エンジンと Apache Spark フレームワーク上に構築 されており、プロビジョニングや設定は不要です。 参考:Amazon Athena(SQL を使用した S3 でのデータクエリ)| AWS Amazon Athena
  8. 構想 ▪ こんなことができればよいのでは? 12 AWS Cloud AWS Glue Data Catalog

    Amazon S3 Search Head DB Connect Add-on Amazon Athena CSV, JSON など
  9. DB Connect Add-onとは(1) ▪ (1行で言うと)SplunkからRDB(など)に接続することができるAdd-onです。 ▪ Splunk社作成の長年実績のある無償のAdd-onです。 ▪ 内部ではJavaのプログラムが動作し、JDBCでDBに接続します。 ▪

    以下のようなことができます。 – SPL内でSQLによる検索(dbxquery) → 今回はこちらを使用します。 – SQLによるルックアップ(dbxlookup) – DBからのInput – DBへのOutput(dbxoutput) 13 参考: ・Splunk DB Connect | Splunkbase ・How Splunk DB Connect works - Splunk Documentation
  10. DB Connect Add-onとは(2) ▪ Athenaは2024/10時点でサポート対象にないですが、サポート対象にないDBでも、 JDBC Driverがあれば使えるだろうと公式ドキュメントにも記載があります。 14 Supported Databases

    • AWS RDS Aurora • AWS RedShift • MemSQL • Oracle Database • MySQL • PostgreSQL • Snowflake • Microsoft SQL Server • IBM DB2 • InfluxDB • MongoDB • Informix • SAP SQL Anywhere • Sybase ASE • Sybase IQ • Hive • Google BigQuery 参考: Install database drivers - Splunk Documentation
  11. JDBCとは ▪ (1行で言うと)JavaからDBにアクセスするためのAPIです。 ▪ Java Data Base Connectivityの略です。 ▪ 各DBに対応したJDBC

    Driverがあれば統一的なインタフェースでアクセス可能です。 ▪ Amazon Athena用のJDBCドライバも公開されています。 15 参考: JDBC で Amazon Athena に接続する - Amazon Athena Java Application JDBC API JDBC Driver Manager JDBC Driver for Oracle DB JDBC Driver for PostgreSQL JDBC Driver for MSSQL Oracle DB MSSQL PostgreSQL
  12. アーキテクチャ概要 ▪ あらためて情報を統合すると以下のようなアーキテクチャになります。 16 AWS Cloud AWS Glue Data Catalog

    Amazon S3 Search Head DB Connect Add-on Amazon Athena JDBC Driver for Athena | dbxquery connection=athena-test query="SELECT … FROM … WHERE …" IAM User IAM Role CSV, JSON など
  13. DB Connect導入のワークフロー 1. 前提条件 – Amazon Athenaのセットアップが完了している – Splunk Enterpriseのセットアップが完了している(AWS上でなくても可)

    2. JRE(Java Runtime Environment)のインストール 3. DB Connect Add-onのインストール(用途に応じてSearch HeadもしくはHeavy Forwarderにインストールする) 4. JDBC Driverのインストール(jarファイルをコピーする) 5. 接続・認証の設定 – DBによって異なりますが、基本的にはJDBCの接続パラメータを設定するこ とになります。 – 今回は、AthenaのJDBC Driverを利用します。 17 参考: ・Athena JDBC 3.x ドライバー - Amazon Athena
  14. DB Connect設定例(1) ▪ db_connection_types.conf: DB種別の設定 18 [athena] displayName = AWS

    Athena serviceClass = com.splunk.dbx2.DefaultDBX2JDBC jdbcUrlFormat = jdbc:athena://WorkGroup=primary;Region=ap-northeast-1;Database=athena_db; jdbcUrlSSLFormat = jdbc:athena://WorkGroup=primary;Region=ap-northeast-1;Database= athena_db; jdbcDriverClass = com.amazon.athena.jdbc.AthenaDriver supportedVersions = 3.0
  15. DB Connect設定例(2) ▪ db_connections.conf: 接続の設定(Web画面でも設定できます) ▪ identities.conf: 認証情報(user/pass)の設定(Web画面でも設定できます) 19 [athena-database]

    disabled = 0 connection_properties = {} connection_type = athena customizedJdbcUrl = jdbc:athena://WorkGroup=athena-database;Region=ap-northeast-1;Database=glue- database;EnableResultReuseByAge=TRUE;CredentialsProvider=InstanceProfile identity = athena-instance-profile jdbcUseSSL = true ... [athena-instance-profile] disabled = 0 identity_type = normal password = xxxx username = nouser ↑EC2にInstance Profileを付けてアクセスできる。 IAM Userを使うことも可能。 ←Instance Profileを使う場合はここでの認証情報は使われない。IAM Userを指定することも可能。
  16. S3にデータを置く方式の例 1. 直接置く – CSVやJSON等のファイルを直接S3に置けばAthenaで扱えます。 – AWSのログはJSONで出力されることが多くAthenaで扱いやすいです。(この 後、VPC Flow Logを使ったデモを行いたいと思います)

    – 参考:Amazon VPC フローログのテーブルを作成し、クエリする - Amazon Athena 2. SplunkのIngest Actions/Edge Processorを利用する – Splunkの機能で、Indexerにデータを送らずにS3に置くことができます。 – 参考: ▪ Ingest Actions: Data Access When, Where and How You Need It | Splunk ▪ Improving data ingestion using the Edge Processor solution - Splunk Documentation 3. その他のETLツールなどを利用する – AWS Glue, Kinesis Data Firehose, Fluentd, LogStash なども利用可能です。 20
  17. SPLの例(1) ▪ dbxqueryでタイムピッカーの日付時刻を使うTipsについて紹介します。 – SplunkのIndexのように日付時刻のフィールド(_time)が決まっているわけではないので一工夫必要です。 – ポイントはサブサーチとaddinfoコマンドです。 – なお、ダッシュボードだけで使うならトークンを使って参照する方法もあります。 23

    | dbxquery connection="athena-test" [ | makeresults | addinfo ``` info_min_time, info_max_timeというタイムピッカーの値が入ったフィールドが追加される ``` | eval tz_offset=strftime(info_min_time, "%z") ``` パーティションのタイムゾーンがUTCなので補正する ``` | eval tz_offset=tz_offset*36 ``` 秒に変換する ``` | eval min_date_p=strftime(info_min_time -tz_offset, "%Y/%m/%d") | eval max_date_p=strftime(info_max_time -tz_offset-1, "%Y/%m/%d") ``` 翌日の日付にならないように-1 ``` | eval query="SELECT * FROM vpcflowlogs WHERE … ". ``` SQLを組み立てる(クォートに要注意) ``` " date>='".min_date_p."' AND date<='".max_date_p."'". ``` パーティションの絞り込み ``` " AND start>=".info_min_time." AND start<=".info_max_time ``` ログの日付時刻の絞り込み ``` | return query ] ``` サブサーチの結果が「query="SELECT ..."」という文字列に展開される ``` 補足事項: addinfoコマンドで、info_min_time/info_max_timeというフィールドが追加されます。値はタイムピッ カーで指定した検索範囲に対応するUnixtimeです。なお、SPL内で検索範囲を指定するearliest/latestという特殊な変 数がありますが、これらは代入はできますが参照はできないのでaddinfoを使いました。 参考:addinfo - Splunk Documentation
  18. 通常のIndexとの比較 DB Connect+Athena 通常のIndex 検索パフォーマンス 相対的に遅い - スケジュールサーチなどを活用す るのもあり 相対的に速い

    - TSIDX/Bloom Filterは強力 コスト 相対的に安い - Athenaの従量課金次第 相対的に高い 使い勝手 SQLの知識が必要 - SPLの中にSQLを記述するのでや やトリッキー - ダッシュボード化するのもあり 通常のSPL 25 DB Connect+AthenaはFS-S3と基本的には似た傾向があり、通常のIndexとはコストとパフォーマンスのト レードオフがあります。
  19. 参考: Splunk .conf24のセッションより ▪ PLA1390B - Searching Simple Storage Service

    (S3) | Cost Effective Data LifeCycle with Splunk 27 Splunk .conf24 にて、Splunk EnterpriseでS3のデータを直接検索する手法について発表 がありました。 こちらは、独自のAppを開発して、S3の機能(S3 Select)を使って検索を行うという内 容でした。今回ご紹介した内容とは手法が違いますが、コンセプトは似ていると思いまし たので共有します。
  20. Wrap up ▪ Splunk Enterprise + DB Connect Add-on +

    Amazon Athena を組み合わせて、 Federated Search for S3 のようなことをやってみました。 ▪ セットアップの手間は少しかかりますが、Splunk CloudでFederated Search for S3 を利用する場合も、Glue Data CatalogやIAM UserなどAWS側の準備が必要に なり、Splunk Cloud側にもFederated Indexの設定が必要になるので、手間はそ れほど変わらないと感じました。 ▪ すでにS3をデータレイクとして利用しているケースなどで、パフォーマンスとコ ストのバランスを取りつつ、柔軟にデータ活用ができる手法になりうると期待し ています。 28