当前位置: 首页 > wzjs >正文

小网站开发成本企业网站建设步骤

小网站开发成本,企业网站建设步骤,wordpress注册直接发送密码,网站建设了解一下图片文章目录 Pushgateway 数据自动清理一、Pushgateway 数据清理的必要性二、自动清理方案方案1:使用带TTL功能的Pushgateway分支版本方案2:使用Shell脚本定期清理方案3:结合Prometheus记录规则自动清理 三、最佳实践建议四、验证与维护五、示例…

文章目录

  • Pushgateway 数据自动清理
    • 一、Pushgateway 数据清理的必要性
    • 二、自动清理方案
      • 方案1:使用带TTL功能的Pushgateway分支版本
      • 方案2:使用Shell脚本定期清理
      • 方案3:结合Prometheus记录规则自动清理
    • 三、最佳实践建议
    • 四、验证与维护
    • 五、示例
    • 1. 基于时间的自动清理
      • 1.1 使用 Pushgateway 的 API 定期清理
      • 1.2 使用 Pushgateway 的 `--persistence.file` 和 `--persistence.interval` 参数
    • 2. 基于任务的自动清理
      • 2.1 任务完成后自动清理
      • 2.2 使用 Kubernetes Finalizers (如果运行在 K8s 中)
    • 3. 高级自动清理方案
      • 3.1 使用 Pushgateway 的 Admin API (需要启用)
      • 3.2 使用 Prometheus 记录规则标记过期数据
    • 4. 示例最佳实践建议

Pushgateway 数据自动清理

Pushgateway 作为 Prometheus 生态中的一个重要组件,主要用于临时和批处理作业的指标推送。然而,Pushgateway 默认不会自动清理过期指标数据,这可能导致指标堆积、内存占用过高甚至服务崩溃。以下是 Pushgateway 数据自动清理的完整解决方案。

一、Pushgateway 数据清理的必要性

Pushgateway 设计上不会自动删除推送给它的任何指标数据,这带来几个主要问题:

  1. 指标数据会无限期保留,即使相关作业已终止
  2. 随着时间推移,Pushgateway 内存占用会不断增长,可能导致服务崩溃
  3. Prometheus 会持续拉取这些过期数据,影响监控准确性

二、自动清理方案

方案1:使用带TTL功能的Pushgateway分支版本

一个社区维护的Pushgateway分支版本支持TTL(Time-To-Live)功能:

docker run -d -p 9091:9091 dmathai/prom-pushgateway-ttl:latest --metric.timetolive=60s

参数说明:

  • --metric.timetolive:设置指标的存活时间(如60s),超过此时间的指标会自动删除

优点:实现简单,无需额外维护
缺点:非官方版本,可能存在兼容性问题

方案2:使用Shell脚本定期清理

以下脚本可删除超过指定时间(如60秒)未更新的指标:

