我每 30 秒使用 Prometheus 抓取一次指标。当我检查 Prometheus 图表时:
elasticsearch_jvm_memory_max_bytes{}[2m]
我可以看到有 4 个值的范围向量:
2095185920 @1626523484.001
2095185920 @1626523514.001
2095185920 @1626523544.001
2095185920 @1626523574.001
Run Code Online (Sandbox Code Playgroud)
这是有道理的,30s * 4 个值 = 2m。当我在 Grafana 中运行相同的命令时,我可以每15 秒看到一次数据点:

在上面的示例中,14:43:30、14:43:45和14:44:00中有 3 个数据点。我可以通过查询分辨率1/1看到这一点。如果我将分辨率设置为1/2,图形看起来很正常,每30s就有一个数据点。我在 grafana 中读到了有关分辨率的信息,也许我没有正确理解,但我希望 1/1 应该是来自普罗米修斯的每 1 个数据点在面板中的一个点。1/2 应该在面板中显示 1 个点,每 2 个来自普罗米修斯的数据点等...有人可以解释一下,我错过了什么或者为什么 grafana 会这样工作(带有一些例子)?
格拉法纳:v7.3.6
谢谢。
我有test带测量的influxdb 数据库:
name: mes1
time Amount Buy_order_id Price
---- ------ ------------ -----
1529832177822 0.02294 132868375 130117.83
Run Code Online (Sandbox Code Playgroud)
我想在 Grafana 中制作图表,但所有数据都在 1970 年。我还有其他测量:
name: cpu_load_short
time Bool_value Float_value Int_value String_value host region
---- ---------- ----------- --------- ------------ ---- ------
1257894000000000000 true 0.64 3 Text server01 us-west
Run Code Online (Sandbox Code Playgroud)
这次效果很好。我发现,测量cpu_load_short中的时间存储在 ns 中,但测量mes1中的数据存储在 ms 中。
我mes1收到来自 websocket 的时间。时间cpu_load_short是从 python 生成的:
datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')
Run Code Online (Sandbox Code Playgroud)
所有数据都通过 influxdb-python 发送到 influxdb。我尝试调整时间mes1并在数字末尾添加六个零:
'1529832177822' -> '1529832177822000000'
Run Code Online (Sandbox Code Playgroud)
但我收到了:
OverflowError: signed integer is greater …Run Code Online (Sandbox Code Playgroud) 我想仅在设置发布标签时在 master 分支上构建 docker 映像。这是我的.gitlab.ci:
build:
rules:
- if: '$CI_COMMIT_TAG != null && $CI_COMMIT_REF_NAME == "master"'
script:
- echo "Building $IMAGE:${CI_COMMIT_TAG}"
Run Code Online (Sandbox Code Playgroud)
这不起作用,我合并到 master 和release标签,但构建作业甚至没有开始。
我也尝试过only部分:
build:
only:
- master
- tags
script:
- echo "Building $IMAGE:${CI_COMMIT_TAG}"
Run Code Online (Sandbox Code Playgroud)
即使CI_COMMIT_TAG不存在,它也会每次运行。CI_COMMIT_TAG有没有办法,仅当分支上存在时才强制运行作业master?
我们使用 Prometheus 来抓取指标并将其保留 8 小时(对于更长时间,我们使用 Victoria Metrics)。我试图找出,对于当前的系列数量,Prometheus 应该有多少 MEM。我发现Prometheus 2.x 需要多少 RAM 来进行基数和摄取?用计算器。从这篇文章中,我有一些不清楚的地方:
max_over_time(prometheus_tsdb_head_series[1d])查询的结果。就我而言,有多个结果,所以我用 求和sum(max_over_time(prometheus_tsdb_head_series[1d]))。这种做法对吗?{a="123", b="456"}算作2。{a="123", b="456"}和{a="123", b="abc"}等于 2 个 uniq 标签对{ "__name__": "up", "app_version": "0509b54", "instance": "1", "job": "event-metric-exporterd", "stack_version": "MR" }。我删除了空格和{, }。所以最终的字符串是"__name__":"up","app_version":"0509b54","instance":"1","job":"event-metric-exporterd","stack_version":"MR". 然后,我对其进行编码并utf-8获取字符串长度,在本例中为 106。我对每个 uniq 标签执行此过程并计算平均值。这是正确的吗?rate(prometheus_tsdb_compaction_chunk_size_bytes_sum[1d])/rate(prometheus_tsdb_compaction_chunk_samples_sum[1d]) …我正在尝试配置记录规则,根据文档,尚不清楚如何设置它。
我在目录中配置了rules.yml文件/loki/rules。根据文档记录规则,我实现了自己的规则:
name: MyRules
interval: 1m
rules:
- record: generator:requests:rate2m
expr: |
sum(
rate({service="generator_generator"}[2m])
)
labels:
cluster: "something"
Run Code Online (Sandbox Code Playgroud)
首先,这不会产生任何结果,Loki 中不会记录错误格式,Prometheus 中不会有任何指标(远程写入)。之后,我根据 doc Ruler storagerules-temp将此文件也复制到目录和目录。从文档中,我不确定该文件应该位于哪里,所以我将其复制到各处。结果是一样的——Loki 中没有日志,Prometheus 中也没有任何日志。/loki/rules/fake/
休息一天后,我启动了 Loki 并找出日志:
2022-11-03T08:24:24.062210590Z level=error ts=2022-11-03T08:24:24.061854756Z caller=ruler.go:497 msg="unable to list rules" err="failed to list rule groups for user fake: failed to list rule group for user fake and namespace rules.yml: error parsing /loki/rules/fake/rules.yml: /loki/rules/fake/rules.yml: yaml: unmarshal errors:\n line 1: field name not found in type …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 docker doc安装 buildx 。首先,我尝试使用 Dckerfile 安装。我不得不说,我不知道如何按照此步骤安装它,这部分的说明非常差。所以我选择选项手动下载。
我下载了buildx-v0.10.2.darwin-amd64二进制文件,将其复制到$HOME/.docker/cli-plugins并将其重命名为docker-buildx并使其可执行:
$ ll $HOME/.docker/cli-plugins/docker-buildx
-rwxr-xr-x 1 root root 55984928 Feb 14 20:05 /root/.docker/cli-plugins/docker-buildx*
Run Code Online (Sandbox Code Playgroud)
所有这些步骤均来自文档。
下一步,我想将 Buildx 设置为默认构建器。根据文档,我应该运行,docker buildx install但它引发了异常'buildx' is not a docker command:
$ docker buildx install
docker: 'buildx' is not a docker command.
See 'docker --help'
Run Code Online (Sandbox Code Playgroud)
这些说明对我来说非常不清楚,不知道如何解决。我发现了这个,但它的步骤基本相同,所以它没有帮助。
有人可以帮我找出我缺少什么吗?
$ uname -m
x86_64
Run Code Online (Sandbox Code Playgroud)
Docker版本23.0.1,构建a5ee5b1
我使用的是ES 6.1.我试图将默认的分片数从5改为,例如,6.是否有可能以某种方式?当我在elasticsearch.yaml文件下面添加行时,ES将无法启动.
index.number_of_replicas : 1
index.number_of_shards: 6
Run Code Online (Sandbox Code Playgroud)
错误如下所示:
在节点级配置上找到索引级别设置.
由于elasticsearch 5.x索引级别设置不能在诸如elasticsearch.yaml之类的节点配置中设置,在系统属性或命令行参数中.为了升级所有索引,必须通过/ $ {index}/_设置更新设置API.除非所有设置都是动态的,否则必须关闭所有索引才能应用将来创建的upgradeIndices应使用索引模板来设置默认值.
请确保通过执行以下内容更新所有索引的所有必需值:
curl -XPUT'http :// localhost:9200/_all/_settings?preserve_existing = true'- d'{"index.number_of_replicas":"1","index.number_of_shards":"6"}'
我的理解:
如果我没有索引或所有索引都关闭,我可以通过以下方式更改默认值:
curl -XPUT 'http://localhost:9200/_all/_settings?preserve_existing=true' -d '{
"index.number_of_replicas" : "1",
"index.number_of_shards" : "6"
}'
Run Code Online (Sandbox Code Playgroud)
否则我无法更改默认的分片数.
我知道在创建索引后我无法更改分片数.我可以像这样创建索引
curl -XPUT "$(hostname -I):9200/myindex/_settings?pretty" -H 'Content-Type: application/json' -d'
{
"index" : {
"number_of_shards" : 2,
"number_of_replicas" : 0
}
}
'
Run Code Online (Sandbox Code Playgroud)
我正在从Logstash向ES发送数据,并自动创建索引,名称取决于日期和类型,因此我无法手动创建每个索引.
我的问题是:
ZFS池可能包含数据集(文件系统,快照等)或卷.ZFS卷就像块设备,但我不明白池和文件系统之间的区别.当我创建pool1时zpool create pool1 sda sdb sdc, zpool create pool1/fs我可以在df -h输出中看到两个新行pool1和pool1/fs.zfs list输出相同.现在,我可以将文件复制到池中并转换为fs.我可以在两者上设置重复数据删除或压缩.那么区别是什么呢?我为什么要/不应该在池中创建文件系统?如果可能,请提供一些使用示例.
我有这个代码:
a = ['animal', 'dog', 'car', 'bmw', 'color', 'blue']
a_iter = iter(a)
print(a)
print(a_iter)
print(dict(zip(a,a)))
print(dict(zip(a_iter,a_iter)))
Run Code Online (Sandbox Code Playgroud)
输出是:
['animal', 'dog', 'car', 'bmw', 'color', 'blue']
<list_iterator object at 0x7f2d98b756d8>
{'dog': 'dog', 'car': 'car', 'animal': 'animal', 'color': 'color', 'blue': 'blue', 'bmw': 'bmw'}
{'car': 'bmw', 'color': 'blue', 'animal': 'dog'}
Run Code Online (Sandbox Code Playgroud)
我不understad,为什么拉链用不同的方式工作a_iter比a.做iter()什么,列表是可迭代的,为什么要使用iter()?有人可以用一些很好的例子向我解释这个吗?我用Google搜索,但我仍然不明白.
我实现了自己的 docker 注册表,并成功从本地主机(推送)和服务器(拉取)对其进行了测试。现在,我正在尝试从 CI 管道构建并推送图像:
build:
image: docker:18
services:
- docker:dind
stage: build
script:
- echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
- docker pull $CI_REGISTRY/website:latest
- docker build -t $CI_REGISTRY/website:latest .
- docker push $CI_REGISTRY/website:latest
Run Code Online (Sandbox Code Playgroud)
我能够登录注册表:
$ echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
Run Code Online (Sandbox Code Playgroud)
当我尝试提取我的网站:最新图像时,我收到错误:
$ docker pull $CI_REGISTRY/website:latest
Error …Run Code Online (Sandbox Code Playgroud) 我正在为 Prometheus 编写一些检查,我想知道我可以在模板中使用哪些变量。我正在使用$labels.container,但是$labels.service和$labels.instance不起作用。例如,我在普罗米修斯查询中使用实例,但无法在模板中使用它。如何找到所有标签或可以在模板中使用的其他变量?我实现了用 python 编写的自己的导出器,用于控制 docker swarm 中的哪些容器不断重新启动。
我是 Prometheus 和 Alertmanager 的新手,在我看来,文档看起来不太清楚。谢谢。
prometheus ×3
docker ×2
grafana ×2
buildx ×1
gitlab ×1
gitlab-ci ×1
grafana-loki ×1
influxdb ×1
iterator ×1
python ×1
python-3.5 ×1
python-3.x ×1
zfs ×1