Skip to content

Commit e518bca

Browse files
authored
Merge pull request #79 from appsignal/remove-duplicate-aws-dashboards
Consolidate duplicate AWS dashboards (Lambda, Route53, Firehose) into the aws/ collection
2 parents e0aaee0 + 0abf32a commit e518bca

8 files changed

Lines changed: 268 additions & 1397 deletions

File tree

README.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ Automated Dashboards can be found in the `dashboards/` sub directory. Each direc
1010
- [Active Job](/dashboards/active_job/)
1111
- [AWS](/dashboards/aws/) (via AWS CloudWatch)
1212
- [AWS CloudWatch Metric Streams](/dashboards/cloudwatch/)
13-
- [AWS Firehose](/dashboards/firehose/)
14-
- [AWS Lambda](/dashboards/lambda/)
15-
- [AWS Route53](/dashboards/route53/)
1613
- [Ecto](/dashboards/ecto/)
1714
- [Erlang](/dashboards/erlang/)
1815
- [Heroku](/dashboards/heroku/)

dashboards/aws/messaging_firehose.json

Lines changed: 268 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
],
66
"dashboard": {
77
"title": "AWS/Firehose",
8-
"description": "Monitor Firehose delivery stream ingestion, S3 delivery throughput, data freshness, and delivery success.",
8+
"description": "Monitor Firehose delivery streams: ingestion, S3 and HTTP endpoint delivery, PutRecord API latency and requests, throttling and rate limits, and KMS/validation errors.",
99
"visuals": [
1010
{
1111
"type": "timeseries",
@@ -40,6 +40,27 @@
4040
}
4141
]
4242
},
43+
{
44+
"type": "timeseries",
45+
"display": "line",
46+
"format": "number",
47+
"draw_null_as_zero": true,
48+
"title": "Incoming Put Requests vs Incoming Records",
49+
"description": "Successful PutRecord and PutRecordBatch requests versus records ingested. A high records-to-requests ratio indicates effective batching.",
50+
"line_label": "%name% %DeliveryStreamName%",
51+
"metrics": [
52+
{
53+
"name": "aws_firehose_incoming_put_requests",
54+
"fields": [{ "field": "GAUGE" }],
55+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
56+
},
57+
{
58+
"name": "aws_firehose_incoming_records",
59+
"fields": [{ "field": "GAUGE" }],
60+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
61+
}
62+
]
63+
},
4364
{
4465
"type": "timeseries",
4566
"display": "line",
@@ -104,6 +125,252 @@
104125
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
105126
}
106127
]
128+
},
129+
{
130+
"type": "timeseries",
131+
"display": "line",
132+
"format": "size",
133+
"format_input": "byte",
134+
"draw_null_as_zero": true,
135+
"title": "Delivery to HTTP Endpoint - Bytes vs Processed Bytes",
136+
"description": "Bytes delivered successfully to the HTTP endpoint versus the bytes attempted, including retries.",
137+
"line_label": "%name% %DeliveryStreamName%",
138+
"metrics": [
139+
{
140+
"name": "aws_firehose_delivery_to_http_endpoint_bytes",
141+
"fields": [{ "field": "GAUGE" }],
142+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
143+
},
144+
{
145+
"name": "aws_firehose_delivery_to_http_endpoint_processed_bytes",
146+
"fields": [{ "field": "GAUGE" }],
147+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
148+
}
149+
]
150+
},
151+
{
152+
"type": "timeseries",
153+
"display": "line",
154+
"format": "number",
155+
"draw_null_as_zero": true,
156+
"title": "Delivery to HTTP Endpoint - Records vs Processed Records",
157+
"description": "Records delivered successfully to the HTTP endpoint versus the records attempted, including retries.",
158+
"line_label": "%name% %DeliveryStreamName%",
159+
"metrics": [
160+
{
161+
"name": "aws_firehose_delivery_to_http_endpoint_records",
162+
"fields": [{ "field": "GAUGE" }],
163+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
164+
},
165+
{
166+
"name": "aws_firehose_delivery_to_http_endpoint_processed_records",
167+
"fields": [{ "field": "GAUGE" }],
168+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
169+
}
170+
]
171+
},
172+
{
173+
"type": "timeseries",
174+
"display": "line",
175+
"format": "number",
176+
"draw_null_as_zero": false,
177+
"title": "Delivery to HTTP Endpoint - Success",
178+
"description": "Number of successful deliveries to the HTTP endpoint.",
179+
"line_label": "%name% %DeliveryStreamName%",
180+
"metrics": [
181+
{
182+
"name": "aws_firehose_delivery_to_http_endpoint_success",
183+
"fields": [{ "field": "GAUGE" }],
184+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
185+
}
186+
]
187+
},
188+
{
189+
"type": "timeseries",
190+
"display": "line",
191+
"format": "duration",
192+
"draw_null_as_zero": false,
193+
"title": "Delivery to HTTP Endpoint - Data Freshness",
194+
"description": "Age of the oldest record awaiting delivery to the HTTP endpoint. Higher values indicate delivery delays.",
195+
"line_label": "%name% %DeliveryStreamName%",
196+
"metrics": [
197+
{
198+
"name": "aws_firehose_delivery_to_http_endpoint_data_freshness",
199+
"fields": [{ "field": "GAUGE" }],
200+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
201+
}
202+
]
203+
},
204+
{
205+
"type": "timeseries",
206+
"display": "line",
207+
"format": "number",
208+
"draw_null_as_zero": true,
209+
"title": "PutRecord vs PutRecordBatch Requests",
210+
"description": "Number of PutRecord and PutRecordBatch requests.",
211+
"line_label": "%name% %DeliveryStreamName%",
212+
"metrics": [
213+
{
214+
"name": "aws_firehose_put_record_requests",
215+
"fields": [{ "field": "GAUGE" }],
216+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
217+
},
218+
{
219+
"name": "aws_firehose_put_record_batch_requests",
220+
"fields": [{ "field": "GAUGE" }],
221+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
222+
}
223+
]
224+
},
225+
{
226+
"type": "timeseries",
227+
"display": "line",
228+
"format": "duration",
229+
"draw_null_as_zero": false,
230+
"title": "PutRecord vs PutRecordBatch Latency",
231+
"description": "Latency of PutRecord and PutRecordBatch operations.",
232+
"line_label": "%name% %DeliveryStreamName%",
233+
"metrics": [
234+
{
235+
"name": "aws_firehose_put_record_latency",
236+
"fields": [{ "field": "GAUGE" }],
237+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
238+
},
239+
{
240+
"name": "aws_firehose_put_record_batch_latency",
241+
"fields": [{ "field": "GAUGE" }],
242+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
243+
}
244+
]
245+
},
246+
{
247+
"type": "timeseries",
248+
"display": "line",
249+
"format": "number",
250+
"draw_null_as_zero": true,
251+
"title": "Throttled Records",
252+
"description": "Records throttled because data ingestion exceeded a Firehose stream limit.",
253+
"line_label": "%name% %DeliveryStreamName%",
254+
"metrics": [
255+
{
256+
"name": "aws_firehose_throttled_records",
257+
"fields": [{ "field": "GAUGE" }],
258+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
259+
}
260+
]
261+
},
262+
{
263+
"type": "timeseries",
264+
"display": "line",
265+
"format": "size",
266+
"format_input": "byte",
267+
"draw_null_as_zero": false,
268+
"title": "Bytes Per Second Limit",
269+
"description": "Current maximum bytes per second the Firehose stream can ingest before throttling.",
270+
"line_label": "%name% %DeliveryStreamName%",
271+
"metrics": [
272+
{
273+
"name": "aws_firehose_bytes_per_second_limit",
274+
"fields": [{ "field": "GAUGE" }],
275+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
276+
}
277+
]
278+
},
279+
{
280+
"type": "timeseries",
281+
"display": "line",
282+
"format": "number",
283+
"draw_null_as_zero": false,
284+
"title": "Records Per Second Limit",
285+
"description": "Current maximum records per second the Firehose stream can ingest before throttling.",
286+
"line_label": "%name% %DeliveryStreamName%",
287+
"metrics": [
288+
{
289+
"name": "aws_firehose_records_per_second_limit",
290+
"fields": [{ "field": "GAUGE" }],
291+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
292+
}
293+
]
294+
},
295+
{
296+
"type": "timeseries",
297+
"display": "line",
298+
"format": "number",
299+
"draw_null_as_zero": false,
300+
"title": "Put Requests Per Second Limit",
301+
"description": "Current maximum put requests per second the Firehose stream can ingest before throttling.",
302+
"line_label": "%name% %DeliveryStreamName%",
303+
"metrics": [
304+
{
305+
"name": "aws_firehose_put_requests_per_second_limit",
306+
"fields": [{ "field": "GAUGE" }],
307+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
308+
}
309+
]
310+
},
311+
{
312+
"type": "timeseries",
313+
"display": "line",
314+
"format": "number",
315+
"draw_null_as_zero": true,
316+
"title": "KMS Key Errors",
317+
"description": "Occurrences of KMSAccessDenied, KMSDisabled, KMSInvalidState, and KMSNotFound exceptions for the Firehose stream.",
318+
"line_label": "%name% %DeliveryStreamName%",
319+
"metrics": [
320+
{
321+
"name": "aws_firehose_kms_key_access_denied",
322+
"fields": [{ "field": "GAUGE" }],
323+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
324+
},
325+
{
326+
"name": "aws_firehose_kms_key_disabled",
327+
"fields": [{ "field": "GAUGE" }],
328+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
329+
},
330+
{
331+
"name": "aws_firehose_kms_key_invalid_state",
332+
"fields": [{ "field": "GAUGE" }],
333+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
334+
},
335+
{
336+
"name": "aws_firehose_kms_key_not_found",
337+
"fields": [{ "field": "GAUGE" }],
338+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
339+
}
340+
]
341+
},
342+
{
343+
"type": "timeseries",
344+
"display": "line",
345+
"format": "number",
346+
"draw_null_as_zero": true,
347+
"title": "Failed Validation - Records",
348+
"description": "Number of records that failed record validation.",
349+
"line_label": "%name% %DeliveryStreamName%",
350+
"metrics": [
351+
{
352+
"name": "aws_firehose_failed_validation_records",
353+
"fields": [{ "field": "GAUGE" }],
354+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
355+
}
356+
]
357+
},
358+
{
359+
"type": "timeseries",
360+
"display": "line",
361+
"format": "size",
362+
"format_input": "byte",
363+
"draw_null_as_zero": true,
364+
"title": "Failed Validation - Bytes",
365+
"description": "Number of bytes that failed record validation.",
366+
"line_label": "%name% %DeliveryStreamName%",
367+
"metrics": [
368+
{
369+
"name": "aws_firehose_failed_validation_bytes",
370+
"fields": [{ "field": "GAUGE" }],
371+
"tags": [{ "key": "DeliveryStreamName", "value": "*" }]
372+
}
373+
]
107374
}
108375
]
109376
}

0 commit comments

Comments
 (0)