#!/bin/bash
baseurl=localhost:9091
for uri in $(curl -sS $baseurl/api/v1/metrics | jq -r '.data[].push_time_seconds.metrics[0] |select((now - (.value | tonumber)) > 60) |(.labels as $labels | ["job", "instance"] | map(.+"/"+$labels[.]) | join("/"))
'); docurl -XDELETE $baseurl/metrics/$uri
done

部署步骤

  1. 确保系统已安装jqcurl工具
  2. 将脚本保存为/opt/scripts/pushgateway_clean.sh
  3. 添加执行权限:chmod +x /opt/scripts/pushgateway_clean.sh
  4. 设置crontab定期执行(如每分钟):
*/1 * * * * /bin/bash /opt/scripts/pushgateway_clean.sh >/dev/null 2>&1

注意事项

  • 脚本假设所有Group都包含jobinstance标签
  • 如果Group包含其他标签,需要修改脚本中的标签列表
  • Group Labels有特定顺序,顺序不正确会导致删除失败

方案3:结合Prometheus记录规则自动清理

  1. 首先在Prometheus中创建记录规则,识别过期指标:
# prometheus.yml 中添加
rule_files:- 'pushgateway_rules.yml'
# pushgateway_rules.yml 内容
groups:
- name: pushgateway_cleanuprules:- record: pushgateway:stale_metricsexpr: time() - push_time_seconds > 60
  1. 使用Prometheus API查询过期指标并删除:
#!/bin/bash
STALE_METRICS=$(curl -s 'http://prometheus:9090/api/v1/query?query=pushgateway:stale_metrics' | jq -r '.data.result[].metric.job')for JOB in $STALE_METRICS; docurl -X DELETE "http://pushgateway:9091/metrics/job/$JOB"
done

三、最佳实践建议

  1. 合理设置指标生命周期

    • 短周期作业:设置较短的TTL(如5-10分钟)
    • 长周期作业:设置与作业周期匹配的TTL
  2. 标签设计规范

    • 确保每个作业有唯一的job名称
    • 包含有意义的instance标签
    • 避免使用易变的标签值
  3. 监控Pushgateway自身

    • 监控pushgateway_http_requests_total了解API调用情况
    • 监控pushgateway_metrics_count了解指标数量变化
  4. 持久化配置
    如果需要保留某些关键指标,可以启用持久化:

    docker run -d -p 9091:9091 -v /data:/data prom/pushgateway --persistence.file=/data/pushgateway.data
    

四、验证与维护

  1. 验证自动清理效果

    • 定期检查pushgateway_metrics_count指标
    • 通过Pushgateway Web界面(默认9091端口)查看当前指标
  2. 日志监控

    • 监控清理脚本的执行日志
    • 设置告警规则,当清理失败时通知
  3. 定期审查

    • 每季度审查TTL设置是否仍符合业务需求
    • 根据业务变化调整清理策略

通过实施以上SOP,可以有效管理Pushgateway中的指标数据,避免因数据堆积导致的问题,同时确保监控系统的稳定运行。

五、示例

1. 基于时间的自动清理

1.1 使用 Pushgateway 的 API 定期清理

#!/bin/bash
# cleanup_old_metrics.shPUSHGATEWAY="http://pushgateway.address:9091"
RETENTION_HOURS=24  # 保留24小时内的数据# 获取当前时间戳
CURRENT_TS=$(date +%s)# 获取所有指标组
METRIC_GROUPS=$(curl -s "${PUSHGATEWAY}/api/v1/metrics" | jq -r '.data[].pushTimeUnixSeconds')# 遍历并清理过期数据
for group in $METRIC_GROUPS; doPUSH_TIME=$(echo $group | jq -r '.pushTimeUnixSeconds')AGE_HOURS=$(( (CURRENT_TS - PUSH_TIME) / 3600 ))if [ $AGE_HOURS -gt $RETENTION_HOURS ]; thenJOB_NAME=$(echo $group | jq -r '.labels.job')INSTANCE=$(echo $group | jq -r '.labels.instance')echo "Deleting ${JOB_NAME}/${INSTANCE} (age: ${AGE_HOURS}h)"curl -X DELETE "${PUSHGATEWAY}/metrics/job/${JOB_NAME}/instance/${INSTANCE}"fi
done

设置定时任务

# 每天凌晨1点执行清理
0 1 * * * /path/to/cleanup_old_metrics.sh

1.2 使用 Pushgateway 的 --persistence.file--persistence.interval 参数

启动 Pushgateway 时添加:

./pushgateway \--persistence.file=/tmp/pushgateway \--persistence.interval=5m \--web.enable-admin-api

这样 Pushgateway 会定期将内存中的数据持久化到文件,并在启动时恢复。

2. 基于任务的自动清理

2.1 任务完成后自动清理

#!/bin/bash
# job_script.shJOB_NAME="my_batch_job"
INSTANCE=$(hostname)
PUSHGATEWAY="http://pushgateway.address:9091"# 注册退出时清理的钩子
function cleanup {echo "Cleaning up Pushgateway metrics..."curl -X DELETE "${PUSHGATEWAY}/metrics/job/${JOB_NAME}/instance/${INSTANCE}"
}
trap cleanup EXIT# 推送指标
echo "job_status{state=\"running\"} 1" | curl --data-binary @- "${PUSHGATEWAY}/metrics/job/${JOB_NAME}/instance/${INSTANCE}"# 执行实际任务
your_actual_task_here# 更新最终状态
echo "job_status{state=\"finished\"} 1" | curl --data-binary @- "${PUSHGATEWAY}/metrics/job/${JOB_NAME}/instance/${INSTANCE}"

2.2 使用 Kubernetes Finalizers (如果运行在 K8s 中)

apiVersion: batch/v1
kind: Job
metadata:name: example-job
spec:template:spec:containers:- name: mainimage: your-imagecommand: ["/bin/sh", "-c"]args:- |# 推送指标echo "job_running 1" | curl --data-binary @- http://pushgateway/metrics/job/example-job/instance/${HOSTNAME}# 执行任务your-task-here# 退出前清理curl -X DELETE http://pushgateway/metrics/job/example-job/instance/${HOSTNAME}restartPolicy: Never

3. 高级自动清理方案

3.1 使用 Pushgateway 的 Admin API (需要启用)

启动 Pushgateway 时添加 --web.enable-admin-api 参数,然后可以使用:

# 清理所有指标
curl -X PUT "${PUSHGATEWAY}/api/v1/admin/wipe"

3.2 使用 Prometheus 记录规则标记过期数据

在 Prometheus 配置中添加记录规则:

rule_files:- 'pushgateway_rules.yml'

pushgateway_rules.yml 内容:

groups:
- name: pushgateway_cleanuprules:- record: pushgateway_metric_expiredexpr: |time() - pushgateway_metric_push_time > 86400  # 24小时过期unless ON(job, instance) pushgateway_metric_value

然后可以基于此规则触发清理操作

4. 示例最佳实践建议

  1. 分层清理策略

    • 短期任务:任务完成后立即清理
    • 中期监控:设置24小时保留期
    • 长期数据:考虑直接写入Prometheus或其他TSDB
  2. 监控清理过程

    # 监控Pushgateway指标组数量
    curl -s "${PUSHGATEWAY}/metrics" | grep 'pushgateway_metrics_entries'
    
  3. 避免清理风暴

    • 大规模清理时添加延迟
    • 考虑分批清理
  4. 日志记录

    • 记录所有清理操作
    • 监控清理失败情况

通过以上方案,可以实现Pushgateway数据的自动化生命周期管理,避免无用数据积累。

http://www.dtcms.com/wzjs/195999.html

相关文章:

  • 福建泉州做网站公司哪家好免费域名空间申请网址
  • 做本地网站要服务器吗网销怎么做
  • 深圳手机网站建设价格湖南网站设计外包费用
  • 外汇反佣网站建设百度seo排名在线点击器
  • 建设银行网站怎么登录密码忘了怎么办友情链接如何添加
  • 博物馆门户网站建设方案永久不收费免费的聊天软件
  • 做网站的公司一般怎么培训销售营销网络怎么写
  • 仿素材下载网站源码免费网站制作
  • 网站建站对象最新网站查询
  • 如何选择手机网站建设重庆seo优化
  • 网站为什么做版心限制超级外链发布
  • 公司网站手工优化怎么做提供seo顾问服务适合的对象是
  • 从哪进新疆所有建设局网站标题优化怎样选关键词
  • 营销型网站建设项目需求表百度广告联盟一个月能赚多少
  • 做网站路径网络推广山东
  • 做网站的工作室电子商务网站建设教程
  • 微信官网weixinqqcom怎么优化网站性能
  • 自己网站的登录api怎么做软件怎么推广
  • 长虹b2b电子商务平台北京seo网站优化公司
  • 佛山外贸网站建设资讯个人接外包项目平台
  • 马克 扎克伯格大学做的网站产品如何推广
  • 女装东莞网站建设2020最新推广方式
  • wordpress验证邮箱验证黑帽seo教程
  • 临沂建设局网站农民工保证金公司网站模板设计
  • 广西智能网站建设找哪家论坛seo设置
  • 汽车网站方案怎么网站排名seo
  • 外贸网站建设注意什么百度关键词指数
  • 做问卷美观的网站最新全国疫情消息
  • 临漳县web网站建设西安seo黑
  • 可信网站的认证智能建站系统