Skip to content

Conversation

@alexppg
Copy link
Member

@alexppg alexppg commented Nov 27, 2019

Añade soporte para métricas, de momento solo dos. Por un lado saca métricas de todos los endpoints de flask a los que se ataca con tiempos de respuesta, tipo de petición y uri. Por el otro, da métricas del número de logs de cada nivel han habido. Se ven tal que así:

# HELP flask_request_latency_seconds Flask Request Latency
# TYPE flask_request_latency_seconds histogram
flask_request_latency_seconds_bucket{endpoint="/",le="0.005",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="0.01",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="0.025",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="0.05",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="0.075",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="0.1",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="0.25",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="0.5",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="0.75",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="1.0",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="2.5",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="5.0",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="7.5",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="10.0",method="GET"} 1.0
flask_request_latency_seconds_bucket{endpoint="/",le="+Inf",method="GET"} 1.0
flask_request_latency_seconds_count{endpoint="/",method="GET"} 1.0
flask_request_latency_seconds_sum{endpoint="/",method="GET"} 0.0004162788391113281
# TYPE flask_request_latency_seconds_created gauge
flask_request_latency_seconds_created{endpoint="/",method="GET"} 1.5748102803253472e+09
# HELP flask_request_count_total Flask Request Count
# TYPE flask_request_count_total counter
flask_request_count_total{endpoint="/",http_status="200",method="GET"} 1.0
# TYPE flask_request_count_created gauge
flask_request_count_created{endpoint="/",http_status="200",method="GET"} 1.5748102803254728e+09

# TYPE python_logging_messages_total counter
python_logging_messages_total{level="INFO",service="Python Microservice"} 1.0
# TYPE python_logging_messages_created gauge
python_logging_messages_created{level="INFO",service="Python Microservice"} 1.5748112738910015e+09

Las dudas o miedos que tengo son:

  • Que el wrapper que mide los tiempos de respuesta de los endpoint de flask no añadan tiempo de más. En las pruebas hechas no parece que pase, pero igual seria bueno hacer mejores pruebas.
  • No deberia estar expuesto el endpoint de métricas (ni el de healthcheck) al mundo. Para microservicios de backend no hay problema, pero si son frontales está feo que la gente pueda ver eso, por lo que habría que buscar una forma de hacerlo configurable y tal vez poner que por defecto se abran ambos endpoints en otro puerto.

Por otro lado, faltan tests. Npi de por dónde tirar, cualquier sugerencia o apuntar en una dirección me vendra bien.

@alexppg alexppg requested a review from avara1986 November 27, 2019 07:33
@coveralls
Copy link

coveralls commented Nov 27, 2019

Pull Request Test Coverage Report for Build 390

  • 86 of 86 (100.0%) changed or added relevant lines in 4 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage increased (+0.09%) to 99.2%

Totals Coverage Status
Change from base Build 383: 0.09%
Covered Lines: 868
Relevant Lines: 875

💛 - Coveralls

@alexppg
Copy link
Member Author

alexppg commented Nov 28, 2019

Creo que me quedaría hacer tests del logger y ya, pero eso si que npi de como se hace y no veo que haya ninguno.

@avara1986
Copy link
Member

avara1986 commented Nov 28, 2019

Lo veo perfect 😄 se podría mergear pero quedaría añadir en la rama task/updated-documentation, documentación dentro de la carpeta docs de como acceder y usar estas métricas 💪

@alexppg
Copy link
Member Author

alexppg commented Nov 28, 2019

Venga, intento implementarlo como un servicio como hablamos y documentarlo.

@avara1986
Copy link
Member

Yo lo veo perfecto 👍 ¿quitamos el WIP?

@alexppg
Copy link
Member Author

alexppg commented Dec 1, 2019

Ahora que está el test si x)

@alexppg alexppg changed the title WIP: Añadir soporte para métricas Añadir soporte para métricas Dec 1, 2019
@avara1986 avara1986 merged commit bde0f00 into python-microservices:master Dec 1, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants