Django-接入监控告警
让故障第一时间被感知到:接入监控告警
- Sentry 错误监控与告警
- 告警趋势可视化:Prometheus & Grafana 概念介绍
- 告警趋势可视化:Prometheus & Grafana 架构
- Prometheus & Grafana 接入
- 配置 Grafana 大盘
Sentry错误监控与告警
告警趋势可视化:Prometheus & 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