Prometheus基于Pushgateway采集数据
拉取pushgageway镜像,启动容器
docker pull pushgateway
docker run -d --name pushgateway -p 9091:9091 prom/pushgateway
浏览器查看9091端口
修改prometheus-alertmanager-cfg.yaml文件,在k8s-master节点操作
添加如下job
- job_name: 'pushgateway'
scrape_interval: 5s
static_configs:
- targets: ['172.18.80.131:9091']
honor_labels: true
更新配置和deploy
kubectl apply -f prometheus-alertmanager-pushgateway-cfg.yaml
kubectl delete -f prometheus-alertmanager-deploy.yaml
kubectl apply -f prometheus-alertmanager-deploy.yaml
推送数据到pushgateway
# 向 {job="test_job"} 添加单条数据:
echo " metric 3.6" | curl --data-binary @- http://172.16.80.131:9091/metrics/job/test_job
# 添加复杂数据
cat <<EOF | curl --data-binary @- http://172.16.80.131:9091/metrics/job/instance/test_instance
# HELP node_memory_usage The current memory usage.
# TYPE node_memory_usage gauge
node_memory_usage 36
# HELP node_memory_total The total memory available.
# TYPE node_memory_total gauge
node_memory_total 36000
EOF
删除某个组下某个实例的所有数据
curl -X DELETE http://172.16.80.131:9091/metrics/job/test_job/instance/test_instance
删除某个组下的所有数据:
curl -X DELETE http://172.16.80.131:9091/metrics/job/test_job
通过脚本方式上报指标
#!/bin/bash
# 计算内存使用率,并格式化为两位小数
node_memory_usages=$(free -m | grep Mem | awk '{printf "%.2f", $3/$2*100}')
# 定义 job 和 instance 名称
job_name="memory"
instance_name="172.16.80.131"
# 推送指标数据到 Pushgateway
cat <<EOF | curl --data-binary @- http://172.16.80.131:9091/metrics/job/$job_name/instance/$instance_name
# HELP node_memory_usages The percentage of memory usage.
# TYPE node_memory_usages gauge
node_memory_usages $node_memory_usages
EOF
sh push_memory.sh
# 可以配置定时任务,每隔多长时间获取一次