fbpx

ログ分析とログ最適化によりセキュリティ向上やコスト削減をサポートするEdge Deltaについて調べてみた #GCP #k8s #オブザーバビリティ #アナライズ

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

EdgeDeltaとは?

ログデータの分析や大量のログデータを保持するにはいくつかの課題が生じます。

  1. ストレージ容量とコスト: 大量のログを保持するためには、十分なストレージ容量が必要です。大規模なログデータは膨大な容量を占有し、それに伴ってストレージコストも増加します。
  2. データの収集と統合: 主にクラウド環境では、複数のソースからログデータを収集する必要があります。異なるクラウドプロバイダーやサービス間でのログの統一された形式やプロトコルがない場合、データの統合が困難になります。
  3. ログの可視性と分析: 大量のログデータを効果的に分析するためには、ログの可視性と分析ツールの導入が必要です。特にクラウド環境では、複数のリソースやアプリケーションからのログを統合的に分析する必要があります。

Edge DeltaはKubernetesやLinux、Windows環境におけるログデータの最適化及び分析をおこなうオブザーバビリティ(可観測性)自動化プラットフォームです。
ログデータの最適化によりストレージ容量とコストの問題をクリアにし、Google Cloud StorageやDatdog、kafkaやSplunkなど多様なインテグレーションが用意され、一つのプラットフォームでデータの管理がおこなえます。導入後即座にログ分析を開始することができ、複数のリソースやアプリケーションからのログを統合的に可視化・分析し、運用フェーズで直面する様々な課題の解決をサポートする製品です。

Edge Deltaの機能は大きく2つに分けられます。

  • ログ分析。EdgeDeltaが提供するログ分析により、自分たちのサービスやアプリケーションの挙動を理解することができ、問題の特定や改善をするための情報が得られます。
  • ログ最適化。データ可視性を提供するオブザーバビリティパイプラインを構築し、繰り返し発生するログをグループ化してログを制御する機能です。

アーキテクチャは以下の通りです。

ワークロードにEdge Delta エージェントをデプロイします。ログデータは設定した送信先(Archive Destinaitions・Trigger Destinaitions・Streaming Destination)に配置されます。WEB UIの管理コンソールはSaaSで提供され、コンソール上で各種設定ができ、分析結果をみることが可能です。

インストール

試しにインストールしていきましょう。このブログではGKEにEdgeDeltaをインストールしてみます。
まずはEdgeDeltaのアカウントを作成します。クイックスタートにてedgedelta.com のサイトでアカウント登録をおこないます。


必要箇所を記述しNextを押下するとインストールへ移ります。

KubernetesのCluster Nameを入れて先に進むとインストールに必要なコマンドが紹介されます。これは簡易インストールの手順でHelmを使用しています。その他にもkubectlやLinux、Windowsなどでのエージェントインストール方法があります。詳しくはこちらをご参照ください。

以下はこちらの環境で実施した例となります。(一部フィルターかけています)

$ helm repo add edgedelta https://edgedelta.github.io/charts
"edgedelta" has been added to your repositories

$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "edgedelta" chart repository
...Successfully got an update from the "gitlab" chart repository
Update Complete. ⎈Happy Helming!⎈

$ helm upgrade edgedelta edgedelta/edgedelta -i --version v0.1.67 --set image.tag=v0.1.56 --set secretApiKey.value=67fa0f55-XXXX-XXXX-XXXX-XXXXXXXXXXX --set agentUpdater.enabled=true -n edgedelta --create-namespace
Release "edgedelta" does not exist. Installing it now.
NAME: edgedelta
LAST DEPLOYED: Wed May 17 06:18:12 2023
NAMESPACE: edgedelta
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Visit https://app.edgedelta.com

2. Find the configuration with 67fa0f55-XXXX-XXXX-XXXX-XXXXXXXXXXX on https://app.edgedelta.com to check if agents are active
3. You can also run the command below to verify the agent health.
kubectl run agent-troubleshooter -i --rm --image=gcr.io/edgedelta/agent-troubleshooter:latest  -- /edgedelta/agent_troubleshooter --mode=post-install-checks --api_key=67fa0f55-XXXX-XXXX-XXXX-XXXXXXXXXXX

3で紹介されているように手動でヘルスチェックしてみます。
$ kubectl run agent-troubleshooter -i --rm --image=gcr.io/edgedelta/agent-troubleshooter:latest -- /edgedelta/agent_troubleshooter --mode=post-install-checks --api_key=c47eb4da-67fa0f55-XXXX-XXXX-XXXX-XXXXXXXXXXX
If you don't see a command prompt, try pressing enter.
2023-06-15T07:01:46.568Z INFO agent_troubleshooter/main.go:32 Starting Edge Delta agent troubleshooter
2023-06-15T07:01:46.568Z INFO agent_troubleshooter/main.go:65 Waiting for termination signals SIGINT or SIGTERM
2023-06-15T07:01:46.569Z INFO agent_troubleshooter/post_install_check.go:24 Starting Edge Delta agent post-install check.
2023-06-15T07:01:46.569Z INFO agent_troubleshooter/post_install_check.go:28 Starting agent API key check
2023-06-15T07:01:46.921Z INFO agent_troubleshooter/post_install_check.go:33 API key is successfully verified with the Edge Delta server
2023-06-15T07:01:46.921Z INFO agent_troubleshooter/post_install_check.go:35 Starting agent health check, this may take up to few minutes
2023-06-15T07:01:47.082Z INFO agent_troubleshooter/post_install_check.go:51 Successfully verified agent health, deployed agents for the specified API key is: [gke-cl-acmtestcluster-2-default-pool-3f1fe9e9-svh9-v0.1.56]
2023-06-15T07:01:47.083Z INFO agent_troubleshooter/main.go:73 Agent troubleshooter context is done
2023-06-15T07:01:47.083Z INFO agent_troubleshooter/main.go:43 Agent troubleshooter finished with success
pod "agent-troubleshooter" delete

