2025/4/21 Tagging Best Practices
#Datadog_Learning_Centerやる
前半は座学だmrsekut.icon
Tag (dd)
へー、せやな、みたいな内容のが多いmrsekut.icon
後半はハンズオン
前提
Storedogという架空のアプリケーション
やること
アプリケーションに割り当てられたタグを確認する
Datadog 上でアプリケーションデータを調査する
Storedog のホームページに対して Synthetic テストを作成し、特定のサービスにタグで関連付ける
タグを活用して特定のチームに通知が届くように、ワークフローの一部に問題が発生した際のアラートを設定する
Unified Service Taggingを使用して、新バージョンのアプリにおけるサースのパフォーマンスを比較する
色々立ち上げている
dd-argent
Datadog Agentも1つのcontainerとして設定する
code:docker-compose.yml
services:
dd-agent:
image: gcr.io/datadoghq/agent:7.56.0
environment:
- DD_API_KEY
- DD_HOSTNAME
- DD_TAGS="env:${DD_ENV}"
- DD_LOGS_ENABLED=true
- DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true
- DD_PROCESS_AGENT_ENABLED=true
- DD_CONTAINER_LABELS_AS_TAGS={"my.custom.label.color":"color"}
- DD_APM_NON_LOCAL_TRAFFIC=true
- DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true
- DD_SYSTEM_PROBE_NETWORK_ENABLED=true
env:${DD_ENV}でenv tag (dd)を割り当てている
DD_CONTAINER_LABELS_AS_TAGS で、コンテナラベルを Datadog のタグとして収集・使用するよう指定
code:docker-compose.yml
pid: "host"
ports:
- "8126:8126/tcp"
- "8125:8125/udp"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /proc/:/host/proc/:ro
- /sys/fs/cgroup/:/host/sys/fs/cgroup:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /sys/kernel/debug:/sys/kernel/debug
cap_add:
- SYS_ADMIN
- SYS_RESOURCE
- SYS_PTRACE
- NET_ADMIN
- NET_BROADCAST
- NET_RAW
- IPC_LOCK
- CHOWN
security_opt:
- apparmor:unconfined
labels:
com.datadoghq.ad.logs: '{"source": "agent", "service": "agent"}'
frontend
code:docker-compose.yml
frontend:
image: public.ecr.aws/x2b9z2t7/storedog/frontend:1.2.4
command: bash -c "wait-for-it backend:4000 -- npm run build && npm run start"
volumes:
- .env:/storedog-app/.env.local
ports:
- "${FRONTEND_PORT-3000}:3000"
environment:
- DD_AGENT_HOST=dd-agent
- DD_ENV
- DD_LOGS_INJECTION=true
- DD_SERVICE=store-frontend
- DD_VERSION=1.2.4
- DD_RUNTIME_METRICS_ENABLED=true
- DD_PROFILING_ENABLED=true
depends_on:
- dd-agent
- backend
labels:
com.datadoghq.ad.logs: '{"source": "nodejs", "service": "store-frontend"}'
com.datadoghq.tags.env: "${DD_ENV}"
com.datadoghq.tags.service: "store-frontend"
com.datadoghq.tags.version: "1.2.4"
my.custom.label.color: "red"
backend
以下省略
worker
ads-java
discounts
postgres
redis
nginx
各サービスのenvironmentに
DD_ENV、DD_SERVICE、DD_VERSIONの3つが指定されている
これらは、Unified Service Taggingなので必要
APM Traces画面 (dd)を見る
ちゃんとdocsへのリンクがあるの偉い
https://gyazo.com/b02c0e5350749e4a796eb53df43a79e8
Storedog アプリ内の store-ads-java サービスにおける "GET /ads" リソースのトレースのみを絞り込む
code:query
env:storedog-tagging service:store-ads-java resource_name:"GET /ads"
Log Explorer画面 (dd)のログ詳細から、APM Service画面 (dd)へ遷移できる
https://gyazo.com/f7c2b5a224d1422c3df18bf824052100
これは、ログにservice tag (dd)がついているおかげ
Searching and correlating Synthetic tests using tags
Synthetic Monitoring & Testing画面 (dd)
https://gyazo.com/8001d3ce35199ebc863381018af04933
https://gyazo.com/fb474eb2ad2bebd498f22c01462101ac
https://gyazo.com/ee9284bbaaedd61d5104227131e299a5
https://gyazo.com/abddd148b842f346f95a409895e41744
https://gyazo.com/b9a62b8ba49b962b4ac032c2853add27
Request Type
Define Request
https://gyazo.com/c02a990492446f496b2ba5d104bad398
3つのタグを指定
env tag (dd)
service tag (dd)
version tag (dd)
Assertions
「DNSを含むレスポンスタイムが10ms未満であること」という条件を指定
これを満たせばテストは成功
https://gyazo.com/f4939b1d58d92f0ed2354e2b5aa60fc5
Locations
https://gyazo.com/f57f17a3184bdf23fce44357e9906363
Retry Conditions
今回はスキップ
Scheduling & Alert Conditions
https://gyazo.com/beea4a86b3eb6195b3efe7a2d1f0bcab
11か所のロケーションのうち、いずれか1つで1分間失敗した場合にアラートを出す
Monitor
今回はスキップ
Permissions
今回はスキップ
Synthetic Testing 詳細画面 (dd)
https://gyazo.com/994066123dfdeba54fa967ecb9d20a4f
testは複製できる
https://gyazo.com/75a803819761f4ea3bc091b3ba80d6f5
Service Page (dd)に行く
https://gyazo.com/2bda0036c91abef60b97df172ca91399
赤のバナーをクリックすると右から出てくる
https://gyazo.com/e4392d7c6eede23cdc9bedf10b50f3d7
スクロールするとtestがある
ページ遷移が難しすぎるmrsekut.icon*2
Creating targeted alerts using tags
Tag (dd)を使ってアラートを送る人をコントロールできる
Monitors (dd)周辺で作る
https://gyazo.com/452d322e7b958492291a744cd590b51e
https://gyazo.com/85442c2f8de5ea3051cf89b0381ea39f
New Monitor / Metrics
https://gyazo.com/bd44e7e2c6b9b6866362c71898468370
入力していくと右上のプレビューが変わる
https://gyazo.com/df91a6a79e449230ad13e0df23bcce44
https://gyazo.com/ee752fb195c8546f0f37054708e71b28
https://gyazo.com/af51fcadedc6a85d2bb9e4de8ad649b3 https://gyazo.com/4f13faa11ea1b81daffd32d1cdb6c980
https://gyazo.com/7f6151e87d58f7d5b55a6d0026009bc5
画面右下に「Test Notification」がある
モーダルが開く
https://gyazo.com/75e3dc3fa8bf58f5f63bfaee741edec0
Run Testすると結果が表示される
https://gyazo.com/ccf9878c1965d9ace98f674cb678cfa5
先程のところでメールアドレスを入力していれば、このタイミングでもメールが届く
Events Explorer画面 (dd)
https://gyazo.com/865254c0967b35691b9316c5c161dd12
https://gyazo.com/32cba46f9898fbfc4ace39857dc4668c
作成したモニターによりトリガーされたアラートイベントが表示される
Using tags to compare deployment versions
古いdocker-compose.ymlをdownして、newの方を起動する
これらはversionが異なっているだけ
Service Page (dd)を見ると2つのバージョンが表示されている
https://gyazo.com/cc7ffad842a47b99b3c3b9a5ff5189af
Latency by Versionを選択して見る
https://gyazo.com/1c04dafa310acf5fc68a0154c4d7613d
バージョンごとの比較ができる
v1.3.0で改善されているのがわかる
ええやんmrsekut.icon
次のレッスンに進んだ
https://gyazo.com/f6e99be9b90a939396790e67aba92640
k8s出てくるのか、重いなあmrsekut.icon