prometheus+grafana部署参考之前文档:https://blog.51cto.com/jschu/3237358
pushgateway概述&部署
优势:
Prometheus 采用 pull 模式,可能由于不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据。
在监控业务数据的时候,需要将不同数据汇总, 由 Prometheus 统一收集。
弊端:
1.将多个节点数据汇总到 pushgateway, 如果 pushgateway 挂了,受影响比多个 target 大。
2.Prometheus 拉取状态 up 只针对 pushgateway, 无法做到对每个节点有效。
3.Pushgateway 可以持久化保存所有push给它的所有监控数据,因此即使被监控服务器已经下线,prometheus 还会拉取到旧的监控数据,需要手动清理。
使用docker安装pushgateway
docker pull prom/pushgateway
docker run -d --name=pushgateway -p 9091:9091 --restart=always prom/pushgateway
修改prometheus.yml文件,只配置一个pull拉取对象pushgateway,其他被监控服务器都push到pushgateway上。
...
- job_name: 'pushgateway'
static_configs:
- targets: ['172.30.12.167:9091']
labels:
instance: pushgateway
使用API方式push数据到pushgateway上
默认url地址格式为:http://<ip>:9091/metrics/job/<JOB_NAME>{/<LABEL_NAME>/<LABEL_VALUE>},其中<JOB_NAME>是必填项,后面可以添加任意数量的 标签对,一般会添加一个instance/<INSTANCE_NAME>实例名称标签来区分各个指标。
echo "test_metric 123456" | curl --data-binary @- http://172.30.12.167:9091/metrics/job/test_job
pushgateway UI页面
cat <<EOF | curl --data-binary @- http://172.30.12.167:9091/metrics/job/test_job/instance/test_instance
# TYPE test_metrics counter
test_metrics{label="app1",name="demo"} 100.00
EOF
- 添加honor_labels,避免监控数据的job、instance被pushgateway本身的job=pushgateway, instance=pushgateway覆盖。
...
- job_name: 'pushgateway'
honor_labels: true
static_configs:
- targets: ['172.30.12.167:9091']
labels:
instance: pushgateway
- 监控数据写入到文件,再将文件内容push到pushgateway
$ vim pgdata.txt
# TYPE http_request_total counter
# HELP http_request_total get interface request count with different code.
http_request_total{code="200",interface="/v1/save"} 276
http_request_total{code="404",interface="/v1/delete"} 0
http_request_total{code="500",interface="/v1/save"} 1
# TYPE http_request_time gauge
# HELP http_request_time get core interface http request time.
http_request_time{code="200",interface="/v1/core"} 0.122
- 通过API方式DELETE删除某个或某一组的监控数据
curl -X DELETE http://172.30.12.167:9091/metrics/job/test_job ##删除job="test_job"组下的所有数据
curl -X DELETE http://172.30.12.167:9091/metrics/job/test_job/instance/test_instance ##删除{job="job_test",instance="test_instance"}中的数据/指标
- Grafana展示自定义的监控项
- Data Source添加数据源,选择prometheus
2.Grafana创建Dashboards
3.对新增的dashboard进行设置
4.填写基本信息,除了名称、描述、还可以打上一些标签:
5.创建一个变量
6.在设置变量的页面进行设置,如下图:
7.基本配置完成了,现在可以配置一个监控
8.新建一个Graph
9.配置展示名称
10.如下图,选择"Metrics"页,数据源选择"Prometheus",红框3位置输入内容"my_sample_counter_total{status=“success”, job="$job"}",页面会立即展示my_sample_counter_total这个监控项的曲线图:
11.自定义监控项展示成功了,点击右上角"保存"
12.查看新增的dashboard展示板
13.如果您想将这个监控项的配置导出来,以便备份或者导入到另一个Grafana系统,可以在设置页面点击"JSON Model"菜单,得到JSON格式的配置信息,自行保存,如下图: