Prometheus 在docker容器(版本 18.09.2,构建 6247962,docker-compose.xml如下)中运行,并且刮取目标是localhost:8000由 Python 3 脚本创建的。
为失败的抓取目标 ( localhost:9090/targets)获得的错误是
获取http://127.0.0.1:8000/metrics:拨号 tcp 127.0.0.1:8000:getsockopt:连接被拒绝
问题:为什么 docker 容器中的 Prometheus 无法抓取在主机(Mac OS X)上运行的目标?我们如何让在 docker 容器中运行的 Prometheus 能够抓取在主机上运行的目标?
失败的尝试:尝试替换docker-compose.yml
networks:
- back-tier
- front-tier
Run Code Online (Sandbox Code Playgroud)
和
network_mode: "host"
Run Code Online (Sandbox Code Playgroud)
但随后我们无法访问 Prometheus 管理页面localhost:9090。
无法从类似问题中找到解决方案
docker-compose.yml
version: '3.3'
networks:
front-tier:
back-tier:
services:
prometheus:
image: prom/prometheus:v2.1.0
volumes:
- ./prometheus/prometheus:/etc/prometheus/
- ./prometheus/prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,当它收到一个特定的 HTTP 请求时,它会增加一个 Prometheus 计数器。该应用程序在 Kubernetes 中运行,具有多个实例并且每天重新部署多次。使用查询http_requests_total{method="POST",path="/resource/aaa",statusClass="2XX"}生成一个图表,按预期显示每个实例的累积请求计数。
我想创建一个 Grafana 图,显示过去 7 天内收到的请求的累积频率。
我的第一个想法是increase(...[7d])为了考虑 7 天窗口之外的任何指标(如图所示),然后sum是这些值。
我已经意识到sum(increase(http_requests_total{method="POST",path="/resource/aaa",statusClass="2XX"}[7d]))事实上确实给出了时间点的正确答案。然而,生成的图表并不完全符合要求,因为组件increase(...) 值会随着一周而增加/减少。
我将如何创建一个图表来显示过去 7 天内这些指标增加的累积总和?例如,给定以下简化数据
| Day | # Requests |
|-----|------------|
| 1 | 10 |
| 2 | 5 |
| 3 | 15 |
| 4 | 10 |
| 5 | 20 |
| 6 | 5 |
| 7 | 5 |
| …Run Code Online (Sandbox Code Playgroud) 我尝试在我的 Kubernetes VM 上获取 Total 和 Free 磁盘空间,以便我可以在其上显示占用空间的百分比。我尝试了名称中包含“文件系统”的各种指标,但没有一个显示正确的总磁盘大小。应该使用哪一个来做到这一点?
这是我尝试过的指标列表
node_filesystem_size_bytes
node_filesystem_avail_bytes
node:node_filesystem_usage:
node:node_filesystem_avail:
node_filesystem_files
node_filesystem_files_free
node_filesystem_free_bytes
node_filesystem_readonly
Run Code Online (Sandbox Code Playgroud) 从 Grafana 获取 Slack 警报。但它的格式不太好。有没有办法在 Grafana 的 slack 中自定义通知?我正在使用节点导出器导出指标。仪表板从https://grafana.com/grafana/dashboards/1860下载
如何自定义通知,例如:
标题:服务器上的 CPU 负载警报
实例 IP:192.xxxx 值:CPU 使用率 90% 优先级:高
随附了 slack 中的示例输出。
grafana prometheus grafana-api grafana-alerts prometheus-node-exporter
我喜欢使用Prometheus和cAdvisor监视容器,这样当容器重启时,我会收到警报.我想知道是否有人为此提供样本普罗米修斯警报.
我发现对于某些图表,我从普罗米修斯得到的双打值应该只是:
查询我使用:
increase(signups_count[4m])
Run Code Online (Sandbox Code Playgroud)
刮擦间隔设置为建议的最大值 2分钟.
如果我查询存储的实际数据:
curl -gs 'localhost:9090/api/v1/query?query=(signups_count[1h])'
"values":[
[1515721365.194, "579"],
[1515721485.194, "579"],
[1515721605.194, "580"],
[1515721725.194, "580"],
[1515721845.194, "580"],
[1515721965.194, "580"],
[1515722085.194, "580"],
[1515722205.194, "581"],
[1515722325.194, "581"],
[1515722445.194, "581"],
[1515722565.194, "581"]
],
Run Code Online (Sandbox Code Playgroud)
我看到只有两次增加.事实上,如果我查询这些时间,我会看到预期的结果:
curl -gs 'localhost:9090/api/v1/query_range?step=4m&query=increase(signups_count[4m])&start=1515721965.194&end=1515722565.194'
"values": [
[1515721965.194, "0"],
[1515722205.194, "1"],
[1515722445.194, "0"]
],
Run Code Online (Sandbox Code Playgroud)
但是Grafana(以及GUI中的普罗米修斯)倾向于step在查询中设置不同,对于不熟悉普罗米修斯内部工作的人,我会得到一个非常意外的结果.
curl -gs 'localhost:9090/api/v1/query_range?step=15&query=increase(signups_count[4m])&start=1515721965.194&end=1515722565.194'
... skip ...
[1515722190.194, "0"],
[1515722205.194, "1"],
[1515722220.194, "2"],
[1515722235.194, "2"],
... skip ...
Run Code Online (Sandbox Code Playgroud)
知道这increase()只是函数的特定用例的语法糖rate(),我想这是应该如何工作的情况.
如何避免这种情况?我如何让Prometheus/Grafana给我看一些,两次两次,大部分时间?除了通过增加刮擦间隔(这将是我的最后手段).
我知道普罗米修斯不是一种精确的工具,所以如果我不是在任何时候都有一个好的数字,但大部分时间都可以. …
我想计算两个指标的比率,但我没有得到任何数据...
我有一些指标,例如:
fs_bytes{filesystem="/var",instance="localhost:9108",job="graphite",metric="Used"} 50.0
fs_bytes{filesystem="/var",instance="localhost:9108",job="graphite",metric="Total"} 100.0
Run Code Online (Sandbox Code Playgroud)
当我尝试执行任何操作(设备、乘法、加法、减法)时,例如:
fs_bytes{instance="localhost:9108",metric="Used"} / fs_bytes{instance="localhost:9108",metric="Total"}
Run Code Online (Sandbox Code Playgroud)
普罗米修斯返回:
no data
Run Code Online (Sandbox Code Playgroud)
当我在 Prometheus 表达式浏览器中单独查询每个指标时,我确实得到了指标值。
怎么了?
基本上我正在寻找相当于 1.x storage.local.target-heap-size 的东西。
我有一个 prometheus 应用程序(在 6 核、32G 的盒子中运行),它从 2000 个虚拟机中提取主机指标。刮痧间隔5分钟。
在几分钟内,我的 RAM 使用量增加到 29-30GB,后来在 10-15 分钟内,它因 OOM 或服务器从 UI 不可用而死亡。
我们可以通过任何方式告诉普罗米修斯使用定义的最大 RAM 吗?
我正在使用这个图表:https ://github.com/helm/charts/tree/master/stable/prometheus-mongodb-exporter
该图表需要MONGODB_URI环境变量或mongodb.uri填充在values.yaml文件中,因为这是一个连接字符串,我不想将其签入 git。我正在考虑 kubernetes 秘密并提供来自 kubernetes 秘密的连接字符串。我一直未能成功找到此问题的解决方案。
我还尝试创建另一个舵图并将其用作该图表的依赖项并为MONGODB_URIfrom提供值secrets.yaml,但这也不起作用,因为在prometheus-mongodb-exporter图表中MONGODB_URI定义为所需值,然后将其传递到secrets.yaml该图表中的文件中,因此依赖项因此图表永远不会被安装。
实现这一目标的最佳方法是什么?