【datadog】datadog dashboard ~ Filtering ~

◾️はじめに

今回は、datadog でフィルタリングについて色々思うことがあったので
メモしておく。

目次

【1】複数条件
 1)条件演算子
【2】数値に対する検索
 1)「:」+ 不等号
 2)「:」+ [X TO Z]
【3】特殊記号
 1)ワイルドカード「*」
 2)ワイルドカード「?」
 3)除外「-」
【4】エスケープ
 1)特殊文字とスペース
 2)注意点:「/」は特殊文字じゃない
【5】属性検索 @
【6】テンプレート変数を使う場合
 1)後方一致
 2)注意点:テンプレート変数適用において部分一致は非対応(っぽい)

【1】複数条件

基本的にスペースで区切ればAND条件でフィルタリングされる

1)条件演算子

* 条件演算子も用意されていて、()で囲めば複雑なフィルタリングも可能
* 以下の公式ドキュメントを参照

https://docs.datadoghq.com/ja/logs/explorer/search_syntax/
https://docs.datadoghq.com/ja/tracing/trace_explorer/query_syntax/
https://docs.datadoghq.com/ja/metrics/advanced-filtering/

演算子 説明
AND 積: 両方の条件を含むイベントが選択 ("Timeout" AND "Out of memory")
OR 和: いずれかの条件を含むイベントが選択 ("Timeout" OR "Out of memory")
NOT 否: 対象の逆(右例だと「Out of memory」以外) ("Timeout" OR NOT "Out of memory")
- 除外: 対象を除外(右例だと「Out of memory」を除外) ("Timeout" AND -"Out of memory")

【2】数値に対する検索

https://docs.datadoghq.com/logs/explorer/search_syntax/#numerical-values

より抜粋
~~~~~~
数値属性を検索するには、まずその属性をファセットとして追加します。
次に、数値演算子 (<、>、<=、または >=) を使用して、
数値ファセットの検索を行うことができます。
~~~~~~

1)「:」+ 不等号

10秒以上のクエリを検索する場合

@demo_time:>=10

2)「:」+ [X TO Z]

1秒から10秒のクエリを検索する場合

@demo_time:[1 TO 10]

【3】特殊記号

* 以下の公式ドキュメントを参照

https://docs.datadoghq.com/ja/logs/explorer/search_syntax/
https://docs.datadoghq.com/ja/tracing/trace_explorer/query_syntax/

1)ワイルドカード「*」

* Key / Value 共にワイルドカード「*」を使用可能


https://docs.datadoghq.com/ja/metrics/advanced-filtering/

説明
service:web* web で始まるすべてのログメッセージに一致
service:*web web で終わるすべてのログメッセージに一致
*:web web という用語ですべてのログ属性を検索

2)ワイルドカード「?」

* ? ワイルドカードを使用して 1 つの特殊文字またはスペースに一致

# 値が hello world の属性 my_attribute を検索する
@my_attribute:hello?world

3)除外「-」

* 対象を除外
* ("Timeout" AND -"Out of memory") だと「Out of memory」を除外

https://docs.datadoghq.com/logs/explorer/search_syntax/#tags

より抜粋

(env:prod AND -version:beta) は、
タグ env:prod を含み、タグ version:beta は含まないすべてのログに一致

【4】エスケープ

* 以下の公式ドキュメントを参照

https://docs.datadoghq.com/logs/explorer/search_syntax/#escape-special-characters-and-spaces

1)特殊文字とスペース

* 「\」でエスケープする必要がある

datadog の特殊文字

+ - = && || > < ! ( ) { } [ ] ^ " “ ” ~ * ? : \ #

2)注意点:「/」は特殊文字じゃない

* 「/」は特殊文字じゃないので、エスケープは不要

【5】属性検索 @

* 長くなったので、以下の関連記事に分冊

datadog ~ 属性/ファセット/属性検索@ ~
https://dk521123.hatenablog.com/entry/2025/02/26/150349

【6】テンプレート変数を使う場合

* 基本的には、Filter部分に
 「@【適用したいパラメータ】:$【テンプレート変数名】.value」を追加する

@region:$region.value

1)後方一致

@【適用したいパラメータ】:[何らかの文字列]$【テンプレート変数名】.value
で対応可能
 => 以下の公式ブログの「Consolidate template variables by attributing values as a partial string」にも記載

https://www.datadoghq.com/blog/dynamic-template-variable-syntax-dashboards/#consolidate-template-variables-by-attributing-values-as-a-partial-string

# e.g. service:demo-service-dev/demo-service-stage/demo-service-prod

@service:demo-service-$env.value

2)注意点:テンプレート変数適用において部分一致は非対応(っぽい)

* 上述「1)後方一致」はOKなのだが
 例えば「host:"/aws-glue/app/$【テンプレート変数名】.value/jobs/job_name"」
 のようなことは、(将来的にはわからんが、今のところ)できない
 => 以下のサイト

https://stackoverflow.com/questions/74205227/use-template-variable-within-a-log-query-in-datadog

対応案

* ワイルドカードや複数条件で対応できるかどうか考える

対応例

# e.g. host:"/aws-glue/app/{dev/stage/prod}/jobs/job_name"

# Case1
host:/aws-glue/app/* @env:$env.value

# Case2
host:(/aws-glue/app/dev/jobs/job_name
 OR /aws-glue/app/stage/jobs/job_name
 OR /aws-glue/app/prod/jobs/job_name) @env:$env.value

参考文献

https://qiita.com/yoyoyo_pg/items/91dadbf250917238b1e7

関連記事

datadog ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2024/03/30/004746
datadog ~ 属性/ファセット/属性検索@ ~
https://dk521123.hatenablog.com/entry/2025/02/26/150349
datadog dashboard ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2025/02/09/000106
datadog dashboard ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2025/02/17/184724
datadog dashboard ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2025/02/19/220516
datadog Logs ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2025/02/14/200308
datadog Logs ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2025/02/15/213417
datadog Alert ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2025/02/16/232413