Skip to content

Commit cd1601d

Browse files
authored
Merge pull request #77 from appsignal/update-aws-dashboards-2026-05-27
Update AWS CloudWatch dashboards
2 parents 4149dd5 + d3a8c12 commit cd1601d

47 files changed

Lines changed: 5938 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

dashboards/aws/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# AWS CloudWatch dashboards
2+
3+
These dashboard files are managed by the [cloudwatch-dashboards](https://github.com/appsignal/cloudwatch-dashboards) repository. Do not edit them directly — changes will be overwritten on the next publish.

dashboards/aws/ai_ml_bedrock.json

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
{
2+
"label": "beta",
3+
"metric_keys": [
4+
"aws_bedrock_invocations"
5+
],
6+
"dashboard": {
7+
"title": "AWS/Bedrock",
8+
"description": "Monitor Amazon Bedrock model invocations, latency, errors, throttles, and token usage.",
9+
"visuals": [
10+
{
11+
"type": "timeseries",
12+
"display": "line",
13+
"format": "number",
14+
"draw_null_as_zero": true,
15+
"title": "Invocations",
16+
"description": "Number of model invocation requests.",
17+
"line_label": "%name% %ModelId%",
18+
"metrics": [
19+
{
20+
"name": "aws_bedrock_invocations",
21+
"fields": [{ "field": "GAUGE" }],
22+
"tags": [{ "key": "ModelId", "value": "*" }]
23+
}
24+
]
25+
},
26+
{
27+
"type": "timeseries",
28+
"display": "line",
29+
"format": "number",
30+
"draw_null_as_zero": true,
31+
"title": "Invocation Errors",
32+
"description": "Client-side (4xx) and server-side (5xx) invocation errors.",
33+
"line_label": "%name% %ModelId%",
34+
"metrics": [
35+
{
36+
"name": "aws_bedrock_invocation_client_errors",
37+
"fields": [{ "field": "GAUGE" }],
38+
"tags": [{ "key": "ModelId", "value": "*" }]
39+
},
40+
{
41+
"name": "aws_bedrock_invocation_server_errors",
42+
"fields": [{ "field": "GAUGE" }],
43+
"tags": [{ "key": "ModelId", "value": "*" }]
44+
}
45+
]
46+
},
47+
{
48+
"type": "timeseries",
49+
"display": "line",
50+
"format": "duration",
51+
"draw_null_as_zero": false,
52+
"title": "Invocation Latency",
53+
"description": "Time taken to process model invocations.",
54+
"line_label": "%name% %ModelId%",
55+
"metrics": [
56+
{
57+
"name": "aws_bedrock_invocation_latency",
58+
"fields": [{ "field": "GAUGE" }],
59+
"tags": [{ "key": "ModelId", "value": "*" }]
60+
}
61+
]
62+
},
63+
{
64+
"type": "timeseries",
65+
"display": "line",
66+
"format": "number",
67+
"draw_null_as_zero": true,
68+
"title": "Throttles",
69+
"description": "Number of invocations throttled due to service limits.",
70+
"line_label": "%name% %ModelId%",
71+
"metrics": [
72+
{
73+
"name": "aws_bedrock_invocation_throttles",
74+
"fields": [{ "field": "GAUGE" }],
75+
"tags": [{ "key": "ModelId", "value": "*" }]
76+
}
77+
]
78+
},
79+
{
80+
"type": "timeseries",
81+
"display": "line",
82+
"format": "number",
83+
"draw_null_as_zero": true,
84+
"title": "Input vs Output Tokens",
85+
"description": "Number of tokens in model input and output.",
86+
"line_label": "%name% %ModelId%",
87+
"metrics": [
88+
{
89+
"name": "aws_bedrock_input_token_count",
90+
"fields": [{ "field": "GAUGE" }],
91+
"tags": [{ "key": "ModelId", "value": "*" }]
92+
},
93+
{
94+
"name": "aws_bedrock_output_token_count",
95+
"fields": [{ "field": "GAUGE" }],
96+
"tags": [{ "key": "ModelId", "value": "*" }]
97+
}
98+
]
99+
},
100+
{
101+
"type": "timeseries",
102+
"display": "line",
103+
"format": "number",
104+
"draw_null_as_zero": true,
105+
"title": "Output Images",
106+
"description": "Number of images generated by image models.",
107+
"line_label": "%name% %ModelId%",
108+
"metrics": [
109+
{
110+
"name": "aws_bedrock_output_image_count",
111+
"fields": [{ "field": "GAUGE" }],
112+
"tags": [{ "key": "ModelId", "value": "*" }]
113+
}
114+
]
115+
}
116+
]
117+
}
118+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
{
2+
"label": "beta",
3+
"metric_keys": [
4+
"aws_sagemaker_invocations"
5+
],
6+
"dashboard": {
7+
"title": "AWS/SageMaker",
8+
"description": "Monitor SageMaker endpoint invocations, errors, and latency.",
9+
"visuals": [
10+
{
11+
"type": "timeseries",
12+
"display": "line",
13+
"format": "number",
14+
"draw_null_as_zero": true,
15+
"title": "Invocations",
16+
"description": "Total invocations and per-instance invocation rate.",
17+
"line_label": "%name% %EndpointName%",
18+
"metrics": [
19+
{
20+
"name": "aws_sagemaker_invocations",
21+
"fields": [{ "field": "GAUGE" }],
22+
"tags": [{ "key": "EndpointName", "value": "*" }]
23+
},
24+
{
25+
"name": "aws_sagemaker_invocations_per_instance",
26+
"fields": [{ "field": "GAUGE" }],
27+
"tags": [{ "key": "EndpointName", "value": "*" }]
28+
}
29+
]
30+
},
31+
{
32+
"type": "timeseries",
33+
"display": "line",
34+
"format": "number",
35+
"draw_null_as_zero": true,
36+
"title": "Invocation Errors",
37+
"description": "Number of invocations that resulted in model errors (4xx/5xx).",
38+
"line_label": "%name% %EndpointName%",
39+
"metrics": [
40+
{
41+
"name": "aws_sagemaker_invocation_model_errors",
42+
"fields": [{ "field": "GAUGE" }],
43+
"tags": [{ "key": "EndpointName", "value": "*" }]
44+
}
45+
]
46+
},
47+
{
48+
"type": "timeseries",
49+
"display": "line",
50+
"format": "duration",
51+
"draw_null_as_zero": false,
52+
"title": "Latency",
53+
"description": "Time taken by the model to respond and SageMaker overhead latency.",
54+
"line_label": "%name% %EndpointName%",
55+
"metrics": [
56+
{
57+
"name": "aws_sagemaker_model_latency",
58+
"fields": [{ "field": "GAUGE" }],
59+
"tags": [{ "key": "EndpointName", "value": "*" }]
60+
},
61+
{
62+
"name": "aws_sagemaker_overhead_latency",
63+
"fields": [{ "field": "GAUGE" }],
64+
"tags": [{ "key": "EndpointName", "value": "*" }]
65+
}
66+
]
67+
}
68+
]
69+
}
70+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
{
2+
"label": "beta",
3+
"metric_keys": [
4+
"aws_athena_total_execution_time"
5+
],
6+
"dashboard": {
7+
"title": "AWS/Athena",
8+
"description": "Monitor Athena query execution times, query phase durations, and data scanned.",
9+
"visuals": [
10+
{
11+
"type": "timeseries",
12+
"display": "line",
13+
"format": "duration",
14+
"draw_null_as_zero": false,
15+
"title": "Query Execution Time",
16+
"description": "Total time to execute a query including queue and planning time.",
17+
"line_label": "%name% %WorkGroup%",
18+
"metrics": [
19+
{
20+
"name": "aws_athena_total_execution_time",
21+
"fields": [{ "field": "GAUGE" }],
22+
"tags": [{ "key": "WorkGroup", "value": "*" }]
23+
}
24+
]
25+
},
26+
{
27+
"type": "timeseries",
28+
"display": "line",
29+
"format": "duration",
30+
"draw_null_as_zero": false,
31+
"title": "Query Phases",
32+
"description": "Time spent in queue, planning, and processing phases.",
33+
"line_label": "%name% %WorkGroup%",
34+
"metrics": [
35+
{
36+
"name": "aws_athena_query_queue_time",
37+
"fields": [{ "field": "GAUGE" }],
38+
"tags": [{ "key": "WorkGroup", "value": "*" }]
39+
},
40+
{
41+
"name": "aws_athena_query_planning_time",
42+
"fields": [{ "field": "GAUGE" }],
43+
"tags": [{ "key": "WorkGroup", "value": "*" }]
44+
},
45+
{
46+
"name": "aws_athena_service_processing_time",
47+
"fields": [{ "field": "GAUGE" }],
48+
"tags": [{ "key": "WorkGroup", "value": "*" }]
49+
}
50+
]
51+
},
52+
{
53+
"type": "timeseries",
54+
"display": "line",
55+
"format": "size",
56+
"format_input": "byte",
57+
"draw_null_as_zero": true,
58+
"title": "Data Scanned",
59+
"description": "Amount of data scanned by queries.",
60+
"line_label": "%name% %WorkGroup%",
61+
"metrics": [
62+
{
63+
"name": "aws_athena_processed_bytes",
64+
"fields": [{ "field": "GAUGE" }],
65+
"tags": [{ "key": "WorkGroup", "value": "*" }]
66+
}
67+
]
68+
}
69+
]
70+
}
71+
}

dashboards/aws/analytics_glue.json

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
{
2+
"label": "beta",
3+
"metric_keys": [
4+
"glue_glue_driver_aggregate_elapsed_time"
5+
],
6+
"dashboard": {
7+
"title": "AWS/Glue",
8+
"description": "Monitor Glue ETL job duration, task completion, data throughput, and JVM heap usage.",
9+
"visuals": [
10+
{
11+
"type": "timeseries",
12+
"display": "line",
13+
"format": "duration",
14+
"draw_null_as_zero": false,
15+
"title": "Job Duration",
16+
"description": "Elapsed time of the Glue ETL job.",
17+
"line_label": "%name% %JobName%",
18+
"metrics": [
19+
{
20+
"name": "glue_glue_driver_aggregate_elapsed_time",
21+
"fields": [{ "field": "GAUGE" }],
22+
"tags": [{ "key": "JobName", "value": "*" }]
23+
}
24+
]
25+
},
26+
{
27+
"type": "timeseries",
28+
"display": "line",
29+
"format": "number",
30+
"draw_null_as_zero": true,
31+
"title": "Tasks",
32+
"description": "Completed and failed tasks in the Glue job.",
33+
"line_label": "%name% %JobName%",
34+
"metrics": [
35+
{
36+
"name": "glue_glue_driver_aggregate_num_completed_tasks",
37+
"fields": [{ "field": "GAUGE" }],
38+
"tags": [{ "key": "JobName", "value": "*" }]
39+
},
40+
{
41+
"name": "glue_glue_driver_aggregate_num_failed_tasks",
42+
"fields": [{ "field": "GAUGE" }],
43+
"tags": [{ "key": "JobName", "value": "*" }]
44+
}
45+
]
46+
},
47+
{
48+
"type": "timeseries",
49+
"display": "line",
50+
"format": "size",
51+
"format_input": "byte",
52+
"draw_null_as_zero": true,
53+
"title": "Bytes Read",
54+
"description": "Total bytes read by the Glue job.",
55+
"line_label": "%name% %JobName%",
56+
"metrics": [
57+
{
58+
"name": "glue_glue_driver_aggregate_bytes_read",
59+
"fields": [{ "field": "GAUGE" }],
60+
"tags": [{ "key": "JobName", "value": "*" }]
61+
}
62+
]
63+
},
64+
{
65+
"type": "timeseries",
66+
"display": "line",
67+
"format": "size",
68+
"format_input": "byte",
69+
"draw_null_as_zero": false,
70+
"title": "JVM Heap",
71+
"description": "JVM heap memory used by the Glue driver.",
72+
"line_label": "%name% %JobName%",
73+
"metrics": [
74+
{
75+
"name": "glue_glue_driver_jvm_heap_used",
76+
"fields": [{ "field": "GAUGE" }],
77+
"tags": [{ "key": "JobName", "value": "*" }]
78+
}
79+
]
80+
},
81+
{
82+
"type": "timeseries",
83+
"display": "line",
84+
"format": "percent",
85+
"draw_null_as_zero": false,
86+
"title": "JVM Heap Usage",
87+
"description": "Fraction of JVM heap memory used as a percentage.",
88+
"line_label": "%name% %JobName%",
89+
"metrics": [
90+
{
91+
"name": "glue_glue_driver_jvm_heap_usage",
92+
"fields": [{ "field": "GAUGE" }],
93+
"tags": [{ "key": "JobName", "value": "*" }]
94+
}
95+
]
96+
}
97+
]
98+
}
99+
}

0 commit comments

Comments
 (0)