- 重要な情報
- アプリ内
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Amazon ECS エージェントのインストール手順でインストールした後、以下の手順に従いトレースの収集を有効にします。
gcr.io/datadoghq/agent
コンテナのタスク定義で次のパラメーターを設定します。portMappings
ホスト / コンテナポートを 8126
(プロトコルは tcp
)に設定します。
containerDefinitions": [
{
"name": "datadog-agent",
"image": "gcr.io/datadoghq/agent:latest",
"cpu": 100,
"memory": 256,
"essential": true,
"portMappings": [
{
"hostPort": 8126,
"protocol": "tcp",
"containerPort": 8126
}
],
...
Agent が正しい Datadog ロケーションにデータを送信できるよう、<DATADOG_SITE>
が の場合に以下の環境変数を設定します。
"environment": [
...
{
"name": "DD_SITE",
"value": "<DATADOG_SITE>"
},
...
]
...
Agent v7.17 以下の場合、以下の環境変数を追加します。
"environment": [
...
{
"name": "DD_APM_ENABLED",
"value": "true"
},
{
"name": "DD_APM_NON_LOCAL_TRAFFIC",
"value": "true"
},
...
]
...
アプリケーションコンテナでコンテナが実行されている基底の各インスタンスのプライベート IP アドレスを DD_AGENT_HOST
環境変数に割り当てます。これにより、アプリケーショントレースを Agent に送信できます。
Amazon の EC2 メタデータエンドポイントを使用すると、プライベート IP アドレスを検出できます。各ホストのプライベート IP アドレスを取得するには、次の URL をカールします。
curl http://169.254.169.254/latest/meta-data/local-ipv4
Amazon の ECS コンテナメタデータファイルを使用すると、プライベート IP アドレスを検出できます。各ホストのプライベート IP アドレスを取得するには、次のコマンドを実行します。
cat $ECS_CONTAINER_METADATA_FILE | jq -r .HostPrivateIPv4Address
APM に渡される各アプリケーションコンテナのトレースエージェントのホスト名の環境変数として結果を設定します。
os.environ['DD_AGENT_HOST'] = <EC2_PRIVATE_IP>
ECS アプリケーションの変数が起動時に設定される場合は、DD_AGENT_HOST
を使ってホスト名を環境変数として設定する必要があります。あるいは、Python、JavaScript、Ruby の場合は対象のホスト名をアプリケーションのソースコード内で設定することも可能です。Java と .NET の場合は、ECS タスクでホスト名を設定できます。たとえば、以下のとおりです。
import requests
from ddtrace import tracer
def get_aws_ip():
r = requests.get('http://169.254.169.254/latest/meta-data/local-ipv4')
return r.text
tracer.configure(hostname=get_aws_ip())
他の言語で Agent ホスト名を設定するには、Agent ホスト名の変更方法を参照してください。
const tracer = require('dd-trace').init();
const axios = require('axios');
(async () => {
const { data: hostname } = await axios.get('http://169.254.169.254/latest/meta-data/local-ipv4');
tracer.setUrl(`http://${hostname}:8126`);
})();
他の言語で Agent ホスト名を設定するには、Agent ホスト名の変更を参照してください。
require 'ddtrace'
require 'net/http'
Datadog.configure do |c|
c.agent.host = Net::HTTP.get(URI('http://169.254.169.254/latest/meta-data/local-ipv4'))
end
package main
import (
"net/http"
"io/ioutil"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
)
resp, err := http.Get("http://169.254.169.254/latest/meta-data/local-ipv4")
bodyBytes, err := ioutil.ReadAll(resp.Body)
host := string(bodyBytes)
if err == nil {
//set the output of the curl command to the DD_Agent_host env
os.Setenv("DD_AGENT_HOST", host)
// tell the trace agent the host setting
tracer.Start(tracer.WithAgentAddr(host))
defer tracer.Stop()
このスクリプトを ECS タスク定義の entryPoint
フィールドにコピーし、アプリケーション jar および引数フラグで値を更新します。
"entryPoint": [
"sh",
"-c",
"export DD_AGENT_HOST=$(curl http://169.254.169.254/latest/meta-data/local-ipv4); java -javaagent:/app/dd-java-agent.jar <APPLICATION_ARG_FLAGS> -jar <APPLICATION_JAR_FILE/WAR_FILE>"
]
他の言語で Agent ホスト名を設定するには、Agent ホスト名の変更を参照してください。
"entryPoint": [
"sh",
"-c",
"export DD_AGENT_HOST=$(curl http://169.254.169.254/latest/meta-data/local-ipv4); dotnet ${APP_PATH}"
]
"entryPoint": [
"sh",
"-c",
"export DD_AGENT_HOST=$(curl http://169.254.169.254/latest/meta-data/local-ipv4); php-fpm -F"
]
VirtualHost またはサーバーコンフィギュレーションファイルの Apache および mod_php
の場合、PassEnv
を使用して、DD_AGENT_HOST
およびその他の環境変数 (次の例のように統合サービスタグ付けの変数など) を設定します。
PassEnv DD_AGENT_HOST
PassEnv DD_SERVICE
PassEnv DD_ENV
PassEnv DD_VERSION
ini パラメーターが clear_env=on
に設定されている場合、プールワーカーファイル www.conf
で、ホストから読み取られるように環境変数も構成する必要があります。これを使用して、DD_AGENT_HOST
およびその他の環境変数 (次の例のように統合サービスタグ付けの変数など) も設定します。
env[DD_AGENT_HOST] = $DD_AGENT_HOST
env[DD_SERVICE] = $DD_SERVICE
env[DD_ENV] = $DD_ENV
env[DD_VERSION] = $DD_VERSION
お役に立つドキュメント、リンクや記事: