Prometheus Pushgateway 安装与应用

九五霸霸 20天前 59

1、Pushgateway 安装与启动

下载地址:https://prometheus.io/download/

# tar xvf pushgateway-0.8.0.linux-amd64.tar.gz 
# mv pushgateway-0.8.0.linux-amd64 /usr/local/pushgateway080
# ll /usr/local/pushgateway080/pushgateway 
-rwxr-xr-x 1 3434 3434 13654725 Dec  8 08:11 /usr/local/pushgateway080/pushgateway

为 pushgateway创建systemd服务管理配置

# vim /usr/lib/systemd/system/pushgateway.service
[Unit]
Description=Prometheus Pushgateway

[Service]
Type=simple
ExecStart=/usr/local/pushgateway080/pushgateway
ExecReload=/bin/kill -s SIGHUP $MAINPID

[Install]
WantedBy=multi-user.target

启动 pushgateway 服务

systemctl start pushgateway
systemctl status pushgateway

在浏览器打开测试:http://10.x.4.21:9091/

2、Pushgateway 命令行推送测试

使用 Prometheus文本协议是最简易的推送 metrics方法,只需使用像 curl 这种HTTP工具。

每行必须以换行字符(即'LF'或'\n')结束。

推送的 metrics 使用组进行管理,由任意数量标签的分组KEY来标识,其中一个必须是job标签。

curl 参数说明:

--data-binary <data> 以二进制的方式post数据,如果<data>的内容以符号@符合开头,其后的字符串将被解析为文件名,curl 命令会从这个文件中读取数据发送,但文件中的内容必须是URL编码的格式;如果@后的内容是符号-,也就是@-,curl 命令将从 stdin 读取数据发送。

推送一个简单样本到{job="some_job"}标记的组:

echo "some_metric 3.14" | curl --data-binary @- http://10.x.4.21:9091/metrics/job/some_job

删除{job="some_job"}标记的所有metrics:

curl -X DELETE http://10.x.4.21:9091/metrics/job/some_job

上面方式推送的 metric 因为没有说明类型,会显示为untyped,并且会导致 Pushgateway 的 /metrics页面报错,Promethues Server无法抓取。

推送比较复杂的数据到{job="some_job",instance="some_instance"}标记的组:

cat <<EOF | curl --data-binary @- http://10.x.4.21:9091/metrics/job/some_job/instance/some_instance
# TYPE some_metric counter
some_metric{label="val1"} 42
# TYPE another_metric gauge
# HELP another_metric Just an example.
another_metric 2398.283
EOF

删除{job="some_job",instance="some_instance"}组的所有metrics:

curl -X DELETE http://10.x.4.21:9091/metrics/job/some_job/instance/some_instance

URL路径是根据标签组变化的,大体如下:

/metrics/job/<JOBNAME>{/<LABEL_NAME>/<LABEL_VALUE>}

<JOBNAME>是job标签的值, 后面是任意数量的标签对。

推送数据后,从浏览器打开验证:http://10.x.4.21:9091/metrics

3、Promethues Server抓取 Pushgateway的metrics

honor_labels 决定Prometheus如何处理冲突的标签,就是抓取数据中标签与Promethues Server端配置的标签冲突情况。 假设抓取的数据已经有了job和instance标签,Promethues Server的配置里边也配置了job和instance标签, 如果honor_labels为true,则丢弃Server配置的job和instance标签, 如果honor_labels为false,则将抓取数据中 job和 instance标签重命名为 exported_job和 exported_instance,然后将Server端配置标签正常加到metric中。

配置Prometheus Scrape目标

# vim /usr/local/prometheus260/prometheus.yml
scrape_configs:
... ...
  - job_name: 'PushGW'
    honor_labels: true
    static_configs:
    - targets: ['10.x.4.21:9091']    
      labels:   
           product: 'Email_person'

4、推送的指标没有“timeout” 或 TTL

Pushgateway的metrics 不能自动清理,如果需要使用自动清理 长期没有推送的metrics,建议通过使用Node exporter 的 Textfile Collector 收集本地导出metrics。

参考:


最新回复 (0)
    • 运维开源项目互助社区—致敬开源
      2
        立即登录 立即注册 
返回