Skip to content

Commit 55a1790

Browse files
xpbowlerRyan Nguyen
andauthored
[ECOINT-177] Update Modal Metrics with Input Metrics (DataDog#2689)
* Update for input metrics update dashboard, metadata update manifest.json rename dashboard fix manifest.json * Make image fit CI --------- Co-authored-by: Ryan Nguyen <[email protected]>
1 parent eea17af commit 55a1790

File tree

6 files changed

+117
-110
lines changed

6 files changed

+117
-110
lines changed

modal/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# CHANGELOG - Modal
22

3+
## 1.3.0 / 2025-05-12
4+
5+
***Added***:
6+
7+
* Input metrics
8+
39
## 1.2.0 / 2024-11-27
410

511
***Added***:

modal/assets/dashboards/modal.json

Lines changed: 98 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"id": 961790136530845,
1616
"definition": {
1717
"type": "note",
18-
"content": "# Modal\n\nGet detailed visibility into your:\n\n- Audit logs\n- Function logs\n- Container metrics",
18+
"content": "# Modal\n\nGet detailed visibility into your:\n\n- Audit logs\n- Function logs\n- Container metrics\n- Input metrics",
1919
"background_color": "white",
2020
"font_size": "14",
2121
"text_align": "left",
@@ -25,12 +25,7 @@
2525
"tick_edge": "left",
2626
"has_padding": true
2727
},
28-
"layout": {
29-
"x": 0,
30-
"y": 0,
31-
"width": 4,
32-
"height": 3
33-
}
28+
"layout": { "x": 0, "y": 0, "width": 4, "height": 3 }
3429
},
3530
{
3631
"id": 1499917651954632,
@@ -40,22 +35,11 @@
4035
"title_align": "left",
4136
"show_legend": true,
4237
"legend_layout": "auto",
43-
"legend_columns": [
44-
"avg",
45-
"min",
46-
"max",
47-
"value",
48-
"sum"
49-
],
50-
"time": {},
38+
"legend_columns": ["avg", "min", "max", "value", "sum"],
5139
"type": "timeseries",
5240
"requests": [
5341
{
54-
"formulas": [
55-
{
56-
"formula": "query1"
57-
}
58-
],
42+
"formulas": [{ "formula": "query1" }],
5943
"queries": [
6044
{
6145
"name": "query1",
@@ -74,12 +58,7 @@
7458
}
7559
]
7660
},
77-
"layout": {
78-
"x": 4,
79-
"y": 0,
80-
"width": 4,
81-
"height": 3
82-
}
61+
"layout": { "x": 4, "y": 0, "width": 4, "height": 3 }
8362
},
8463
{
8564
"id": 6603502348617972,
@@ -89,22 +68,11 @@
8968
"title_align": "left",
9069
"show_legend": true,
9170
"legend_layout": "auto",
92-
"legend_columns": [
93-
"avg",
94-
"min",
95-
"max",
96-
"value",
97-
"sum"
98-
],
99-
"time": {},
71+
"legend_columns": ["avg", "min", "max", "value", "sum"],
10072
"type": "timeseries",
10173
"requests": [
10274
{
103-
"formulas": [
104-
{
105-
"formula": "query1"
106-
}
107-
],
75+
"formulas": [{ "formula": "query1" }],
10876
"queries": [
10977
{
11078
"name": "query1",
@@ -123,20 +91,14 @@
12391
}
12492
]
12593
},
126-
"layout": {
127-
"x": 8,
128-
"y": 0,
129-
"width": 4,
130-
"height": 3
131-
}
94+
"layout": { "x": 8, "y": 0, "width": 4, "height": 3 }
13295
},
13396
{
13497
"id": 4599509251662375,
13598
"definition": {
13699
"title": "Container logs across all Modal applications",
137100
"title_size": "16",
138101
"title_align": "left",
139-
"time": {},
140102
"requests": [
141103
{
142104
"response_format": "event_list",
@@ -147,37 +109,17 @@
147109
"storage": "hot"
148110
},
149111
"columns": [
150-
{
151-
"field": "status_line",
152-
"width": "auto"
153-
},
154-
{
155-
"field": "timestamp",
156-
"width": "auto"
157-
},
158-
{
159-
"field": "host",
160-
"width": "auto"
161-
},
162-
{
163-
"field": "service",
164-
"width": "auto"
165-
},
166-
{
167-
"field": "content",
168-
"width": "compact"
169-
}
112+
{ "field": "status_line", "width": "auto" },
113+
{ "field": "timestamp", "width": "auto" },
114+
{ "field": "host", "width": "auto" },
115+
{ "field": "service", "width": "auto" },
116+
{ "field": "content", "width": "compact" }
170117
]
171118
}
172119
],
173120
"type": "list_stream"
174121
},
175-
"layout": {
176-
"x": 0,
177-
"y": 3,
178-
"width": 6,
179-
"height": 3
180-
}
122+
"layout": { "x": 0, "y": 3, "width": 6, "height": 3 }
181123
},
182124
{
183125
"id": 8521961163085800,
@@ -195,50 +137,103 @@
195137
"storage": "hot"
196138
},
197139
"columns": [
140+
{ "field": "status_line", "width": "auto" },
141+
{ "field": "timestamp", "width": "auto" },
142+
{ "field": "host", "width": "auto" },
143+
{ "field": "service", "width": "auto" },
144+
{ "field": "content", "width": "compact" }
145+
]
146+
}
147+
],
148+
"type": "list_stream"
149+
},
150+
"layout": { "x": 6, "y": 3, "width": 6, "height": 3 }
151+
},
152+
{
153+
"id": 3151443995528809,
154+
"definition": {
155+
"title": "Input Execution Time (us)",
156+
"title_size": "16",
157+
"title_align": "left",
158+
"show_legend": true,
159+
"type": "timeseries",
160+
"requests": [
161+
{
162+
"formulas": [{ "formula": "query1" }],
163+
"queries": [
198164
{
199-
"field": "status_line",
200-
"width": "auto"
201-
},
202-
{
203-
"field": "timestamp",
204-
"width": "auto"
205-
},
206-
{
207-
"field": "host",
208-
"width": "auto"
209-
},
165+
"data_source": "metrics",
166+
"name": "query1",
167+
"query": "avg:modal.input_events.elapsed_time_us{*}"
168+
}
169+
],
170+
"response_format": "timeseries",
171+
"style": {
172+
"palette": "dog_classic",
173+
"order_by": "values",
174+
"line_type": "solid",
175+
"line_width": "normal"
176+
},
177+
"display_type": "line"
178+
}
179+
],
180+
"yaxis": {
181+
"scale": "linear",
182+
"include_zero": true,
183+
"min": "auto",
184+
"max": "auto"
185+
}
186+
},
187+
"layout": { "x": 0, "y": 6, "width": 6, "height": 3 }
188+
},
189+
{
190+
"id": 8407804183432454,
191+
"definition": {
192+
"title": "Total Inputs vs Successful Inputs",
193+
"title_size": "16",
194+
"title_align": "left",
195+
"show_legend": true,
196+
"legend_layout": "auto",
197+
"legend_columns": ["avg", "min", "max", "value", "sum"],
198+
"type": "timeseries",
199+
"requests": [
200+
{
201+
"response_format": "timeseries",
202+
"queries": [
210203
{
211-
"field": "service",
212-
"width": "auto"
204+
"data_source": "metrics",
205+
"name": "query1",
206+
"query": "sum:modal.input_events.total_inputs{*}.as_count()"
213207
},
214208
{
215-
"field": "content",
216-
"width": "compact"
209+
"data_source": "metrics",
210+
"name": "query2",
211+
"query": "sum:modal.input_events.successes{*}.as_count()"
217212
}
218-
]
213+
],
214+
"formulas": [
215+
{ "formula": "query1" },
216+
{ "formula": "query2" }
217+
],
218+
"style": {
219+
"palette": "dog_classic",
220+
"order_by": "values",
221+
"line_type": "solid",
222+
"line_width": "normal"
223+
},
224+
"display_type": "line"
219225
}
220-
],
221-
"type": "list_stream"
226+
]
222227
},
223-
"layout": {
224-
"x": 6,
225-
"y": 3,
226-
"width": 6,
227-
"height": 3
228-
}
228+
"layout": { "x": 6, "y": 6, "width": 6, "height": 3 }
229229
}
230230
]
231231
},
232-
"layout": {
233-
"x": 0,
234-
"y": 0,
235-
"width": 12,
236-
"height": 9
237-
}
232+
"layout": { "x": 0, "y": 0, "width": 12, "height": 12 }
238233
}
239234
],
240235
"template_variables": [],
241236
"layout_type": "ordered",
242237
"notify_list": [],
243238
"reflow_type": "fixed"
244-
}
239+
}
-612 KB
Binary file not shown.
929 KB
Loading

