我将 Pushgateway 与 Prometheus 一起使用,一切正常,但几周后 Pushgateway 崩溃了……看看有大量不再使用的指标,手动删除它们几乎是不可能的……所以 ->
有没有一种方法可以使用 TTL 或其他一些保留设置(例如按大小或按时间)来使 Pushgateway 指标过期?...或者也许两者兼而有之?
注意:我在 Prometheus 的邮件列表中读到,很多人在一年前或更长时间前就需要这样的东西......到目前为止唯一的答案是 -> 这不是 Promethean 的方法......真的吗?...常见,如果这对很多人来说确实很痛苦,也许应该有更好的方法(即使这不是普罗米修斯的方法)
我正在尝试将 Spark 与 Prometheus 集成。我们有 Spark 2 和 Spark 3。对于 Spark 2,我知道我可以运行jmx_exporter。Spark 3 有一个新的内置 PrometheusServlet,非常棒。我们使用 YARN 在本地运行 Spark,而不是 k8s。
我的问题是如何动态发现普罗米修斯抓取目标。据我了解,没有静态的单一中央 Spark 服务器可以指向,而是每个应用程序都被打包到一个纱线容器中并具有自己的指标。除非有办法聚合这些指标(例如在 Spark 历史服务器中)或者为每个作业都有一个静态的可预测地址?
当我提交一个火花流长时间运行的应用程序时,我希望它的指标能够立即显示在 Prometheus 中。我知道新的 PrometheusServlet 可以使用注释自动发现 k8s,我想为纱线实现类似的功能。
到目前为止我发现了什么:
欢迎任何关于优雅解决方案的建议,谢谢!
hadoop-yarn apache-spark prometheus jmx-exporter prometheus-pushgateway
我每天多次运行构建脚本。我的感觉是我和我的同事花了相当多的时间等待这个脚本的执行。现在我想知道:我们每天花多少时间等待脚本执行?。我可以对总体平均值感到满意,即使我真的很想获得每日数据(例如“上周一我们花了 X 分钟等待脚本执行,周二......)
为了找到答案,我用推送网关启动了 Prometheus。在构建脚本中,我向推送网关添加了一个 REST 调用,该调用发布counter标有机器名称的指标(类型:)以及执行脚本所用时间的示例数据。
正在收集数据,但我意识到我收集的数据不足以回答我的问题,我需要将我推送的指标(即:当前运行经过的时间)累积到以前的数据。查看文档,我感觉推送网关不支持此功能:
Pushgateway 显然不是聚合器或分布式计数器,而是指标缓存
我的问题是:
我们有一个 Prometheus Pushgateway 正在运行并监听来自 AWS Lambda 函数的指标推送。然而,Pushgateway 的 URL 可供公众访问,这可能会带来一些安全问题。我们想知道是否有任何方法可以为 Pushgateway 添加一层保护,使其无法公开访问?
我发现这个 Github 线程可以回答这个问题: https://github.com/prometheus/pushgateway/issues/281
建议在pushgateway前面设置一个反向代理。但是,我仍然对这实际上如何运作感到困惑?我们目前正在使用 Kubernetes 来部署 Prometheus。
我们的一些应用程序具有每晚汇总数据的批处理作业。这些批处理作业是Python脚本,使用Prometheus Pushgateway将指标值推送到Prometheus,并且我们有规则在这些指标无效(例如超过某个阈值)时触发警报(在Alertmanager中)。
我们现在还想使用 Prometheus 指标来仔细检查批处理作业本身是否正确运行:例如,作业是否按时开始?是否发生任何错误?作业是否已完成?为此,我们希望更改 Python 脚本,以便在脚本开始和完成以及发生任何错误时推送指标。但这确实会带来一些问题:我们有相当多的批处理作业,每个批处理作业有 3 个指标,需要为规则/警报创建大量手动配置;我们还想在 Grafana 中以图形方式显示状态,但不确定正确的视觉效果是什么样的。
有没有其他人尝试解决类似的问题,使用 Prometheus 指标来监控多个批处理作业的状态?您记录了哪些指标以及您的警报/规则是什么样的?您是否找到了一种直观的方式来以图形方式显示每个批处理作业的状态?
python grafana prometheus prometheus-alertmanager prometheus-pushgateway
我想将指标数据发送到 Prometheus 推送网关以监控 CPU 和内存。我想要的是传输$ps aux或$htop信息到推送网关。我用 bash 脚本尝试过,但没有成功,这就是为什么我想尝试使用 python 脚本。对我来说最大的问题是将信息转换$ps aux为$htop指标数据。我真的不知道如何管理它。我尝试了一个简单的代码,它可以正常工作:
import requests
job_name='metrics'
instance_name='10.0.0.1:9090'
team_name='cpu'
provider='Rpi'
payload_key='cpu_utilization'
payload_value='33'
response = requests.post('http://localhost:9091/metrics/job/{j}/instance/{i}/team/{t}'.format(j=job_name, i=instance_name, t=team_name), data='{k} {v}\n'.format(k=payload_key, v=payload_value))
print(response.status_code)
Run Code Online (Sandbox Code Playgroud)
我现在想要的是将payload_key='cpu_utilization'和修改payload_value='33'为进程列表$ps aux或$htop命令。
我正在尝试计算每天的事件数(在我的示例部署中)。我目前正在做的是基于pushgateway的HTTP API发送以下计数器事件
# TYPE deployments_count counter
# HELP deployments_count Deployments Counter
deployments_count{label1="${label1}",label2="${label2}"} 1
Run Code Online (Sandbox Code Playgroud)
我想在仪表板上计算的是某一天发生了多少个不同的事件(即部署)。
根据经验,我知道每小时应该有超过 10 个事件(部署),但是当我执行以下查询时,我不断收到 0
rate(deployments_count[24h])
Run Code Online (Sandbox Code Playgroud)
请注意,我的计数器始终报告给1定事件(部署)发生的时间。
prometheus ×6
python ×2
apache-spark ×1
grafana ×1
hadoop-yarn ×1
jmx-exporter ×1
metrics ×1
monitoring ×1
networking ×1
promql ×1
security ×1