Elido の短縮リンクに対する Datadog URL モニタリングは、2つのソースから成り立ちます。Elido 自体がクリックデータを送信します。Datadog Logs intake へクリックごとに1件のログを送り、さらに3種類のクリック数メトリクスを60秒ごとにフラッシュします。リダイレクトレイテンシーやステータスコードは送信しません。これらについては、カナリア短縮リンクに Datadog Synthetics HTTP テストを向けます。リダイレクトレイテンシーダッシュボード、モニター、SLO はすべて、この2つを基盤にします。
この分離が設計のすべてです。クリック側は、リンクを何人がどこから利用したかを知らせ、合成テスト側は、リダイレクトが応答したか、どの速さだったか、正しいステータスだったかを知らせます。この記事では、メトリクスとログの正確な形、それらの接続方法、ダッシュボードに配置する内容、そしてこのインテグレーションの限界を説明します。
レイテンシーを知りたくてこの記事を読んでいるなら、まず p95 を15ms未満に収める予算の仕組みを読んでください。しきい値を決める前に、健全な数値がどのようなものかを説明しています。
Elido が Datadog に実際に送信するもの
接続済みのワークスペースにある各クリックは、2つの経路を通ります。ログ経路は、クリックの記録直後に https://http-intake.logs.<site>/api/v2/logs へ1エントリのバッチを送信します。メトリクス経路はメモリ内のカウンターを増やし、フラッシャーが1分に1回、https://api.<site>/api/v2/series へカウントを送信します。どちらも DD-API-KEY ヘッダーで認証します。
| シグナル | Datadog での名前 | 頻度 | タグとフィールド |
|---|---|---|---|
| クリックログ | source:elido、メッセージは link_click で始まる | クリックごとに1件 | workspace_id、link_id、slug、country、device、destination、ip、timestamp |
| クリック数 | elido.clicks | 60秒ごと | workspace_id、vendor:elido |
| 国別クリック数 | elido.clicks_by_country | 60秒ごと | 上記に country を追加 |
| デバイス別クリック数 | elido.clicks_by_device | 60秒ごと | 上記に device を追加 |
メトリクスはゲージで、値は前回のフラッシュ以降に数えたクリック数です。したがって、37というポイントは、およそ直近1分間に37クリックあったことを意味します。これは運用チャートに自然な単位なので、合計には as_count() を適用せず、時間をまたいで合計します。欠けているものにも注目してください。メトリクスには link_id や slug のタグがありません。これはコスト面で妥当な判断だと思います。Datadog はカスタムメトリクスに固有のタグの組み合わせごとに課金します。トラフィックの多いワークスペースで slug タグを付けると、系列数がリンク数の分だけ増えてしまうためです。
ログフィールドは attributes オブジェクトの下にネストされて届くため、Log Explorer ではファセットが @attributes.slug や @attributes.country のように見えます。何かを構築する前に、ログを1件展開してください。10秒の作業で、壊れたクエリを防げます。
Elido ワークスペースで Datadog に接続する
設定するフィールドは2つです。Datadog API キー(アプリケーションキーではありません)と、組織が利用するサイトが必要です。
- Datadog で Organization Settings を開き、API Keys に進み、
elido-forwarderのような名前を付けてキーを作成します。 - サイトを確認します。Datadog のサイトガイドでは、各ログイン URL とサイトの対応を確認できます。
app.datadoghq.euならdatadoghq.euと入力し、us5.datadoghq.comならそのまま入力します。 - Elido で Integrations を開き、Datadog を選び、キーを貼り付けてサイトを入力し、保存します。キーは保存時に暗号化されます。
- フォワーダーがワークスペースのインテグレーション設定をキャッシュするため、最大5分待ちます。その後、スマートフォンから自分のリンクを1つクリックし、Log Explorer で
source:elidoを検索します。
サイトを空欄にすると、Elido は datadoghq.com を想定します。EU の組織では、これは典型的なサイレント失敗です。入力ミスでも同じことが起きます。すべての POST が失敗しますが、誰もエラーを確認できません。
Test connection ボタンは、elido_test: true のマークを付けたテストログを Datadog サイトへ1件送り、Datadog の応答を表示します。そのため、キーやサイトが間違っていれば、Datadog の 403 とともにその場で失敗します。成功しても、パイプラインやインデックスがログを保持することまでは証明しません。本当の確認方法は、クリックログが現れることです。Mixpanel のクリックフォワーダーと同じ原則です。実際のクリックがなければ、起きていないのと同じです。
リダイレクトの1ホップを測定するレイテンシーダッシュボードの構築
Elido はタイミングを送信しないため、レイテンシーデータはリクエストを実行するものから取得する必要があります。Datadog Synthetics HTTP テストが適したツールです。DNS と TLS を含め、訪問者が感じるものを測定できます。
私はすべてのワークスペースで、次のテストを設定しています。
- URL: 専用のカナリアリンク。できれば、自分の カスタムドメイン上で、変化がなく安定した場所を指すものにします。
- リダイレクトを追従: オフ。オンにするとランディングページの時間を測ることになり、遅いヒーロー画像のせいで、問題のないリダイレクトについて午前3時にアラートを受けることになります。
- アサーション: ステータスコードは302(デフォルト。設定した値が301または307ならそれを使います。301と302の違いでトレードオフを説明しています)、
locationヘッダーに遷移先が含まれること、応答時間がしきい値未満であることです。 - ロケーション: 少なくとも3か所。そのうち1か所は、オーディエンスがいる EU 地域にします。1分ごとに実行します。
- ヘッダー:
botを含むUser-Agent。これにより Elido はプローブをボットとして扱い、クリックイベントをスキップします。
しきい値はブログ記事からではなく、1週間観測した結果から決めてください。合成テストのタイミングにはプローブ自身のネットワーク経路が含まれるため、別の大陸にあるプローブが同じ地域の数値と一致することはありません。それで問題ありません。求めるのは、平らに推移する線です。
ダッシュボードには4つのウィジェットが必要です。合成テストのタイムシリーズとして表示する、ロケーション別の応答時間。アサーションの成功率。elido.clicks による毎分のクリック数。そして国の上位リストです。
# Clicks per minute across the workspace (gaps become zeros)
default_zero(sum:elido.clicks{workspace_id:42})
# Hourly click totals
sum:elido.clicks{workspace_id:42}.rollup(sum, 3600)
# Top 10 countries over the dashboard window
top(sum:elido.clicks_by_country{workspace_id:42} by {country}, 10, 'sum', 'desc')
なぜ default_zero が必要なのでしょうか。クリックのない1分間はポイント自体を生成しないため、補間関数を使わないと Datadog は空白を直線でつなぎます。その線は事実を表しません。
クリック減少と壊れた短縮リンクのモニター
リンクで起きる問題の大半は、3つのモニターでカバーできます。それぞれが異なるソースを使うため、最初のセクションで説明した分離が生きてきます。
リダイレクトの停止または遅延。 合成テスト自体がすでにモニターです。同じ実行で2か所以上のロケーションが失敗したときにアラートを出し、1つの不安定なプローブ地域だけで誰かを起こさないようにします。302以外の応答はステータスアサーションに失敗するため、削除、期限切れ、一時停止されたカナリアリンクは、ここで404または410として現れます。
トラフィックの停止。sum:elido.clicks{workspace_id:42} に対するメトリクスモニターを作成し、たとえば30分後にデータがない場合の通知をオンにします。Elido はクリックのない1分間には何も送信しないため、ここでの「データなし」は本当に「クリックなし」を意味します。キャンペーン中に知りたいのは、まさにこのイベントです。
トラフィックの異常。同じメトリクスに対して、方向を下向きに設定した 異常モニターを作成すると、通常は1時間に4,000クリックあるキャンペーンが突然200クリックになったことを検知できます。私はこのパターンを3回見たことがありますが、毎回原因はリンクの外側にありました。承認されなかった広告、間違ったセグメントに配信されたニュースレター、足場の裏に隠れた QR ポスターなどです。バンドを信頼する前に、数週間分の履歴を蓄積してください。
リンクごとのアラートが必要ですか。メトリクスではできませんが、ログなら可能です。source:elido から @attributes.slug ごとにグループ化した ログベースメトリクスを作成すると、slug ごとのクリック数を取得して監視できます。キャンペーンの slug をフィルタリングした集合に限定してください。そうしないと、カーディナリティのコストが別の形で戻ってきます。
実際に説明できる SLO
短縮リンクのサービスレベル目標は、そのソースがリダイレクトを測定している場合にだけ意味を持ちます。合成テストを基盤に構築してください。1つのテストをモニターとする モニターベースの SLOで対応できます。
私は30日間で99.9%から始めます。これは月に約43分のチェック失敗に相当し、マーケティング責任者にも1文で説明できる予算です。クリック量を基盤にしないでください。クリックは需要を測るもので、健全性を測るものではありません。誰にもクリックされないリンクでも、可用性は完全に保たれている可能性があります。
その SLO ウィジェットに平らな線が表示されることを待ち望んでいたなら、ワークスペースを設定し、カナリアを自分のドメインに向け、目標を設定する前に1週間実行してください。
セルフホスト Elido: リダイレクトカウンターのスクレイピング
セルフホスト環境では、もう1つソースを利用できます。リダイレクトサービスは /metrics に Prometheus エンドポイントを公開し、Datadog Agent の OpenMetrics チェックでスクレイピングできます。有用な系列は elido_edge_redirect_total です。fleet と outcome のラベルを持つカウンターで、outcome には ok、notfound、expired、paused、error が含まれます。
これにより、SaaS インテグレーションにはないものが得られます。全トラフィックに対する実際の404率を、合計に対する notfound として計算できます。もう1つのカウンター edge_redirect_clicks_filtered_bot_total は、クリックイベントなしでボットに提供されたリダイレクト数を示します。ただし、このエンドポイントにはレイテンシーヒストグラムがありません。セルフホストかどうかにかかわらず、レイテンシーは Synthetics から取得します。k3s セルフホストのプレイブックでは、このエンドポイントがデプロイメントのどこに位置するかを説明しています。
Datadog インテグレーションの限界
ここからは、まず問題になりやすい制限です。
配信はベストエフォートです。ログの POST に失敗すると、1秒後に1回だけ再試行されてから破棄されます。メトリクスのフラッシュに失敗しても再試行は一切行われません。その1分は失われ、次の期間が新しく始まります。elido.clicks はトレンドラインとして扱い、真実を示す記録である Elido 独自のクリック分析と合計を照合してください。
ログには訪問者の IP と完全な遷移先 URL が含まれ、UTM タグも含まれます。Datadog 組織が米国にある場合、これは EU から個人データが移転することを意味します。マーケティングチーム向け EU データレジデンシーガイドで、その影響の検討方法を説明しています。少なくとも、利用できるなら EU サイトを選んでください。
ログコストはクリック数に応じて増え、クリックごとに1件のログが取り込まれます。リンクが広まれば、請求額も広がります。除外フィルター、または短い保持期間のインデックスと組み合わせたログベースメトリクスによって、コストを妥当な範囲に抑えられます。
そして対象はクリックです。リンク作成イベントも、コンバージョンも、レイテンシーも、ステータスコードもありません。率直に言えば、クリックフォワーダーがレイテンシーまで持つべきかどうかは分かりません。外部から測定するプローブのほうが、より正確な証人だからです。
コーナーストーン記事を読む → リダイレクトの p95 を15ms未満にする
ブログの関連記事
- Mixpanel のリンクトラッキング - 同じクリックフォワーダーをプロダクトアナリティクスに向ける方法です。
- URL リダイレクトのキャッシュ戦略 - リダイレクトレイテンシーがそのように見える理由を説明します。
- リンク切れ防止戦略 - 404 モニターが発火した後に行うことです。
- 短縮リンクのクリックと GA4 セッションの比較 - クリック数とアナリティクスのセッションが一致しない理由を説明します。
- リダイレクト経由の GA4 サーバーサイドトラッキング - 代わりに Google へ送信するサーバーサイドのクリックイベントです。
- Klaviyo のリンクトラッキング - 同じクリックフォワーダーから各クリックを Klaviyo に送信する方法です。
よくある質問
Datadog で短縮リンクを監視できますか?
はい、2つの方向から監視できます。Elido はすべてのクリックをログとして Datadog に転送し、毎分のクリック数をメトリクスとして送信するため、トラフィック量を把握できます。可用性とレイテンシーについては、カナリア短縮リンクに対する Datadog Synthetics HTTP テストを追加します。訪問者が体験する形で、外部からリダイレクトを測定できます。
Elido はどのメトリクスを Datadog に送信しますか?
ワークスペースごとに1分に1回フラッシュされるゲージメトリクスが3つあります。期間内のクリック数を示す elido.clicks、国タグ付きの elido.clicks_by_country、デバイスタグ付きの elido.clicks_by_device です。すべてに workspace_id と vendor:elido タグが付きます。これらに加えて、各クリックが source elido のログとして送信されます。
Elido はリダイレクトレイテンシーを Datadog に送信しますか?
いいえ。このインテグレーションが送信するのはクリックであり、タイミング情報ではありません。ペイロードにレイテンシーやステータスコードのメトリクスはありません。代わりに、リダイレクト追従をオフにした Datadog Synthetics HTTP テストからリダイレクトレイテンシーダッシュボードを構築してください。そうすれば、グラフに表示する応答時間はランディングページではなく、リダイレクトの1ホップだけを示します。
EU のワークスペースはどの Datadog サイトを使うべきですか?
Datadog 組織が存在するサイトを、ベアドメインとして入力して使ってください。たとえば EU サイトなら datadoghq.eu です。フィールドを空のままにすると、Elido は米国サイトの datadoghq.com にフォールバックするため、EU の組織ではそこに到着したデータを何も確認できません。
Elido のクリックメトリクスにゼロではなくデータなしと表示されるのはなぜですか?
Elido は、ワークスペースで少なくとも1クリックあった分だけ、その分のポイントを送信します。クリックのない1分間はポイント自体が生成されないため、Datadog では空白になります。ダッシュボードではクエリを default_zero() でラップし、トラフィックが完全に停止したことを検知したい場合は no-data アラートを使ってください。
Datadog の合成チェックは Elido でクリックとしてカウントされますか?
カウントされる可能性があります。Elido は、bot という語を含むものや一般的な HTTP ライブラリなど、ボットリストに一致するユーザーエージェントのクリックイベントをスキップします。合成テストに bot を含むカスタム User-Agent ヘッダーを設定し、専用のカナリアリンクをテスト先に指定してください。これでプローブがキャンペーン数を水増しすることを防げます。
Elidoを試す
URLを貼り付けて短縮リンクを取得
登録不要。リンクは30日間有効。永久に保存するには登録してください。
Free、登録不要 · 1日あたり2件