即使指定“retention_period: 12h”,“12h”旧日志也不会删除,因此我面临存储问题,因为日志不会删除。请帮我配置
loki:
enabled: true
isDefault: true
table_manager:
retention_deletes_enabled: true
retention_period: 12h
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用相同的 docker compose 将我的应用程序登录到 grafana/loki/promtail 中,连接到 loki 时出现以下错误:
本地主机:3100 -> 404 页面未找到
当我尝试将其挂接到grafana时:
URL [http://loki:3100 ]-> Loki:错误网关。502错误的网关
我发现你必须在 grafana 中输入容器的名称才能检测到它,但我得到了同样的错误。
promtail 和 loki 容器在其日志中均未显示任何错误。
version: "3.7"
services:
my-service-to-log:
image: example:latest
ports:
- "8080:8080"
- "8443:8443"
loki:
image: grafana/loki:2.4.1
ports:
- "3100:3100"
volumes:
- "C:/path/loki-config.yaml:/etc/loki/local-config.yaml"
command: -config.file=/etc/loki/local-config.yaml
promtail:
image: grafana/promtail:2.4.1
volumes:
- "C:/path/promtail-config.yaml:/etc/promtail/config.yml"
- /var/log:/var/log
command: -config.file=/etc/promtail/config.yml
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
Run Code Online (Sandbox Code Playgroud)
我的 loki-config.yaml
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
common:
path_prefix: /tmp/loki
storage:
filesystem:
chunks_directory: /tmp/loki/chunks …Run Code Online (Sandbox Code Playgroud) 我在 Docker 中运行 Loki 进行测试,最近从 Promtail 和 Loki 容器中收到以下错误:
level=warn ts=2022-02-18T09:41:39.186511145Z caller=client.go:349 component=client host=loki:3100 msg="error sending batch, will retry" status=429 error="server returned HTTP status 429 Too Many Requests (429): Maximum active stream limit exceeded, reduce the number of active streams (reduce labels or reduce label values), or contact your Loki administrator to see if the limit can be increased"
Run Code Online (Sandbox Code Playgroud)
我尝试在 Loki 配置中增加限制设置 (ingestion_rate_mb和)。ingestion_burst_size_mb
我设置了两个 Promtail 作业 - 一个作业从本地目录(当前为 8TB 并且不断增加)提取 MS Exchange 日志,另一个作业从 syslog-ng 获取假脱机日志。
我读到减少标签有帮助。但我只使用两个标签。
我使用的是最新版本:
在 Windows 10 中。
所以我只是启动这些应用程序的bin文件。我在 Grafana 面板中获取了logfile.log 。

日志文件中有标记为 [INFO] 的行。
还可能有一个[ERROR]标记。我希望能够过滤面板中的行。例如,如何在面板中只显示标有[ERROR]的行?
Promtail、Grafana、Loki 版本是 2.4.1。运行的是 Kubernetes。
我正在关注文档。
我期望错误堆栈跟踪将出现在 grafana/loki 中的单个条目中,但每一行都是一个单独的条目。我是否缺少一些配置?
# cat /etc/promtail/promtail.yaml
server:
log_level: info
http_listen_port: 3101
client:
url: http://***-loki:3100/loki/api/v1/push
positions:
filename: /run/promtail/positions.yaml
scrape_configs:
# See also https://github.com/grafana/loki/blob/master/production/ksonnet/promtail/scrape_config.libsonnet for reference
- job_name: kubernetes-pods
pipeline_stages:
- multiline:
firstline: ^\x{200B}\[
max_lines: 128
max_wait_time: 3s
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels:
- __meta_kubernetes_pod_controller_name
regex: ([0-9a-z-.]+?)(-[0-9a-f]{8,10})?
action: replace
target_label: __tmp_controller_name
- source_labels:
- __meta_kubernetes_pod_label_app_kubernetes_io_name
- __meta_kubernetes_pod_label_app
- __tmp_controller_name
- __meta_kubernetes_pod_name
regex: ^;*([^;]+)(;.*)?$
action: replace
target_label: app
- source_labels:
- …Run Code Online (Sandbox Code Playgroud) 我已经安装了 Grafana、Loki、Promtail 和 Prometheus 以及grafana/loki-stack.
我还使用Nginx Helm Chart设置了 Nginx 。
Promtail 正在将日志很好地摄取到 Loki 中,但我想自定义日志的外观。具体来说,我想删除日志的一部分,因为它在尝试使用logfmtor json(Error: LogfmtParserErr和Error: JsonParserErr分别)解析它时会产生错误。
日志如下所示:
2022-02-21T13:41:53.155640208Z stdout F timestamp=2022-02-21T13:41:53+00:00 http_request_method=POST http_response_status_code=200 http_response_time=0.001 http_version=HTTP/2.0 http_request_body_bytes=0 http_request_bytes=63
Run Code Online (Sandbox Code Playgroud)
我想删除它所说的部分,stdout F这样日志将如下所示:
2022-02-21T13:41:53.155640208Z timestamp=2022-02-21T13:41:53+00:00 http_request_method=POST http_response_status_code=200 http_response_time=0.001 http_version=HTTP/2.0 http_request_body_bytes=0 http_request_bytes=63
Run Code Online (Sandbox Code Playgroud)
我发现在摄取方面可能是 Promtail 的问题,但是是否也可以在 Loki 中进行 LogQL 查询来替换该字符串?如何设置 Promtail 配置来实现所需的行为?
启动 promtail 客户端时,出现错误: component=client host=loki:3100 msg="发送批处理时出错,将重试" status=500 error="服务器返回 HTTP 状态 500 内部服务器错误 (500): rpc 错误: code = ResourceExhausted desc = grpc:收到的消息大于最大值(6780207 与 4194304)”
promtail 配置
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: 'http://loki:3100/loki/api/v1/push'
scrape_configs:
- job_name: server-log
pipeline_stages:
static_configs:
- targets:
- localhost
labels:
job: server-log
__path__: /opt/log/*.log
__path_exclude__: /opt/log/jck_*,*.log
Run Code Online (Sandbox Code Playgroud)
我尝试开始更改服务器上的限制,并使用参数运行 promtail:
/usr/local/bin/promtail-linux-amd64 -config.file=/etc/config-promtail.yml -server.grpc-max-recv-msg-size-bytes 16777216 -server.grpc-max-concurrent-streams 0 -server.grpc-max-send-msg-size-bytes 16777216 -limit.readline-rate-drop -client.batch-size-bytes 2048576
但根据我发现的情况来看,这是一个 grpc 协议错误,或者更确切地说,是传输消息的大小错误,其中最大为 4 mb
我的任务是为大约 70 个容器配置 Docker 日志监控。将所有日志合并到一个面板中并不理想,尤其是在压力测试和监控 Docker 应用程序期间。我希望能够在面板中选择 Docker 容器应用程序并查看相应的日志。我已经实现了这一点,但问题是容器名称是加密的,我需要解密它们。
我的问题是:如何使用 Loki 数据源和 Promtail 解密容器名称?
此外,我注意到 Prometheus 数据源显示解密的容器名称,但 Loki 数据源则不显示。这是我对两者的配置:
另外,我像普通应用程序一样运行 Loki 和 Promtail,并配置了 systemd 守护进程。洛基:
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
ingester:
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 5m
chunk_retain_period: 30s
schema_config:
configs:
- from: 2021-03-08
store: boltdb
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb:
directory: /tmp/loki/index
Run Code Online (Sandbox Code Playgroud)
宣传尾声:
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: …Run Code Online (Sandbox Code Playgroud) grafana-loki ×8
promtail ×8
grafana ×4
docker ×3
logging ×2
kubernetes ×1
monitoring ×1
nginx ×1
prometheus ×1
purge ×1
retention ×1