全てINFOなので問題ないようです。

先程のコマンドが記載されている画面でI Ran deploy Commndsを押し完了させるとWEB UIに接続できました。


これでインストールは完了です。記述されたコマンドを順番に実行するだけでインストールができました。

ログ分析

暫くするとLogsのNegative Patternsの検出が始まりました。
ログのアノマリ検知には「skyline」という独自のアルゴリズムが使われているようです。いくつか分析項目があり、その中のTop Patternsで検出されたログの内容を見ることができます。例えばSENTIMENT(SCORE)でソートしてみるとこちらの環境でのエラーは主にReconciler関連のエラーが多いことが分かります。
エラー内容について詳しくは書きませんが、この環境ではACM(Anthos Config Management)を用いてGitOpsによりGCPリソースを管理しており、Gitリポジトリ上ではなくGCP上の操作で直接作成・更新してしまったリソースが複数あるためGit側とGCPリソースの同期ができていない事を示すReconciler errorが発生しているようです。
インストール完了から短い時間で分析が開始されました。ログの種類と件数が一画面で可視化される仕組みになっています。

ログ最適化

ここからはフリープランではなく有料プランへの切り替えが必要です。本稿では期間限定のPoC用のライセンスを使用しています

EdgeDeltaの強みはログを最適化することで保存するログ量を減らし、コストダウンさせるものです。EdgeDeltaのユースケースではログの最適化により96.8%削減できていました。
ログの最適化はEdgeDeltaが用意しているStreamingの機能を適用することで試すことができるのですが、本稿ではGCPを使っており、現時点ではGCPではStreaming機能は実装されておらず、試してみることはできませんでした。
代わりに最適化する前のログデータをアーカイブして保存する機能があるので、そちらを紹介することで操作感をイメージしてもらえればと思います。

本稿ではGoogleCloudStorageを用意してログをアーカイブして貯めこむことを実施してみます。
手順はこちらに記載されています。流れとしては以下です。

  1. [GCP]サービスアカウントを作成し、Storage HMAC キー管理者ロールを付与
  2. [GCP]GCS HMACキーを作成してGCSバケットに紐づける
  3. [EdgeDelta]WEB UIからGCSを登録

1と2についてはドキュメントを読んでいただければ分かると思いますので、3について説明します。
WEB UIより[Admin] - [Intagrations]を見ると使用可能なアドオンが表示されます。


ここでGoogle Cloud Storageを選択します。以下を入力しました。

Name:任意の名前
Bucket:2のGCSバケット名
GCS HMAC Access Key:2で作成したアクセスキー
GCS HMAC Secret Key: 2で作成したシークレットキー
Compression(オプション):アーカイブ用の圧縮タイプ。gzip、zstd、snappy、またはuncompressedを入力
Encording(オプション):json or parquet

他にもオプションの項目はありますが、本稿では上記のみを入力しsaveしています。

Configurationsにお使いのGKEクラスタを指定し、Workflowsはデフォルトで用意されているlog_archive_workflowを選択してAdd to Configurationを押すとIntegrationにGoogleCloudStorageが登録されます。

暫くすると先程お見せしたPipeline Summaryの下の部分にArchiveのアイコンが表示されます。

GCSのバケットの情報を見るとログデータがアーカイブして格納されている事が分かります。

なお、EdgeDeltaではWEB UIにて設定した内容はYamlファイルで管理され、このファイルをカスタマイズする事で柔軟な設定を可能にします。
[Data Pipeline] - [Agent Configs] - (対象クラスタのActions) - [Edit]で編集できます。
workflows:
example_workflow:
(中略)
log_archive_workflow:
input_labels:
- kubernetes_logs
destinations:
- gcs-integration-cl
(中略)
outputs:
archives:
- integration_name: gcs-integration-cl

さいごに

本稿ではEdgeDeltaのログ分析とログ最適化の機能を紹介しました。
ログの分析はデフォルトの設定のままの紹介でしたが、カスタマイズすることでよりデータの収集、整理、可視化を向上させられると感じました。
EmailやSlackなど外部連携機能が用意されているので、ログ通知も兼ね備えています。
また繰り返しとなりますが、ログ最適化はストレージとネットワークの使用量を削減し、コストとパフォーマンスの向上を目指せると謳われています。残念ながらGCPではStreaming機能は実装されていませんでしたが、Datadogなどを使用しているシステムではこの機能を利用することができます。

EdgeDelta社曰くDataDogに関しては特にログ最適化の効果が大きいそうです。DataDogだけでなくSplunk、ElasticやKafkaなど他の製品でもStreaming機能が用意されているので、大量のデータ保存による維持費でお困りの方は是非一度お試ししてみてはいかがでしょうか。

フリープランでは制限があるので試しに期間限定の有料プランを使ってみたい場合は、クリエーションラインにお気軽にご相談ください。

New call-to-action

Author

将来はいろいろな都市に住んでみたいお気楽エンジニア

a-ikedaの記事一覧

新規CTA