はじめに
私の現在の所属部署では、オブザーバビリティの一環として組織やサービスの各種KPIを自動で可視化することで、組織やサービスの状態をいつでも確認できるように進めています。 このためには利用している各種サービスや提供しているサービスからデータを収集、蓄積、加工、分析、可視化する基盤が必要となります。この基盤はKPIだけではなく様々なデータを収集し可視化する際の基盤として汎用的に利用することができます。
本記事は各種データを可視化する基盤をどのように構成しているか、全体のデザインとその工夫点を説明します。
基盤のビジョン
- できるだけ簡単に構築、設定でき、継続的に改善できるようにする
- なるべく汎用的で安価にする
- エンジニアによるエンジニアのためのシステムにする
構成するためのサービス、ツール
- Airbyte: 各種サービスのデータを収集するOSS
- Grafana: データを可視化するOSS
- AWS
- S3 : データを蓄積するストレージサービス
- Glue : データを加工するサービス
- ECS : AWS 上で Docker をマネジメントするサービス、Grafanaはこの上に立つ
- Fargate : ECS のサーバレス基盤、EC2などのホストマシンが不要に
- Athena: S3のデータをSQL likeに集計できるサービス
システムアーキテクチャ
- データ収集(ポーリングやバッチ収集)が必要なサービスは Airbyte で収集し、S3に格納。AirbyteはEC2上のDocker上に構築(ECSに構築しない理由は後述)
- S3に直接投入できるサービスのデータはそのままS3に格納
- AWS Glue でS3のデータをテーブル化
- データ加工が必要な場合はGlueで加工し、S3に蓄積
- Grafanaで可視化、GrafanaからAWS Athenaにリクエストし、S3のデータを可視化。GrafanaはECS で構築(Fargate利用)
主要サービス説明
Airbyte
- 最近ホットなデータ収集ツール(2020年創業わずか1年でシリーズAに到達、$26Mの資金調達成功)
- OSSでAWSなどにone lineでデプロイ、簡単に様々なデータ元からコネクタを通してデータを収集し指定したストレージ、DBなどに蓄積が可能
-
データ元は100種以上、先は30種以上
- 主要なクラウドサービス、データベースに対応
- マイナーどころも結構多い
- 収集を含む各種設定が楽(GUIベースで必要最小限)
注意点
- べータ版(コネクタによってはα版)なので注意
- ECSなどのマネージドサービスに対応していない
- Airbyte が、他の docker コンテナーを作成する必要があるため
- 将来的には対応予定
Grafana
- デファクトな可視化ツール
- OSSで様々なデータの可視化に対応、プラグインも豊富
- Grafanaだけでもある程度色々なサービス元からデータを拾って可視化が可能
- AWS Athenaに対応しており、S3のデータを集計して可視化することもできる
AWS Glue
- S3のデータを読み取りテーブル、構造化し、加工できるサービス
- クローラー:AirbyteがS3に入れたデータをテーブル化し、Athenaから読み取れるようにする
- ジョブ:S3のデータを読み取って加工、分析する。
- パイプラインとして全体を構築して各種処理はGUIベースでもCodeベース(pyspark)で書くこともできる。
構成の工夫点
- なるべくシステムをAWSに集約、自分たちで手を入れられるように(OSSを利用)
- 外部サービス使うと社内の手続きや監査がめんどくさい面も
- AWS S3を利用してコストを低減(結構DB高いのでコスト削減)
- Glue を利用して、S3に蓄積されたデータを複雑な二次加工できるように、コードで書けるはエンジニアにとってかなり重要
- GrafanaからAthenaを通してデータを可視化する
- SQL Likeに書けるのでAWSに精通してなくても新しい可視化用パネルを作れる
おわりに
今回は構築するデータ可視化基盤の全体概要、アーキテクチャ、デザインを紹介しました。
次回以降では具体的に各種サービスの構築手順を説明予定です。
商標
- AWSおよびAWSの各種サービスは、Amazon.com, Inc.またはその関連会社の商標です。
- 記載の会社名、製品名、サービス名等はそれぞれの会社の商標または登録商標です。