wor*_*rum 3 monitoring docker grafana grafana-loki promtail
我的任务是为大约 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: http://localhost:3100/loki/api/v1/push
scrape_configs:
- job_name: cadvisor
static_configs:
- targets: ['localhost:8080/containers/']
labels:
job: cadvisonr
__path__: /containers
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*log
- job_name: containers
static_configs:
- targets:
- localhost
labels:
job: containerlogs
__path__: /var/lib/docker/containers/*/*log
pipeline_stages:
- json:
expressions:
output: log
stream: stream
attrs:
- json:
expressions:
tag:
source: attrs
- regex:
expression: (?P<container_name>(?:[^|]*[^|]))
source: tag
- timestamp:
format: RFC3339Nano
source: time
- labels:
# tag:
stream:
container_name:
- output:
source: output
Run Code Online (Sandbox Code Playgroud)
另外,我知道 loki-driver-docker 插件,但我尝试运行它,但对我来说没有任何改变,而且文档很糟糕,它说只需运行它,几乎没有关于配置或如何检查它是否正常工作的信息。
因此,我很高兴听到任何想法和建议。论坛是我解决这个问题的最后机会。
它的工作原理如下:
<something>_configsstatic_config只能看到文件Promtail 配置可能如下所示:
- job_name: "docker"
docker_sd_configs:
- host: "unix:///var/run/docker.sock"
refresh_interval: "1s"
relabel_configs:
- source_labels: ['__meta_docker_container_name']
target_label: "container_name"
- source_labels: ['__meta_docker_container_id']
target_label: "container_id"
# etc.
Run Code Online (Sandbox Code Playgroud)
然后在grafana-loki中你可以使用LogQL语言过滤日志,例如:
logcli '{container_name="something"}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1456 次 |
| 最近记录: |