- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
対応する Jenkins のバージョン:
手動ステップ: 手動でトリガーされたパイプラインを表示します
キュータイム: パイプラインのジョブが処理されるまでのキューでの待ち時間を表示します
ログ相関: パイプラインスパンをログに相関させ、ジョブログの収集を有効にします
インフラストラクチャーメトリクス相関: Jenkins ワーカーのためにパイプラインをインフラストラクチャーホストメトリクスに相関させます
カスタムスパン: カスタムスパンを構成します
事前定義されたカスタムタグ: ランタイムにカスタムタグとメトリクスを構成します
パラメーター: デフォルトのブランチ名や Git 情報などのカスタムパラメーターを設定します
パイプラインの障害理由: パイプラインの障害原因を特定します
Datadog Jenkins プラグインは、Datadog Agent を通じてメトリクスをレポートするか、API キーが提供されている場合は Datadog に直接レポートすることができます。Jenkins コントローラインスタンス上で Datadog Agent を実行していない場合、Datadog は Agent インストール手順に従って最初にそれをインストールすることを推奨します。
Jenkins コントローラと Datadog Agent が Kubernetes クラスターにデプロイされている場合、Datadog は、Jenkins コントローラポッドに DD_AGENT_HOST
環境変数を自動的に設定し、ローカル Datadog Agent と通信する Admission Controller を使用することを推奨しています。
ジョブからのログ収集を有効にするには、Datadog Agent が TCP ポートでログをリッスンするように構成します。
Agent のコンフィギュレーションファイル datadog.yaml
に logs_enabled: true
を追加するか、DD_LOGS_ENABLED=true
環境変数を設定します。
/etc/datadog-agent/conf.d/jenkins.d/conf.yaml
に以下の内容のファイルを作成します。service
が以前に提供された CI インスタンス名と一致することを確認してください。
logs:
- type: tcp
port: 10518
service: my-jenkins-instance
source: jenkins
Agent を再起動して変更を有効にします。
Agent のコンフィギュレーションファイル datadog.yaml
に logs_enabled: true
を追加するか、DD_LOGS_ENABLED=true
環境変数を設定します。
%ProgramData%\Datadog\conf.d\jenkins.d\conf.yaml
に以下の内容のファイルを作成します。service
が以前に提供された CI インスタンス名と一致することを確認してください。
logs:
- type: tcp
port: 10518
service: my-jenkins-instance
source: jenkins
Agent を再起動して変更を有効にします。
Agent のコンフィギュレーションファイル datadog.yaml
に logs_enabled: true
を追加するか、DD_LOGS_ENABLED=true
環境変数を設定します。
~/.datadog-agent/conf.d/jenkins.d/conf.yaml
に以下の内容のファイルを作成します。service
が以前に提供された CI インスタンス名と一致することを確認してください。
logs:
- type: tcp
port: 10518
service: my-jenkins-instance
source: jenkins
Agent を再起動して変更を有効にします。
この構成では、Agent はポート 10518
でログをリッスンします。
Datadog Jenkins プラグイン v3.3.0 以降をインストールおよび有効化します:
Datadog Plugin
を探します。 Datadog Plugin
を検索し、プラグインがインストールされたことを確認します。Datadog Jenkins プラグインを構成する方法は、いくつかあります。
Datadog Plugin
セクションに移動します。Use the Datadog Agent to report to Datadog
(Datadog Agent を使用して Datadog に報告する) のモードを選択します。Agent
ホストを構成します。8126
を使用していない場合は、Traces Collection Port
を構成してください。Enable CI Visibility
チェックボックスをオンにします。このオプションを使用すると、Jenkins プラグインは Datadog Agent を使用せずに Datadog に直接レポートするようになります。これには、API キーが必要です。
Datadog Plugin
セクションに移動します。Use Datadog API URL and Key to report to Datadog
(Datadog API URL とキーを使用して Datadog に報告する) のモードを選択します。datadoghq.com
以外の Datadog サイトでは、Datadog API URL
、Log Intake URL
、Webhook Intake URL
を Datadog サイトを指すように変更します。Datadog API Key
を入力します。Enable CI Visibility
チェックボックスをオンにします。Jenkins インスタンスが Jenkins configuration-as-code
プラグインを使用する場合:
datadogGlobalConfiguration
のエントリを追加して、コンフィギュレーション YAML を作成または変更します。
unclassified:
datadogGlobalConfiguration:
# Select the `Datadog Agent` mode (DSD).
reportWith: "DSD"
# Configure the `Agent` host
targetHost: "<your-agent-host>"
# Configure the `Traces Collection` port
targetTraceCollectionPort: 8126
# Enable CI Visibility flag
enableCiVisibility: true
# (Optional) Configure your CI Instance name
ciInstanceName: "jenkins"
Jenkins インスタンスの Web インターフェースで、Manage Jenkins > Configuration as Code にアクセスします。
コンフィギュレーションを適用または再ロードします。
View Configuration
ボタンを使用してコンフィギュレーションを確認します。
Jenkins インスタンスが Jenkins configuration-as-code
プラグインを使用する場合:
datadogGlobalConfiguration
のエントリを追加して、コンフィギュレーション YAML を作成または変更します。
unclassified:
datadogGlobalConfiguration:
# Select the `Agentless` mode (HTTP).
reportWith: "HTTP"
# Update the endpoints if reporting to Datadog sites other that `datadoghq.com`
targetApiURL: "https://api.datadoghq.com/api/"
targetLogIntakeURL: "https://http-intake.logs.datadoghq.com/v1/input/"
targetWebhookIntakeURL: "https://webhook-intake.datadoghq.com/api/v2/webhook/"
# Configure your API key
targetCredentialsApiKey: "<your-api-key>"
# (Optional) Configure your CI Instance name
ciInstanceName: "jenkins"
Jenkins インスタンスの Web インターフェースで、Manage Jenkins > Configuration as Code にアクセスします。
コンフィギュレーションを適用または再ロードします。
View Configuration
ボタンを使用してコンフィギュレーションを確認します。
Jenkins インスタンスの Web インターフェースで、Manage Jenkins > Script Console にアクセスします。
コンフィギュレーションスクリプトを実行します。
import jenkins.model.*
import org.datadog.jenkins.plugins.datadog.DatadogGlobalConfiguration
def j = Jenkins.getInstance()
def d = j.getDescriptor("org.datadog.jenkins.plugins.datadog.DatadogGlobalConfiguration")
// Select the Datadog Agent mode
d.setReportWith('DSD')
// Configure the Agent host.
d.setTargetHost('<your-agent-host>')
// Configure the Traces Collection port (default 8126)
d.setTargetTraceCollectionPort(8126)
// Enable CI Visibility
d.setEnableCiVisibility(true)
// (Optional) Configure your CI Instance name
d.setCiInstanceName("jenkins")
// Save config
d.save()
Jenkins インスタンスの Web インターフェースで、Manage Jenkins > Script Console にアクセスします。
コンフィギュレーションスクリプトを実行します。
import jenkins.model.*
import org.datadog.jenkins.plugins.datadog.DatadogGlobalConfiguration
def j = Jenkins.getInstance()
def d = j.getDescriptor("org.datadog.jenkins.plugins.datadog.DatadogGlobalConfiguration")
// Select the Datadog Agent mode
d.setReportWith('HTTP')
// Update the endpoints if reporting to Datadog sites other that `datadoghq.com` (default)
d.setTargetApiURL("https://api.datadoghq.com/api/")
d.setTargetLogIntakeURL("https://http-intake.logs.datadoghq.com/v1/input/")
d.setTargetWebhookIntakeURL("https://webhook-intake.datadoghq.com/api/v2/webhook/")
// Configure your API key
d.setTargetApiKey("your-api-key")
// Enable CI Visibility
d.setEnableCiVisibility(true)
// (Optional) Configure your CI Instance name
d.setCiInstanceName("jenkins")
// Save config
d.save()
Jenkins インスタンスマシンで次の環境変数を設定します。
# Select the Datadog Agent mode
DATADOG_JENKINS_PLUGIN_REPORT_WITH=DSD
# Configure the Agent host
DATADOG_JENKINS_PLUGIN_TARGET_HOST=your-agent-host
# Configure the Traces Collection port (default 8126)
DATADOG_JENKINS_PLUGIN_TARGET_TRACE_COLLECTION_PORT=8126
# Enable CI Visibility
DATADOG_JENKINS_PLUGIN_ENABLE_CI_VISIBILITY=true
# (Optional) Configure your CI Instance name
DATADOG_JENKINS_PLUGIN_CI_VISIBILITY_CI_INSTANCE_NAME=jenkins
Jenkins インスタンスを再起動します。
Jenkins インスタンスマシンで次の環境変数を設定します。
# Select the Datadog Agent mode
DATADOG_JENKINS_PLUGIN_REPORT_WITH=HTTP
# Update the endpoints if reporting to Datadog sites other that `datadoghq.com` (default)
DATADOG_JENKINS_PLUGIN_TARGET_API_URL="https://api.datadoghq.com/api/"
DATADOG_JENKINS_PLUGIN_TARGET_LOG_INTAKE_URL="https://http-intake.logs.datadoghq.com/v1/input/"
DATADOG_JENKINS_TARGET_WEBHOOK_INTAKE_URL="https://webhook-intake.datadoghq.com/api/v2/webhook/"
# Configure your API key
DATADOG_JENKINS_PLUGIN_TARGET_API_KEY=your-api-key
# Enable CI Visibility
DATADOG_JENKINS_PLUGIN_ENABLE_CI_VISIBILITY=true
# (Optional) Configure your CI Instance name
DATADOG_JENKINS_PLUGIN_CI_VISIBILITY_CI_INSTANCE_NAME=jenkins
Jenkins インスタンスを再起動します。
CI Visibility が有効になっていることを確認するには、Jenkins Log
に移動して次を検索します。
Re/Initialize Datadog-Plugin Agent Http Client
TRACE -> http://<HOST>:<TRACE_PORT>/v0.3/traces
Jenkins のワーカーを使用している場合、パイプラインを実行しているインフラストラクチャーでパイプラインを関連付けることができます。この機能を動作させるには
DD_CI_HOSTNAME
という新しい環境変数をワーカーのホスト名で設定し、エクスポートします。export DD_CI_HOSTNAME=my-hostname
Jenkins インスタンスの管理に Kubernetes を使用している場合は、DD_CI_HOSTNAME
環境変数を Jenkins ジョブを実行するポッドに追加してください。この環境変数の値は、インフラストラクチャーメトリクスをレポートする際に、Datadog Agent のデーモンセットで何を使用しているかに依存します。
これは、Jenkins ワーカーにのみ必要です。Jenkins コントローラの場合、インフラストラクチャーメトリクスの相関は追加アクションを必要としません。
注: インフラストラクチャーメトリクスの相関は、Jenkins Plugin v5.0.0+ 以降でサポートされています。
これは、ジョブログの収集を可能にするオプションのステップです。
Datadog Plugin
セクションに移動します。Use the Datadog Agent to report to Datadog
オプションが選択されていることを再度確認します。Log Collection
ポートを構成します。Enable Log Collection
チェックボックスをクリックしてアクティブにします。Datadog Plugin
セクションに移動します。Use the Datadog Agent to report to Datadog
が選択されていることと、Log Intake URL
が現在の Datadog サイトの URL を指していることを再度確認します。Enable Log Collection
チェックボックスをクリックしてアクティブにします。Jenkins インスタンスが Jenkins configuration-as-code
プラグインを使用する場合:
datadogGlobalConfiguration
の構成 YAML に、以下を含めるように修正します。unclassified:
datadogGlobalConfiguration:
# Configure the `Log Collection` port, as configured in the Datadog Agent,
targetLogCollectionPort: 10518
# Enable Log collection
collectBuildLogs: true
View Configuration
ボタンを使用してコンフィギュレーションを確認します。Jenkins インスタンスが Jenkins configuration-as-code
プラグインを使用する場合:
datadogGlobalConfiguration
の構成 YAML に、以下を含めるように修正します。unclassified:
datadogGlobalConfiguration:
# Update the endpoints if reporting to Datadog sites other that `datadoghq.com`
targetLogIntakeURL: "https://http-intake.logs.datadoghq.com/v1/input/"
# Enable Log collection
collectBuildLogs: true
View Configuration
ボタンを使用してコンフィギュレーションを確認します。import jenkins.model.*
import org.datadog.jenkins.plugins.datadog.DatadogGlobalConfiguration
def j = Jenkins.getInstance()
def d = j.getDescriptor("org.datadog.jenkins.plugins.datadog.DatadogGlobalConfiguration")
// Configure the Log Collection port, as configured in the Datadog Agent.
d.setTargetLogCollectionPort(10518)
// Enable log collection
d.setCollectBuildLogs(true)
// Save config
d.save()
import jenkins.model.*
import org.datadog.jenkins.plugins.datadog.DatadogGlobalConfiguration
def j = Jenkins.getInstance()
def d = j.getDescriptor("org.datadog.jenkins.plugins.datadog.DatadogGlobalConfiguration")
// Update the endpoints if reporting to Datadog sites other that `datadoghq.com`
d.setTargetLogIntakeURL("https://http-intake.logs.datadoghq.com/v1/input/")
// Enable log collection
d.setCollectBuildLogs(true)
// Save config
d.save()
# Configure the Log Collection port, as configured in the previous step.
DATADOG_JENKINS_PLUGIN_TARGET_LOG_COLLECTION_PORT=10518
# Enable log collection
DATADOG_JENKINS_PLUGIN_COLLECT_BUILD_LOGS=true
# Update the endpoints if reporting to Datadog sites other that `datadoghq.com`
DATADOG_JENKINS_PLUGIN_TARGET_LOG_INTAKE_URL="https://http-intake.logs.datadoghq.com/v1/input/"
# Enable log collection
DATADOG_JENKINS_PLUGIN_COLLECT_BUILD_LOGS=true
パイプラインの結果を報告するには、デフォルトのブランチ名 (例: main
) をパイプラインのスパンに git.default_branch
という属性で付加します。これは通常、自動的に行われますが、Jenkins からこの情報が提供されず、プラグインがこの情報を抽出できない場合もあります。
この場合、ビルドで DD_GIT_DEFAULT_BRANCH
環境変数を使用してデフォルトのブランチを手動で設定します。例:
pipeline {
agent any
environment {
DD_GIT_DEFAULT_BRANCH = 'main'
...
}
stages {
...
}
}
Jenkins プラグインは、Git の情報を環境変数で判断しています。しかし、リポジトリで Jenkinsfile
を使用しておらず、Jenkins で checkout
ステップを使って直接パイプラインを構成している場合、これらの環境変数が利用できないことがあります。
この場合、Git の情報をビルドの環境変数に伝搬させることができます。checkout
や git
のステップを実行した後に、 .each {k,v -> env.setProperty(k, v)}
という関数を使用します。例:
宣言型パイプラインを使ってパイプラインの構成を行う場合は、以下のように script
ブロックを使って Git の情報を伝搬させます。
checkout
ステップを使用する:
pipeline {
stages {
stage('Checkout') {
script {
checkout(...).each {k,v -> env.setProperty(k,v)}
}
}
...
}
}
git
ステップを使用する:
pipeline {
stages {
stage('Checkout') {
script {
git(...).each {k,v -> env.setProperty(k,v)}
}
}
...
}
}
スクリプトパイプラインを使ってパイプラインの構成を行う場合は、git の情報を直接環境変数に伝搬させることができます。
checkout
ステップを使用する:
node {
stage('Checkout') {
checkout(...).each {k,v -> env.setProperty(k,v)}
}
...
}
git
ステップを使用する:
node {
stage('Checkout') {
git(...).each {k,v -> env.setProperty(k,v)}
}
...
}
Jenkins プラグインは、環境変数を使用して Git 情報を決定します。しかし、パイプラインで使用している Git プラグインに依存するため、これらの環境変数が常に自動的に設定されるわけではありません。
Git 情報が自動的に検出されない場合は、以下の環境変数を手動で設定することができます。
注: これらの変数はオプションですが、設定された場合、他の Jenkins プラグインで設定された Git 情報よりも優先されます。
DD_GIT_REPOSITORY
(オプション)https://github.com/my-org/my-repo.git
DD_GIT_BRANCH
(オプション)main
DD_GIT_TAG
(オプション)0.1.0
DD_GIT_COMMIT_SHA
(オプション)faaca5c59512cdfba9402c6e67d81b4f5701d43c
DD_GIT_COMMIT_MESSAGE
(オプション)Initial commit message
DD_GIT_COMMIT_AUTHOR_NAME
(オプション)John Smith
DD_GIT_COMMIT_AUTHOR_EMAIL
(オプション)john@example.com
DD_GIT_COMMIT_AUTHOR_DATE
(オプション)2021-08-16T15:41:45.000Z
DD_GIT_COMMIT_COMMITTER_NAME
(オプション)Jane Smith
DD_GIT_COMMIT_COMMITTER_EMAIL
(オプション)jane@example.com
DD_GIT_COMMIT_COMMITTER_DATE
(オプション)2021-08-16T15:41:45.000Z
リポジトリ、ブランチ、コミットのみを設定した場合、プラグインは .git
フォルダから残りの Git 情報を取り出そうとします。
使用方法の一例をご紹介します。
pipeline {
agent any
stages {
stage('Checkout') {
steps {
script {
def gitVars = git url:'https://github.com/my-org/my-repo.git', branch:'some/feature-branch'
// Git 情報を環境変数で手動設定する。
env.DD_GIT_REPOSITORY_URL=gitVars.GIT_URL
env.DD_GIT_BRANCH=gitVars.GIT_BRANCH
env.DD_GIT_COMMIT_SHA=gitVars.GIT_COMMIT
}
}
}
stage('Test') {
steps {
// 残りのパイプラインを実行します。
}
}
}
}
Datadog プラグインは、パイプラインベースのジョブにカスタムタグを付加するために datadog
ステップを追加します。
Declarative Pipeline で、このステップをトップレベルのオプションブロックに追加します:
def DD_TYPE = "release"
pipeline {
agent any
options {
datadog(tags: ["team:backend", "type:${DD_TYPE}", "${DD_TYPE}:canary"])
}
stages {
stage('Example') {
steps {
echo "Hello world."
}
}
}
}
Scripted Pipeline で、関連するセクションを datadog
ステップでラップします:
datadog(tags: ["team:backend", "release:canary"]){
node {
stage('Example') {
echo "Hello world."
}
}
}
すべてのパイプライントレースにカスタムタグを送信するよう、Jenkins プラグインを構成することができます:
Datadog Plugin
セクションに移動します。Advanced
ボタンをクリックします。Global Tags
を構成します。Global Job Tags
を構成します。DATADOG_JENKINS_PLUGIN_GLOBAL_TAGS
key1:value1,key2:${SOME_ENVVAR},${OTHER_ENVVAR}:value3
$
記号を使用して正規表現内の一致グループを参照できます。DATADOG_JENKINS_PLUGIN_GLOBAL_JOB_TAGS
(.*?)_job_(.*?)_release, owner:$1, release_env:$2, optional:Tag3
一部のパイプラインを含めるか除外するように Jenkins プラグインを構成できます。
Datadog Plugin
セクションに移動します。Advanced
ボタンをクリックします。Excluded Jobs
を構成します。Included Jobs
を構成します。DATADOG_JENKINS_PLUGIN_EXCLUDED
susans-job,johns-.*,prod_folder/prod_release
DATADOG_JENKINS_PLUGIN_INCLUDED
susans-job,johns-.*,prod_folder/prod_release
インテグレーションが正常に構成されたら、パイプラインが終了した後、Pipelines ページと Pipeline Executions ページの両方にデータが入力されます。
注: Pipelines ページには、各リポジトリのデフォルトブランチのデータのみが表示されます。
Datadog プラグインに問題がある場合は、プラグインのログを DEBUG
レベルで設定できます。このレベルを使用すると、例外がスローされた場合にスタックトレースの詳細を確認できます。
Add new log recorder
ボタンをクリックします。org.datadog.jenkins.plugins.datadog.clients
-> Log Level ALL
org.datadog.jenkins.plugins.datadog.traces
-> Log Level ALL
org.datadog.jenkins.plugins.datadog.logs
-> Log Level ALL
org.datadog.jenkins.plugins.datadog.model
-> Log Level ALL
org.datadog.jenkins.plugins.datadog.listeners
-> Log Level ALL
ロガーを異なるログレコーダーに分割することもできます。
ログレコーダーが正常に構成されたら、Manage Jenkins > System log から目的のログレコーダーにアクセスして、DEBUG
モードでログを確認できます。
Jenkins パイプラインをトリガーすると、Datadog Plugin Logs でメッセージ Send pipeline traces
を検索できます。このメッセージは、プラグインが CI Visibility データを Datadog Agent に送信していることを示しています。
Send pipeline traces.
...
Send pipeline traces.
...
Jenkins Log に以下のエラーメッセージが表示された場合、プラグインの構成が正しいかどうか確認してください。
Error writing to server
localhost
を使用している場合は、代わりにサーバーのホスト名に変更してみてください。HTTP 504 のエラーメッセージが表示される場合は、Jenkins のプロキシ構成が正しいかどうかを確認してください。
Failed to send HTTP request: PUT http://localhost:8126/v0.3/traces - Status: HTTP 504
No Proxy Hosts
に localhost
が構成されていることを確認します。Datadog プラグインセクションが Jenkins コンフィギュレーションセクションに表示されない場合は、プラグインが有効になっていることを確認してください。手順:
Datadog Plugin
を検索します。Enabled
チェックボックスがオンになっていることを確認します。/safeRestart
URL パスを使用して Jenkins インスタンスを再起動します。CI Visibility オプションが Datadog プラグインセクションに表示されない場合は、正しいバージョンがインストールされていることを確認して、Jenkins インスタンスを再起動してください。手順:
Datadog Plugin
を検索します。/safeRestart
URL パスを使用して Jenkins インスタンスを再起動します。このエラーメッセージが Jenkins Log に表示される場合は、Jenkins プラグイン v3.1.0 以降を使用していることを確認してください
Datadog-Plugin Tracer の再初期化に失敗した。Jenkins 起動コマンドで Datadog Java Tracer が javaagent として使用されている場合、プラグインを介したトレース収集を有効にできない。このエラーは、パイプラインの実行には影響しません。