From b70db88bf3c1b640d650da47cd564b133ba1da4e Mon Sep 17 00:00:00 2001 From: Vinicius Arcanjo Date: Tue, 19 Apr 2022 11:57:21 -0300 Subject: [PATCH 1/2] EP027 - APM blueprint --- docs/blueprints/EP027.rst | 50 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 docs/blueprints/EP027.rst diff --git a/docs/blueprints/EP027.rst b/docs/blueprints/EP027.rst new file mode 100644 index 000000000..2df234c29 --- /dev/null +++ b/docs/blueprints/EP027.rst @@ -0,0 +1,50 @@ +:EP: 27 +:Title: Application Performance and Monitoring (APM) client +:Authors: + - Italo Valcy + - Vinicius Arcanjo + - Antonio Francisco + - Jeronimo Bezerra + - Rogerio Motitsuki +:Created: 2022-04-19 +:Kytos-Version: +:Status: Draft + +*********************************************************** +EP027 - Application Performance and Monitoring (APM) client +*********************************************************** + + +Abstract +======== + +This blueprint proposes integrating an APM client on Kytos to have performance and monitoring metrics. + + +Motivation +========== + +Currently, there aren't exposed metrics in terms of latency and executions that certain functions, IO operations, endpoints or events handlers are consuming. Therefore, it's difficult to assess the runtime workload, the baseline under normal circumstances, how many events and requests are being handled, and in case of potential slowness or crash to identify which parts of the code would be causing problems. + + +Specification +============= + +The APM should be configurable on Kytos and it shouldn't be loaded by default. The APM has to meet the following requirements: + +- **1)** The APM agent must be production-grade and designed for minimal latency overhead when instrumenting code. +- **2)** It must be open-source and free to use its main functionalities. +- **3)** It must be possible to add custom instrumentation if needed. +- **4)** It must support Python 3.9+. +- **5)** It should provide automatic instrumentation for requests, be able to handle asyncio, and pymongo. + +Candidates +========== + +The following APM agents were considered: + +- `Elastic APM Agent 7+ `_ +- `New Relic `_ +- `Datadog APM `_ + +Elastic APM meets all the requirements and it's a great candidate since it leverages Elasticsearch, which is also a piece of infrastructure that's being planned for searchable logs. New Relic and Datadog APM, as of now in 2022 aren't completely free to use the main functionalities. From a861b18c244a6287d6c704043c90b0545ae53b27 Mon Sep 17 00:00:00 2001 From: Vinicius Arcanjo Date: Tue, 19 Apr 2022 14:11:00 -0300 Subject: [PATCH 2/2] Included Flask --- docs/blueprints/EP027.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blueprints/EP027.rst b/docs/blueprints/EP027.rst index 2df234c29..05c335b43 100644 --- a/docs/blueprints/EP027.rst +++ b/docs/blueprints/EP027.rst @@ -36,7 +36,7 @@ The APM should be configurable on Kytos and it shouldn't be loaded by default. T - **2)** It must be open-source and free to use its main functionalities. - **3)** It must be possible to add custom instrumentation if needed. - **4)** It must support Python 3.9+. -- **5)** It should provide automatic instrumentation for requests, be able to handle asyncio, and pymongo. +- **5)** It should provide automatic instrumentation for Flask, requests, be able to handle asyncio, and pymongo. Candidates ==========