JFrogのログ分析をDatadogで
ArtifactoryとXrayの利用データを追跡することでJFrogプラットフォームの運用を確実なものとすることができます。リアルタイム監視とログ分析によって、DevOpsパイプラインの効率を高め、ソフトウェアのリリースを安心して実行し続けることができます。
Datadogはクラウドスケールのアプリケーション監視サービスをSaaS型のデータ分析プラットフォームとして提供しています。この統合により、JFrog Platformの監視を容易に実現することができます。
ここでは、データコレクター統合をインストールし、Datadogを使用してJFrog Platformを監視するための2つのステップを見てみましょう。
Fluentdの使用
まず、JFrog上でオープンソースのデータコレクタであるFluentdをElasticsearchとKibanaの統合で利用できるようにしました。FluentdはJFrogプラットフォームの各製品に対するログ入力、フィールドの抽出、レコードの変換を行い、このデータをJSONに変換します。
すべてのログデータを共通フォーマットで利用できるため、Fluentdはプラグインを介して、Datadogダッシュボードにログデータを送信します。
Fluentdのインストール
JFrog Platform Deployment(JPD)の各ノードにFluentdロギング・エージェントをインストールする必要があります。このエージェントは様々なJPDログファイルに新しいエントリを追加し、対応するレコードの変換を行い、Fluentdの出力プラグインに送信します。
各ノードにFluentdエージェントをインストールするにはFluentdインストールガイドに記載されている通り、OSの種類に応じた手順を実施します。
例えばRed Hat UBI Linuxを動作させているノードではFluentdエージェント 「td-agent」をインストールする必要があります(このOSではrootアクセスが必要です):
$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh
$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh
Red Hat UBIのuser-spaceにインストールする場合はFluentdのRubyとGem をインストールします:
$ curl -O | tar -xvf
Fluentdの設定
rootユーザーかそれ以外のユーザーかにより、Fluentd設定ファイルの配置場所の変更が必要な場合があります。
パッケージマネージャを使用した場合、rootユーザーによるインストールではデフォルトでtd-agent.confファイルは /etc/td-agent/にあります。
$ ls -al /etc/td-agent/td-agent.conf
-rw-r–r– 1 root root 8017 May 11 18:09 /etc/td-agent/td-agent.conf
$ ls -al /etc/td-agent/td-agent.conf
-rw-r--r-- 1 root root 8017 May 11 18:09 /etc/td-agent/td-agent.conf
rootユーザー以外のインストールでは書き込み権限があればtd-agent.confファイルをどこに保存しても構いません。td-agentを実行時、-cフラグを利用してfluentdをこのファイルの場所に指定することができます。
設定ファイルはJFrog log analytics Github repoから取得した設定ファイルに置き換える必要があります。
このリポジトリでは フォルダに設定ファイルのテンプレートが含まれています。ノードで実行されているJFrogアプリケーションにマッチするテンプレートを使用してください:
この設定ファイルのDatadogインスタンスのホストとポートをmatchディレクティブで更新する必要があります:
#DATADOG OUTPUT
@type Datadog
@id Datadog_agent_Artifactory
api_key
# optional
include_tag_key true
dd_source Fluentd
#END DATADOG OUTPUT
Fluentdの実行
新しい設定ファイルを設定後にコンテナにログインし、ポッド上のサービスとしてtd-agentを起動することができます:
$ systemctl start td-agent
非rootユーザーによるインストールの場合はtd-agentに設定ファイルを指定して実行することができます:
$ td-agent -c td-agent.conf
これでFluentdのログ・エージェントが起動し、JPDのログをtailして に送信します。
ArtifactoryとXrayを実行しているすべてのKubernetesポッドに対して、これらの手順を繰り返す必要があります。
Datadogの利用
Datadogのアカウントを作成してオンボードステップを実行するか、既にアカウントをお持ちの場合はapiKeyを使用して設定することができます。新規にDatadogをセットアップする場合は以下を実施します:
- KubernetesクラスタでDatadogエージェントをHelm chartでデプロイして実行
- ログ収集を有効にする場合、オンボーディング手順で指定したDatadog-values.yaml を更新
- エージェントがレポートを開始すると、Fluentd経由でフォーマットされたログを送信するために使用するapiKeyを取得
- IntegrationsからFluentdを検索し、Fluentdをインストール
Datadogの設定後、Logs > Searchでログにアクセスできます。また、ログを取得したい特定のソースを選択することもできます。
apiKeyが存在する場合はDatadog Fluentd pluginを使用し、FluentdからDatadogアカウントに直接ログを転送します。適切なメタデータを追加することはDatadogでログを最大限に活用するための鍵となります。デフォルトではホスト名とタイムスタンプフィールドは設定されているため、ここでは指定しません。
Logs > Searchで左ペインのFacets > Addからすべての属性をFacetsとして追加します
+katrinr@jfrog.com This is Datadog bog but Elasticsearch is written in the English blog.
Dashboards > New Dashboard > New screenboardから新しいダッシュボードを作成します
export.json からダッシュボードをインポートし、既存の新しいダッシュボードを置換します。データ・ウィジェットを通して表示される情報を含むダッシュボードにアクセスすることで、JFrog Unified Platformにリアルタイム監視が提供されます。
+katrinr@jfrog.com The link is broken in English blog.
インストール後、JFrog Platform Logsダッシュボードに主要な動作メトリクスのタイムラインとカウントデータが表示されます:
- Log volumes, which can be filtered by type(タイプでフィルター可能なログ・ボリューム)
- Service errors(サービスエラー)
- HTTP response codes(HTTPレスポンスコード)
- Accessed image(アクセスされたイメージ)
- Accessed repositories(アクセスされたリポジトリ)
- Data transfers in GB for uploads/downloads(アップロード/ダウンロードされたデータ量(GB))
- Top 10 IPs for upload/download(アップロード/ダウンロードが多い上位10件のIPアドレス)
- Audit actions by username(ユーザー毎の監査アクション)
- Denied actions and logins by IP and username(IPとユーザー毎の拒否されたアクションとログイン)
- Accepted deploys by username(ユーザー毎の許可されたデプロイ)
集約ソリューション
これでDatadogを使用した堅牢なトラッキング・ソリューションが利用可能となり、すべてのサービスとノードに渡ってJFrog Platform Deploymentの運用に関するデータの監視が可能となりました。