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の運用に関するデータの監視が可能となりました。