Grafana Loki笔记05: Promtail配置示例
2023-05-26
1.静态配置(static config)示例 #
尽管Promtail可能是以Prometheus服务发现代码命名的,但该代码同样适用于在虚拟机或裸机上直接追踪没有容器或容器环境的日志,并且能够很好地发挥作用。
1server:
2 http_listen_port: 9080
3 grpc_listen_port: 0
4
5positions:
6 filename: /var/log/positions.yaml # Promtail需要有对此位置的写入权限。
7
8clients:
9 - url: http://ip_or_hostname_where_Loki_run:3100/loki/api/v1/push
10
11scrape_configs:
12 - job_name: system
13 pipeline_stages:
14 static_configs:
15 - targets:
16 - localhost
17 labels:
18 job: varlogs # `job`标签在Prometheus中非常常见,对于关联指标(metrics)和日志非常有用。
19 host: yourhost # `host`标签将有助于区分来自此机器和其他机器的日志
20 __path__: /var/log/*.log # 路径匹配使用第三方库: https://github.com/bmatcuk/doublestar
如果你在轮转日志文件,请小心使用类似*.log
的通配符模式,确保它不会匹配到已轮转的日志文件。例如,如果你每天将日志从server.log
移动到同一个目录下的server.01-01-1970.log
,那么使用通配符搜索模式*.log
的静态配置将会捕捉到这个新文件并读取它,从而导致整天的日志重新被摄取。
上面__path__
文件路径的匹配使用了第三方库https://github.com/bmatcuk/doublestar,关于具体的匹配模式可以查看doublestart的文档。
2.不包含目标(targets)的静态配置示例 #
1server:
2 http_listen_port: 9080
3 grpc_listen_port: 0
4
5positions:
6 filename: /var/log/positions.yaml # 此位置需要可被 Promtail 写入。
7
8clients:
9 - url: http://ip_or_hostname_where_Loki_run:3100/loki/api/v1/push
10
11scrape_configs:
12 - job_name: system
13 pipeline_stages:
14 static_configs:
15 - labels:
16 job: varlogs # 在 Prometheus 中,`job` 标签是相当标准的,对于关联指标(metrics)和日志非常有用。
17 host: yourhost # `host` 标签将有助于识别来自本机的日志与其他机器的日志。
18 __path__: /var/log/*.log # 路径匹配使用了第三方库:https://github.com/bmatcuk/doublestar
3.Journal配置示例 #
这个例子从systemd日志中读取条目:
1server:
2 http_listen_port: 9080
3 grpc_listen_port: 0
4
5positions:
6 filename: /tmp/positions.yaml
7
8clients:
9 - url: http://ip_or_hostname_where_loki_runs:3100/loki/api/v1/push
10
11scrape_configs:
12 - job_name: journal
13 journal:
14 max_age: 12h
15 labels:
16 job: systemd-journal
17 relabel_configs:
18 - source_labels: ['__journal__systemd_unit']
19 target_label: 'unit'
4.Journal配置示例 #
这个例子将Promtail启动为一个syslog接收器,并可以通过TCP接收Promtail中的syslog条目:
1server:
2 http_listen_port: 9080
3 grpc_listen_port: 0
4
5positions:
6 filename: /tmp/positions.yaml
7
8clients:
9 - url: http://loki_addr:3100/loki/api/v1/push
10
11scrape_configs:
12 - job_name: syslog
13 syslog:
14 listen_address: 0.0.0.0:1514
15 labels:
16 job: "syslog"
17 relabel_configs:
18 - source_labels: ['__syslog_message_hostname']
19 target_label: 'host'
5.Push Config示例 #
这个例子将Promtail启动为一个Push接收器,并可以接收来自其他Promtail实例或Docker Logging Driver的日志:
1server:
2 http_listen_port: 9080
3 grpc_listen_port: 0
4
5positions:
6 filename: /tmp/positions.yaml
7
8clients:
9 - url: http://ip_or_hostname_where_Loki_run:3100/loki/api/v1/push
10
11scrape_configs:
12- job_name: push1
13 loki_push_api:
14 server:
15 http_listen_port: 3500
16 grpc_listen_port: 3600
17 labels:
18 pushserver: push1
请注意,必须提供job_name
,并且在多个loki_push_api
的scrape_configs
中必须是唯一的,它将用于注册指标。
创建一个新的服务器实例,所以http_listen_port
和grpc_listen_port
必须与Promtail服务器配置部分不同(除非禁用)。
如果不使用httpgrpc
,您可以将grpc_listen_port
设置为0,以便分配一个随机端口。