Django - 接入监控告警
- Sentry 错误监控与告警
- 告警趋势可视化:Prometheus & Grafana 概念介绍
- 告警趋势可视化:Prometheus & Grafana 架构
- Prometheus & Grafana 接入
- 配置 Grafana 大盘
时间序列数据库 TSDB:按时间采样的时间序列的数据库
来源于 Google 的 Borgmon
用做监控、报警,以及时间序列数据库
Prometheus 数据模型
- metrics 名称 + [KEY/VALUE 对] 来标识一种时间序列数据
- 键值对称为 Label
- 采样:每一个采样包含一个时间戳和一个 64 位浮点数值
django_db_query_duration_seconds_sum{alias="default",vendor="sqlite"} 0.012543817108962685
Prometheus 数据类型
- Counter:计数器,总是增长的整数值;请求数,订单量,错误数等
- Gauge:可以上下波动的计量值,比如温度,内存使用量,处理中的请求
- Summary:提供观测样本的摘要,包含样本数量,样本值的和;滑动窗口计算:请求耗时,响应数据大小
- Histogram:把观测值放到配置好的桶中做统计,请求耗时,响应数据大小等
Prometheus 架构
- Prometheus 服务:采集和存储时序数据
- 客户端类库:用作注入应用端代码
- Push gateway:用于采集朝生暮死的作业数据
- 特殊用途的 Exporter Service:如 Nginx/HAProxy/StatsD 等
- Alertmanager:处理告警
Prometheus 与 Grafana 的调用关系
Prometheus & Grafana 接入
启动 Prometheus & Grafana
接入 Django:Prometheus 插件集成
- 安装
1
pip install django-prometheu
- 配置 settings.py
1
2
3
4
5
6
7
8
9
10
11
12
13INSTALLED_APPS = [
...
'django_prometheus',
...
]
MIDDLEWARE = [
'django_prometheus.middleware.PrometheusBeforeMiddleware',
# All your other middlewares go here, including the default
# middlewares like SessionMiddleware, CommonMiddleware,
# CsrfViewmiddleware, SecurityMiddleware, etc.
'django_prometheus.middleware.PrometheusAfterMiddleware',
] - 配置 urls.py
1
2
3
4urlpatterns = [
...
url('', include('django_prometheus.urls')),
]
- 安装
Promethues 配置 Django 应用的 Endpoint
1
2
3
4
5
6
7
8
9
10
11scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
static_configs:
- targets: ['127.0.0.1:80001', '127.0.0.1:8002',]
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']Grafana 中配置应用的监控图
配置 Grafana 大盘
- 下载 Dashbaord 的 Json ,导入到 Grafana 中
- https://grafana.com/grafana/dashboards/9528