Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Instrumenta tu app con Prometheus, PyConES 2018

Instrumenta tu app con Prometheus, PyConES 2018

¿Algo se rompe en tu sistema y no sabes por qué? Es hora de incrementar la visibilidad sobre él. En esta charla te contaré que es Prometheus y como puede ayudarte a mejorar la observabilidad de tus apps usando su cliente para Python.

Hablaremos de por que son interesantes la visibilidad y la observabilidad en un sistema, de los diferentes tipos de instrumentación, de como Prometheus nos ayuda a la hora de recolectar métricas, y, de como usando el cliente Python de Prometheus en nuestras aplicaciones y servicios podemos exponer métricas que nos ayuden a mostrar el estado de nuestro sistema/producto.

Vídeo en https://www.youtube.com/watch?v=NUzlZ4Euovk

Agustín Herranz

October 06, 2018
Tweet

More Decks by Agustín Herranz

Other Decks in Programming

Transcript

  1. ¿Qué es Prometheus? • Inspirado en Borgmon (Google) • Origen

    Soundcloud, 2012.Desarrollo de comunidad • Proyecto graduado por la CNCF junto K8s • Ecosistema de exposición y recolección de métricas • Lenguaje de consulta flexible: PromQL • Formato de exposición de métricas • Evolución del formato a OpenMetrics • Recolección en modo 'pull' (recogida)
  2. # HELP nombre_métrica Texto descriptivo # TYPE nombre_métrica tipo_métrica nombre_métrica{etiqueta=”valor”,etiqueta=”valor”}

    42.0 Una métrica en Prometheus • Modelo de datos multi-dimensional: series temporales con nombre, más etiquetas clave/valor • Metadatos asociados. • Valor de coma flotante ('float64'). • Muestrea -> serie temporal.
  3. Cliente Python Prometheus • Cliente oficial. • Mantenido por Brian

    Brazil • Counters, Gauges, Histograms, Summary. • Métricas del proceso/plataforma • Utilidades auxiliares, in_progress, time, etc.. • Utilidades de exportación: Twisted, WSGI, etc.. https://github.com/prometheus/client_python https://pypi.org/project/prometheus_client/
  4. Formato exposición. # HELP process_virtual_memory_bytes Virtual memory size in bytes.

    # TYPE process_virtual_memory_bytes gauge process_virtual_memory_bytes 2045640704.0 # HELP process_resident_memory_bytes Resident memory size in bytes. # TYPE process_resident_memory_bytes gauge process_resident_memory_bytes 36868096.0 # HELP process_start_time_seconds Start time of the process since unix epoch in seconds. # TYPE process_start_time_seconds gauge process_start_time_seconds 1538681336.29 # HELP process_cpu_seconds_total Total user and system CPU time spent in seconds. # TYPE process_cpu_seconds_total counter process_cpu_seconds_total 601.16 # HELP process_open_fds Number of open file descriptors. # TYPE process_open_fds gauge process_open_fds 7.0 # HELP process_max_fds Maximum number of open file descriptors. # TYPE process_max_fds gauge process_max_fds 1048576.0 # HELP python_info Python platform information # TYPE python_info gauge python_info{implementation="Cpython",major="3",minor="7",patchlevel="0",version="3.7.0"} 1.0
  5. Contadores - Counters # HELP vending_emoji_delivered_total Delivered emoji. # TYPE

    vending_emoji_delivered_total counter vending_emoji_delivered_total{category_id="cat3",category_name="Vegetales"} 3004.0 vending_emoji_delivered_total{category_id="cat6",category_name="Banderas"} 2929.0 vending_emoji_delivered_total{category_id="cat4",category_name="Comida"} 2968.0 vending_emoji_delivered_total{category_id="cat5",category_name="Transporte"} 2977.0 vending_emoji_delivered_total{category_id="cat1",category_name="Caras"} 2877.0 vending_emoji_delivered_total{category_id="cat2",category_name="Animales"} 2896.0 counter.inc(value=1) @counter.count_exceptions() *
  6. Histogramas - Histograms # HELP vending_emoji_cooking_duration_seconds Emoji cooking time duration

    # TYPE vending_emoji_cooking_duration_seconds histogram vending_emoji_cooking_duration_seconds_bucket{le="0.1"} 128.0 vending_emoji_cooking_duration_seconds_bucket{le="0.3"} 1471.0 vending_emoji_cooking_duration_seconds_bucket{le="0.5"} 3432.0 vending_emoji_cooking_duration_seconds_bucket{le="1.0"} 7753.0 vending_emoji_cooking_duration_seconds_bucket{le="1.5"} 10773.0 vending_emoji_cooking_duration_seconds_bucket{le="2.0"} 12771.0 vending_emoji_cooking_duration_seconds_bucket{le="2.5"} 14130.0 vending_emoji_cooking_duration_seconds_bucket{le="3.0"} 15113.0 vending_emoji_cooking_duration_seconds_bucket{le="3.5"} 15822.0 vending_emoji_cooking_duration_seconds_bucket{le="4.0"} 16372.0 vending_emoji_cooking_duration_seconds_bucket{le="5.0"} 17117.0 vending_emoji_cooking_duration_seconds_bucket{le="6.0"} 17558.0 vending_emoji_cooking_duration_seconds_bucket{le="8.0"} 17993.0 vending_emoji_cooking_duration_seconds_bucket{le="+Inf"} 18589.0 vending_emoji_cooking_duration_seconds_count 18589.0 vending_emoji_cooking_duration_seconds_sum 37759.94983713784
  7. Indicador - Gauge # HELP vending_emoji_overall_satisfaction_index Client overall satisfaction index

    # TYPE vending_emoji_overall_satisfaction_index gauge vending_emoji_overall_satisfaction_index -51.0 gauge.inc(value=1) gauge.dec(value=1) gauge.set(value) gauge.set_to_current_time() * @gauge.track_inprogress() *
  8. Recursos Conferencias/Vídeos: • PromCon https://promcon.io https://www.youtube.com/channel/UC4pLFely0-Odea4B2NL1nWA • Monitorama http://monitorama.com/ https://vimeo.com/monitorama

    • O11ycon https://o11ycon.io/ https://www.youtube.com/playlist?list=PLlmOKTb2JQLPhbWRZ4-hTdItUXzUkhOpv Libros: • Prometheus: Up & Running (Brian Brazil) https://www.oreilly.com/library/view/prometheus-up/9781492034131/ • Distributed Systems Observability (Cindy Sridharan) https://www.oreilly.com/library/view/distributed-systems-observability/9781492033431/