dor*_*and 5 grafana grafana-loki
我正在尝试配置记录规则,根据文档,尚不清楚如何设置它。
我在目录中配置了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 rulefmt.RuleGroups\n line 2: field interval not found in type rulefmt.RuleGroups\n line 3: field rules not found in type rulefmt.RuleGroups"
Run Code Online (Sandbox Code Playgroud)
这个日志以前不存在,即使我重新启动Loki,它也不存在,不明白为什么。但我假设 Loki 无法解析我的规则文件。我发现了corterx-tool用于验证 Loki 规则。经过几次运行后,我最终得到了新的rules.yml文件:
namespace: rules
groups:
- name: MyRules
interval: 1m
rules:
- record: generator:requests:rate1m
expr: |-
sum(rate({service="generator_generator"}[2m]))
labels:
cluster: something
Run Code Online (Sandbox Code Playgroud)
它与文档中的完全不同,但看起来没问题:
$ cortextool rules lint --backend=loki rules.yml
INFO[0000] SUCCESS: 1 rules found, 0 linted expressions
Run Code Online (Sandbox Code Playgroud)
在取得这个小小的成功之后,我再次运行 Loki,但 Loki 日志或 Prometheus 中没有结果。我什至尝试设置错误的普罗米修斯远程写入地址,但 Loki 没有记录有关此错误的任何信息。
我当前的 Loki 标尺配置:
ruler:
alertmanager_url: http://localhost:9093
remote_write:
enabled: true
client:
url: http://prometheus:9090/api/v1/write
Run Code Online (Sandbox Code Playgroud)
Prometheus 以默认配置运行。
版本:洛基:2.6.1 普罗米修斯:v2.39.1
问题:
/rules规则文件应该位于哪里以及,/rules-temp和之间的区别是什么/rules/<tenant-id>?感谢您的任何提示。
问:规则文件应该放在哪里?/rules、/rules-temp 和 /rules/ 之间有什么区别?
答:这取决于您的统治者的存储后端。您将路径设置为:
ruler:
storage:
type: local
local:
directory: <rules-path>
Run Code Online (Sandbox Code Playgroud)
然后,如果您有一个多租户集群,则规则文件应存储在子文件夹中<rules-path>/<tenant-id>。如果您不使用多租户,则规则文件应位于<rules-path>/fake.
问:规则和规则文件的格式是什么?
答:格式和Prometheus中的一样,但是表达式是Loki的LogQL。
问:可以有多个文件吗?
答:是的,但是我没有使用本地文件系统作为统治者的存储,所以我无法提供更多细节。我的 Loki 集群是一个多租户集群,并使用 S3 存储后端作为标尺。在这种设置中,每个租户在 S3 存储桶中都有一个单独的文件夹来存放其规则,他们通过 Loki Ruler API上传规则,这也可以使用 cortextool 来完成。通过 API 上传规则时存在限制 - 每个请求一个规则组。
问:为什么 Loki 日志中没有出现有关规则的日志(Prometheus url 错误、rules.yml 格式错误)?
答:如果您设置log_level: debug了标尺,您应该能够在日志中看到与记录/警报规则处理相关的消息。
问:如何在 Loki 中正确配置规则(记录和警报)?
答:就像我之前提到的,它与 Prometheus 中的格式相同,但查询语言不同。
问:如何调试此配置和设置?基本上,我不知道在哪里检查是否出现问题,没有日志或任何相关信息。
答:我可以给你几个想法:
http://<loki-ruler>:<loki-port>/loki/api/v1/rules。| 归档时间: |
|
| 查看次数: |
3642 次 |
| 最近记录: |