一身转战三千里,一剑曾百万师。这篇文章主要讲述prometheus中pushgateway方式收集数据相关的知识,希望能为你提供帮助。
一.pushGateway搭建
一.搭建pushgateway
docker pull prom/pushgateway
docker run -d --name=pg -p 9091:9091 prom/pushgateway
或者
docker run -d--name=pg10-p 9091:9091 prom/pushgateway"--persistence.file=pushgateway.data--persistence.interval=3" 持久化保存数据
#访问方式:
http://xxx.195.185.78:9091/#
二.配置prometheus
2.1修改配置
- job_name: pushgateway
static_configs:
- target: [10.206.16.14:9091]
label:
instance: pushgateway
2.2 使配置生效(使用k8s搭建)
kubectlapply -f prometheus-configmap.yaml
curl -X POST 10.1.192.105:9090/-/reload
2.3 查看是否在prometheus生效
http://xxx.195.185.78:30089/targets
#参考资料
https://www.cnblogs.com/xiao987334176/p/9933963.html
https://songjiayang.gitbooks.io/prometheus/content/pushgateway/how.html
二.shell数据管理 2.1操作
#2.1 shell形式添加数据,主要是添加一个job
echo "some_metric 3.14" | curl --data-binary @- http://127.0.0.1:9091/metrics/job/test_job
#2.2在某一个job下添加instance
cat <
<
EOF | curl --data-binary @- http://127.0.0.1:9091/metrics/job/test_job/instance/some_instance # TYPE some_metric counter
some_metriclabel="val1" 999
# TYPE another_metric gauge
# HELP another_metric Just an example.
another_metric 2398.283
EOF
#2.3以文件形式发送到pushgateway
vim pgdata.txt
# TYPE http_request_total counter
# HELP http_request_total get interface request count with different code.
http_request_totalcode="200",interface="/v1/save" 276
http_request_totalcode="404",interface="/v1/delete" 0
http_request_totalcode="500",interface="/v1/save" 1
http_request_timecode="200",interface="/v1/core" 0.122curl -XPOST --data-binary @pgdata.txt http://127.0.0.1:9091/metrics/job/app/instance/app-172.30.0.0#2.4常用操作
#删除某个组下的所有数据
curl -X DELETE http://127.0.0.1:9091/metrics/job/test_job
#删除某个组下某个实例的所有数据:
curl -X DELETE http://127.0.0.1:9091/metrics/job/test_job/instance/some_instance
2.2结果
【prometheus中pushgateway方式收集数据】
文章图片
三. python数据管理 3.1 安装模块
#1.提前安装py模块
pip install flask
pip install prometheus_client
3.2 prometheus提供4种不通同类型metrics
Counter, Gauge, Summar和Histogram
3.3 使用gauge方式写入数据
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from prometheus_client import CollectorRegistry, Gauge, push_to_gateway
if __name__ == __main__:
registry = CollectorRegistry()
labels = [req_status, req_method, req_url]
g_one = Gauge(requests_total, url请求次数, labels, registry=registry)
g_two = Gauge(avg_response_time_seconds, 1分钟内的URL平均响应时间, labels, registry=registry)
g_one.labels(200,GET, /test/url).set(1) #set设定值
g_two.labels(200,GET, /test/api/url/).set(10) #set设定值
push_to_gateway(http://127.0.0.1:9091, job=SampleURLMetrics, registry=registry)
四.go数据管理
package main
import (
"fmt"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/push"
)
func main()
ExamplePusher_Push()func ExamplePusher_Push()
completionTime := prometheus.NewGauge(prometheus.GaugeOpts
Name: "db_backup_last_completion_timestamp_seconds",
Help: "The timestamp of the last successful completion of a DB backup.",
)
completionTime.SetToCurrentTime()
if err := push.New("http://127.0.0.1:9091", "db_backup").// push.New("pushgateway地址", "job名称")
Collector(completionTime).// Collector(completionTime) 给指标赋值
Grouping("db", "customers").Grouping("instance", "1.1.1.1").// 给指标添加标签,可以添加多个
Push();
err != nil
fmt.Println("Could not push completion time to Pushgateway:", err)
推荐阅读
- Rsync+Crond实现定时备份介绍#yyds干货盘点#
- Windows10 系统安装微软商店(ms-windows-store)
- k8s系列-04-k8s的认证授权和准入控制
- (更新服务列表)
- k8s系列-05-k8s集群搭建方案对比,以及containerd是什么,如何安装
- Redis服务的主从复制哨兵Cluster
- Echarts常用折线和频谱以及三维散点图
- 园区元宇宙(打造智慧园区综合治理可视化管理平台)
- 基于Linux的点对点VXLAN通信