Skip to content

Commit bf42435

Browse files
authored
Add dashboard asset for OTel host config issues (DataDog#22861)
* Add dashboard asset for OTel host config issues * Add dashboard to manifest * Remove pause_auto_refresh
1 parent 7005266 commit bf42435

2 files changed

Lines changed: 389 additions & 1 deletion

File tree

Lines changed: 387 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,387 @@
1+
{
2+
"title":"OpenTelemetry Hostname Configuration Issues Dashboard",
3+
"description":"This is a dashboard to examine potential hostname configuration issues. You can see if any of your services has hostnames that seem to resemble podnames or services that are emitting empty hostnames. Both of these issues might impact your product experience and can be resolved with proper configuration. These issues can occur for all OpenTelemetry setups (Collector and DDOT).",
4+
"widgets":[
5+
{
6+
"id":8573572782389341,
7+
"definition":{
8+
"type":"note",
9+
"content":"This is a dashboard to examine potential hostname configuration issues. You can see if any of your services has hostnames that seem to resemble podnames or services that are emitting empty hostnames. Both of these issues might impact your product experience and can be resolved with proper configuration. These issues can occur for all OpenTelemetry setups (Collector and DDOT). \n\nTo learn how to configure hostnames properly with OpenTelemetry, check out [this documentation](https://docs.datadoghq.com/opentelemetry/config/hostname_tagging/?tab=host).",
10+
"background_color":"white",
11+
"font_size":"14",
12+
"text_align":"left",
13+
"vertical_align":"top",
14+
"show_tick":false,
15+
"tick_pos":"50%",
16+
"tick_edge":"left",
17+
"has_padding":true
18+
},
19+
"layout":{
20+
"x":0,
21+
"y":0,
22+
"width":12,
23+
"height":2
24+
}
25+
},
26+
{
27+
"id":2292956402325562,
28+
"definition":{
29+
"title":"Pod like hostnames (hostnames that look like podnames, likely misconfigured)",
30+
"show_title":true,
31+
"type":"group",
32+
"layout_type":"ordered",
33+
"widgets":[
34+
{
35+
"id":2712225072112407,
36+
"definition":{
37+
"title":"Total affected spans ",
38+
"title_size":"16",
39+
"title_align":"left",
40+
"type":"query_value",
41+
"requests":[
42+
{
43+
"formulas":[
44+
{
45+
"formula":"query1"
46+
}
47+
],
48+
"queries":[
49+
{
50+
"name":"query1",
51+
"data_source":"metrics",
52+
"query":"sum:datadog.apm.hostname_issue{$env,$service,issue_type:pod_like_hostname}.weighted()",
53+
"aggregator":"sum"
54+
}
55+
],
56+
"response_format":"scalar"
57+
}
58+
],
59+
"autoscale":true,
60+
"precision":2,
61+
"timeseries_background":{
62+
"type":"area"
63+
}
64+
},
65+
"layout":{
66+
"x":0,
67+
"y":0,
68+
"width":6,
69+
"height":3
70+
}
71+
},
72+
{
73+
"id":2282531114052878,
74+
"definition":{
75+
"title":"Services generating hostnames that look like pods",
76+
"title_size":"16",
77+
"title_align":"left",
78+
"type":"toplist",
79+
"requests":[
80+
{
81+
"queries":[
82+
{
83+
"name":"query1",
84+
"data_source":"metrics",
85+
"query":"sum:datadog.apm.hostname_issue{$env AND (issue_type:pod_like_hostname)} by {service}.weighted()",
86+
"aggregator":"sum"
87+
}
88+
],
89+
"response_format":"scalar",
90+
"formulas":[
91+
{
92+
"formula":"query1"
93+
}
94+
],
95+
"sort":{
96+
"count":10,
97+
"order_by":[
98+
{
99+
"type":"formula",
100+
"index":0,
101+
"order":"desc"
102+
}
103+
]
104+
}
105+
}
106+
],
107+
"style":{
108+
"display":{
109+
"type":"stacked",
110+
"legend":"automatic"
111+
}
112+
}
113+
},
114+
"layout":{
115+
"x":6,
116+
"y":0,
117+
"width":6,
118+
"height":3
119+
}
120+
},
121+
{
122+
"id":1477835871208479,
123+
"definition":{
124+
"title":"Breakdown of hostnames that look like pods",
125+
"title_size":"16",
126+
"title_align":"left",
127+
"type":"query_table",
128+
"requests":[
129+
{
130+
"queries":[
131+
{
132+
"name":"query1",
133+
"data_source":"metrics",
134+
"query":"sum:datadog.apm.hostname_issue{$env AND (issue_type:pod_like_hostname)} by {service,env}.weighted()",
135+
"aggregator":"sum"
136+
}
137+
],
138+
"response_format":"scalar",
139+
"sort":{
140+
"count":10,
141+
"order_by":[
142+
{
143+
"type":"formula",
144+
"index":0,
145+
"order":"desc"
146+
}
147+
]
148+
},
149+
"formulas":[
150+
{
151+
"cell_display_mode":"bar",
152+
"formula":"query1"
153+
}
154+
]
155+
}
156+
],
157+
"has_search_bar":"auto"
158+
},
159+
"layout":{
160+
"x":0,
161+
"y":3,
162+
"width":12,
163+
"height":4
164+
}
165+
}
166+
]
167+
},
168+
"layout":{
169+
"x":0,
170+
"y":2,
171+
"width":12,
172+
"height":8
173+
}
174+
},
175+
{
176+
"id":3517038316079138,
177+
"definition":{
178+
"title":"Empty hostnames (likely misconfigured)",
179+
"show_title":true,
180+
"type":"group",
181+
"layout_type":"ordered",
182+
"widgets":[
183+
{
184+
"id":4302529319173068,
185+
"definition":{
186+
"title":"Total affected spans ",
187+
"title_size":"16",
188+
"title_align":"left",
189+
"type":"query_value",
190+
"requests":[
191+
{
192+
"formulas":[
193+
{
194+
"formula":"query1"
195+
}
196+
],
197+
"queries":[
198+
{
199+
"name":"query1",
200+
"data_source":"metrics",
201+
"query":"sum:datadog.apm.hostname_issue{$env,$service,issue_type:empty_hostname}.weighted()",
202+
"aggregator":"sum"
203+
}
204+
],
205+
"response_format":"scalar"
206+
}
207+
],
208+
"autoscale":true,
209+
"precision":2,
210+
"timeseries_background":{
211+
"type":"area"
212+
}
213+
},
214+
"layout":{
215+
"x":0,
216+
"y":0,
217+
"width":6,
218+
"height":3
219+
}
220+
},
221+
{
222+
"id":7313851251156465,
223+
"definition":{
224+
"title":"Services generating empty hostnames ",
225+
"title_size":"16",
226+
"title_align":"left",
227+
"type":"toplist",
228+
"requests":[
229+
{
230+
"queries":[
231+
{
232+
"name":"query1",
233+
"data_source":"metrics",
234+
"query":"sum:datadog.apm.hostname_issue{$env AND (issue_type:empty_hostname)} by {service}.weighted()",
235+
"aggregator":"sum"
236+
}
237+
],
238+
"response_format":"scalar",
239+
"formulas":[
240+
{
241+
"formula":"query1"
242+
}
243+
],
244+
"sort":{
245+
"count":10,
246+
"order_by":[
247+
{
248+
"type":"formula",
249+
"index":0,
250+
"order":"desc"
251+
}
252+
]
253+
}
254+
}
255+
],
256+
"style":{
257+
"display":{
258+
"type":"stacked",
259+
"legend":"automatic"
260+
}
261+
}
262+
},
263+
"layout":{
264+
"x":6,
265+
"y":0,
266+
"width":6,
267+
"height":3
268+
}
269+
},
270+
{
271+
"id":6327662270606745,
272+
"definition":{
273+
"title":"Hostname issues (select a service and env to see relevant traces)",
274+
"title_size":"16",
275+
"title_align":"left",
276+
"type":"query_value",
277+
"requests":[
278+
{
279+
"response_format":"scalar",
280+
"queries":[
281+
{
282+
"name":"query1",
283+
"data_source":"metrics",
284+
"query":"sum:datadog.apm.hostname_issue{$service,$env}.weighted()",
285+
"aggregator":"sum"
286+
}
287+
],
288+
"formulas":[
289+
{
290+
"formula":"query1"
291+
}
292+
]
293+
}
294+
],
295+
"autoscale":true,
296+
"precision":2,
297+
"timeseries_background":{
298+
"type":"bars"
299+
}
300+
},
301+
"layout":{
302+
"x":3,
303+
"y":3,
304+
"width":9,
305+
"height":3
306+
}
307+
},
308+
{
309+
"id":7815894061585333,
310+
"definition":{
311+
"title":"Breakdown of services emitting empty hostnames",
312+
"title_size":"16",
313+
"title_align":"left",
314+
"type":"query_table",
315+
"requests":[
316+
{
317+
"queries":[
318+
{
319+
"name":"query1",
320+
"data_source":"metrics",
321+
"query":"sum:datadog.apm.hostname_issue{$env AND (issue_type:empty_hostname)} by {service,env}.weighted()",
322+
"aggregator":"sum"
323+
}
324+
],
325+
"response_format":"scalar",
326+
"sort":{
327+
"count":10,
328+
"order_by":[
329+
{
330+
"type":"formula",
331+
"index":0,
332+
"order":"desc"
333+
}
334+
]
335+
},
336+
"formulas":[
337+
{
338+
"cell_display_mode":"bar",
339+
"formula":"query1"
340+
}
341+
]
342+
}
343+
],
344+
"has_search_bar":"auto"
345+
},
346+
"layout":{
347+
"x":0,
348+
"y":6,
349+
"width":12,
350+
"height":4
351+
}
352+
}
353+
]
354+
},
355+
"layout":{
356+
"x":0,
357+
"y":20,
358+
"width":12,
359+
"height":11,
360+
"is_column_break":true
361+
}
362+
}
363+
],
364+
"template_variables":[
365+
{
366+
"name":"env",
367+
"prefix":"env",
368+
"available_values":[
369+
370+
],
371+
"default":"*"
372+
},
373+
{
374+
"name":"service",
375+
"prefix":"service",
376+
"available_values":[
377+
378+
],
379+
"default":"*"
380+
}
381+
],
382+
"layout_type":"ordered",
383+
"notify_list":[
384+
385+
],
386+
"reflow_type":"fixed"
387+
}

otel/manifest.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@
5151
},
5252
"dashboards": {
5353
"OpenTelemetry Dashboard": "assets/dashboards/otel_host_metrics_dashboard.json",
54-
"OpenTelemetry Collector Metrics Dashboard": "assets/dashboards/otel_collector_metrics_dashboard.json"
54+
"OpenTelemetry Collector Metrics Dashboard": "assets/dashboards/otel_collector_metrics_dashboard.json",
55+
"OpenTelemetry Hostname Configuration Issues Dashboard": "assets/dashboards/otel_host_configuration_issues_dashboard.json"
5556
},
5657
"monitors": {
5758
"Refused Spans": "assets/monitors/otel_refused_spans.json"

0 commit comments

Comments
 (0)