modal/manifest.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
{
2121
"media_type": "image",
2222
"caption": "See audit logs, function logs, and utilization metrics in the Modal Datadog dashboard",
23-
"image_url": "images/modal-datadog-dashboard.jpg"
23+
"image_url": "images/modal-datadog-dashboard.png"
2424
}
2525
],
2626
"classifier_tags": [
@@ -55,7 +55,10 @@
5555
"modal.cpu.utilization",
5656
"modal.memory.utilization",
5757
"modal.gpu.compute.utilization",
58-
"modal.gpu.memory.utilization"
58+
"modal.gpu.memory.utilization",
59+
"modal.input_events.successes",
60+
"modal.input_events.total_inputs",
61+
"modal.input_events.elapsed_time_us"
5962
],
6063
"prefix": "modal."
6164
},

modal/metadata.csv

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
metric_name,metric_type,interval,unit_name,per_unit_name,integration,description,orientation,short_name,curated_metric
2-
modal.cpu.utilization,gauge,,,,modal,Number of CPU cores in use,0,cpu_utilization,
3-
modal.memory.utilization,gauge,,mebibyte,,modal,Memory in use,0,memory_utilization,
4-
modal.gpu.compute.utilization,gauge,,,,modal,GPU compute utilization,0,gpu_compute_utilization,
5-
modal.gpu.memory.utilization,gauge,,mebibyte,,modal,GPU memory utilization,0,gpu_memory_utilization,
1+
metric_name,metric_type,interval,unit_name,per_unit_name,integration,description,orientation,short_name,curated_metric,sample_tags
2+
modal.cpu.utilization,gauge,,,,modal,Number of CPU cores in use,0,cpu_utilization,,"function_name,app_name,workspace_name,timestamp,environment_name"
3+
modal.memory.utilization,gauge,,mebibyte,,modal,Memory in use,0,memory_utilization,,"function_name,app_name,workspace_name,timestamp,environment_name"
4+
modal.gpu.compute.utilization,gauge,,,,modal,GPU compute utilization,0,gpu_compute_utilization,,"function_name,app_name,workspace_name,timestamp,environment_name"
5+
modal.gpu.memory.utilization,gauge,,mebibyte,,modal,GPU memory utilization,0,gpu_memory_utilization,,"function_name,app_name,workspace_name,timestamp,environment_name"
6+
modal.input_events.successes,count,,,,modal,Number of successful completed inputs,0,input_events_successes,,"function_name,app_name,workspace_name,timestamp,environment_name"
7+
modal.input_events.total_inputs,count,,,,modal,Number of completed inputs,0,input_events_total_inputs,,"function_name,app_name,workspace_name,timestamp,environment_name"
8+
modal.input_events.elapsed_time_us,count,,microsecond,,modal,Elapsed time of input events,0,input_events_elapsed_time_us,,"function_name,app_name,workspace_name,timestamp,environment_name"

0 commit comments

Comments
 (0)