聊一聊:Prometheus监控系统
本文最后更新于:2024年7月6日 早上
一个健全的系统总是离不开监控系统,一个选择合适的监控系统可以让我们的系统更加健壮,更加稳定。
Prometheus是一种开源的系统监控和警报工具,最初由SoundCloud开发,后来捐赠给了Cloud Native Computing Foundation(CNCF)。它被广泛用于监控容器化应用程序和微服务架构。
Prometheus的主要用途是收集、存储和查询时间序列数据。它通过定期从目标应用程序中获取指标数据,并将这些数据保存在本地数据库中。用户可以使用PromQL(Prometheus查询语言)来查询和分析这些数据,并创建灵活的监控仪表盘和警报规则。
核心组件包括:
Prometheus Server:负责收集和存储时间序列数据。它通过HTTP协议从目标应用程序或者Exporter获取指标数据,并将数据存储在本地的时间序列数据库中。
Exporters:这些是用于从各种应用程序和服务中收集指标数据的客户端软件。Prometheus使用Exporter来监控不同类型的服务,如数据库、Web服务器、消息队列等。常见的Exporter包括Node Exporter(用于监控主机指标)、Blackbox Exporter(用于监控网络服务)、MySQL Exporter(用于监控MySQL数据库)等。
Pushgateway:用于暂存短期的批量指标数据,当目标作业的生命周期较短或不稳定时,这些作业可以将指标推送到Pushgateway,然后由Prometheus从Pushgateway中拉取数据。
Alertmanager:负责处理警报规则并触发警报通知。它可以根据用户定义的条件和聚合逻辑来管理警报的发送。
Grafana(虽然不是Prometheus的一部分,但经常与之配合使用):用于创建漂亮的仪表盘和图表展示Prometheus收集到的监控数据。——chatgpt
dockprom快速搭建
dockprom是一个开源的快速Prometheus部署方案,可以快捷的兼容多台机器上的容器或者硬件指标:
1 |
|
WEB服务的监控
这里我已最简单的flask服务来作为例子, prometheus-flask-exporter
提供了一系列默认的监控指标:
- flask_http_request_duration_seconds
- flask_http_request_total
- flask_http_request_exceptions_total
- flask_exporter_info
基于上面的指标可以细化到每一个api的基础使用情况
1 |
|
运行后,访问http://localhost:4000/metrics
celery的监控(flower)
celery已经有了很成熟的flower的监控,同时flower也提供了面向Prometheus的接口,便于统一的监控。具体的见flower文档
其中提供的指标有:
Name | Description | Labels | Instrument Type |
---|---|---|---|
flower_events_total | Number of times a celery task event was registered by Flower. | task, type, worker | counter |
flower_task_prefetch_time_seconds | The time the task spent waiting at the celery worker to be executed. | task, worker | gauge |
flower_worker_prefetched_tasks | Number of tasks of given type prefetched at a worker. | task, worker | gauge |
flower_task_runtime_seconds | The time it took to run the task. | task, worker | histogram |
flower_worker_online | Shows celery worker’s online status. | worker | gauge |
flower_worker_number_of_currently_executing_tasks | Number of tasks currently executing at this worker. | worker | gauge |
我习惯于使用一个单独的容器来运行:
1 |
|
prometheus.yml中添加以下配置来进行爬取:
1 |
|