Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Prometheus получить метрику из приложения python


Prometheus получить метрику из приложения python


Пример простейшего web приложения на python

# mkdir app && cd app
# python3 -m venv .venv
# source ./.venv/bin/activate
# pip install fastapi uvicorn

app.py: 
#!/usr/bin/env python3
from fastapi import FastAPI
app = FastAPI()
@app.get("/hello")
def hello():
    return {"message": "Hello, World!"}

# uvicorn app:app --reload --port 8000

# curl -L http://localhost:8000/hello
{"message": "Hello, World!"}


Посчитаем количество запросов метрикой app_http_requests_total

Каждый запрос к /hello будет:
1. увеличивать счетчик app_http_requests_total
2. добавлять лейблы method и endpoint

# pip install prometheus-client

app.py:
#!/usr/bin/env python3
from fastapi import FastAPI
from prometheus_client import Counter, make_asgi_app
app = FastAPI()
metrics_app = make_asgi_app()
app.mount("/metrics", metrics_app)
REQUEST_COUNT = Counter(
    "app_http_requests_total",
    "Общее количество HTTP-запросов",
    ["method", "endpoint"]
)
@app.get("/hello")
def hello():
    REQUEST_COUNT.labels(method="GET", endpoint="/").inc()
    return {"message": "Hello, World!"}

# uvicorn app:app --reload --port 8000

# for i in {1..20}; do curl http://localhost:8000/hello; done

# curl -L http://localhost:8000/metrics | grep app_http_requests_total
# HELP app_http_requests_total Общее количество HTTP-запросов
# TYPE app_http_requests_total counter
app_http_requests_total{endpoint="/",method="GET"} 20.0


Prometheus

prometheus.yaml:
global:
  scrape_interval: 15s
  scrape_timeout: 10s

scrape_configs:
  - job_name: 'app'
    static_configs:
      - targets:
          - 'localhost:8000'

docker-compose.yaml:
services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    network_mode: host
    volumes:
     - './prometheus.yaml:/etc/prometheus/prometheus.yaml'
    ports:
      - 9090:9090
    command:
      - '--config.file=/etc/prometheus/prometheus.yaml'

# docker compose up -d
             
# curl -XGET http://localhost:8000/hello

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект