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\n To 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+ }
0 commit comments