Ответ
Да, я активно использовал Prometheus для мониторинга инфраструктуры и приложений. Мои задачи включали настройку сбора метрик, написание правил алертинга на PromQL и интеграцию с Grafana.
Пример кастомного экспортера на Python для мониторинга бизнес-логики:
from prometheus_client import start_http_server, Gauge, Counter, Histogram
import time
import psycopg2
# Объявление метрик
DB_CONNECTION_STATUS = Gauge('app_db_connection_up', 'Status of database connection (1=up, 0=down)')
ORDERS_PROCESSED = Counter('app_orders_processed_total', 'Total number of processed orders')
REQUEST_DURATION = Histogram('app_request_duration_seconds', 'Request latency in seconds', buckets=[0.1, 0.5, 1.0, 2.0])
def check_database():
"""Проверка доступности БД и обновление метрики."""
try:
conn = psycopg2.connect("dbname=orders user=app")
conn.close()
DB_CONNECTION_STATUS.set(1)
except Exception:
DB_CONNECTION_STATUS.set(0)
def process_order():
"""Имитация обработки заказа с замером времени."""
start = time.time()
# ... бизнес-логика ...
time.sleep(0.05)
duration = time.time() - start
REQUEST_DURATION.observe(duration)
ORDERS_PROCESSED.inc()
if __name__ == '__main__':
# Запуск HTTP-сервера для сбора метрик Prometheus на порту 8000
start_http_server(8000)
while True:
check_database()
time.sleep(30)
Что я настраивал:
- Prometheus Server: Конфигурация
scrape_configsдля сбора метрик с Node Exporter, приложений (Spring Boot Actuator, client libraries) и Kubernetes pods через service discovery. - Alertmanager: Настройка группировки, подавления (inhibition) и маршрутизации алертов в Slack и PagerDuty. Например, правило для алерта о высокой латенции:
groups: - name: app_alerts rules: - alert: HighRequestLatency expr: histogram_quantile(0.95, rate(app_request_duration_seconds_bucket[5m])) > 1 for: 2m annotations: summary: "High latency detected on {{ $labels.instance }}" - Grafana: Создание дашбордов с использованием PromQL запросов для визуализации ключевых метрик приложения и инфраструктуры.