1.静态配置(static config)示例
尽管Promtail可能是以Prometheus服务发现代码命名的,但该代码同样适用于在虚拟机或裸机上直接追踪没有容器或容器环境的日志,并且能够很好地发挥作用。
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /var/log/positions.yaml # Promtail需要有对此位置的写入权限。
clients:
- url: http://ip_or_hostname_where_Loki_run:3100/loki/api/v1/push
scrape_configs:
- job_name: system
pipeline_stages:
static_configs:
- targets:
- localhost
labels:
job: varlogs # `job`标签在Prometheus中非常常见,对于关联指标(metrics)和日志非常有用。
host: yourhost # `host`标签将有助于区分来自此机器和其他机器的日志
__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)的静态配置示例
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /var/log/positions.yaml # 此位置需要可被 Promtail 写入。
clients:
- url: http://ip_or_hostname_where_Loki_run:3100/loki/api/v1/push
scrape_configs:
- job_name: system
pipeline_stages:
static_configs:
- labels:
job: varlogs # 在 Prometheus 中,`job` 标签是相当标准的,对于关联指标(metrics)和日志非常有用。
host: yourhost # `host` 标签将有助于识别来自本机的日志与其他机器的日志。
__path__: /var/log/*.log # 路径匹配使用了第三方库:https://github.com/bmatcuk/doublestar3.Journal配置示例
这个例子从systemd日志中读取条目:
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://ip_or_hostname_where_loki_runs:3100/loki/api/v1/push
scrape_configs:
- job_name: journal
journal:
max_age: 12h
labels:
job: systemd-journal
relabel_configs:
- source_labels: ['__journal__systemd_unit']
target_label: 'unit'4.Journal配置示例
这个例子将Promtail启动为一个syslog接收器,并可以通过TCP接收Promtail中的syslog条目:
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://loki_addr:3100/loki/api/v1/push
scrape_configs:
- job_name: syslog
syslog:
listen_address: 0.0.0.0:1514
labels:
job: "syslog"
relabel_configs:
- source_labels: ['__syslog_message_hostname']
target_label: 'host'5.Push Config示例
这个例子将Promtail启动为一个Push接收器,并可以接收来自其他Promtail实例或Docker Logging Driver的日志:
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://ip_or_hostname_where_Loki_run:3100/loki/api/v1/push
scrape_configs:
- job_name: push1
loki_push_api:
server:
http_listen_port: 3500
grpc_listen_port: 3600
labels:
pushserver: push1请注意,必须提供job_name,并且在多个loki_push_api的scrape_configs中必须是唯一的,它将用于注册指标。
创建一个新的服务器实例,所以http_listen_port和grpc_listen_port必须与Promtail服务器配置部分不同(除非禁用)。
如果不使用httpgrpc,您可以将grpc_listen_port设置为0,以便分配一个随机端口。