菜单

这是文档下一个版本的洛基。最新的稳定版本,去最新版本

目标文件发现

Promtail发现日志文件的位置和从他们经过提取标签scrape_configs部分配置YAML。语法是相同的普罗米修斯用

scrape_configs包含一个或多个条目,每个发现的目标(即执行。,每一个新的豆荚里的每个容器中运行的实例):

scrape_configs: job_name:本地static_configs: -…- job_name: kubernetes kubernetes_sd_config: -…

如果有超过一个刮配置部分匹配你的日志,你会得到重复的条目的日志发送不同的流可能稍微不同的标签。

有不同类型的标签出现在Promtail:

  • 开始标签__(两个下划线)内部标签。他们通常来自动态的来源,如服务发现。一旦重新标记完成,他们从标签集。坚持内部标签所以他们送到Grafana洛基,重命名他们不开始__。看到重新确认为更多的信息。

  • 开始标签__meta_kubernetes_pod_label_ *都是“meta标签”,生成基于Kubernetes吊舱的标签。

    例如,如果您的Kubernetes舱有一个标签的名字设置为foobar,那么scrape_configs节将收到一个内部标签__meta_kubernetes_pod_label_name值设置为foobar

  • 其他标签开始__meta_kubernetes_ *基于其他Kubernetes元数据存在,如豆荚的命名空间(__meta_kubernetes_namespace)或容器内舱(的名称__meta_kubernetes_pod_container_name)。指普罗米修斯文档的完整列表Kubernetes meta标签。

  • __path__标签是一个特殊的标签,Promtail使用后发现找出文件读取的位置。例如,允许通配符/var/log/*.log所有文件日志扩展在指定的目录中,和/var/log/**/*.log匹配的文件和目录递归地。选项的完整列表查看的文档图书馆Promtail用途。

  • __path_exclude__标签是另一个特殊标签Promtail使用后发现,排除文件发现使用的一个子集__path__从阅读在当前scrape_config块。它使用相同的图书馆允许使用通配符和水珠模式。

  • 标签文件名添加为每个文件中发现的__path__确保流的独特性。它将文件的绝对路径线被读取。

Kubernetes发现

虽然Promtail可以使用Kubernetes API来发现目标吊舱,它只能从豆荚读取日志文件相同的节点上运行一个Promtail上运行。Promtail寻找一个__host__在每个目标并验证标签,它设置为与Promtail(使用相同的主机名美元的主机名或主机名报道的内核如果环境变量没有设置)。

这意味着任何时候Kubernetes使用服务发现,必须有一个relabel_config创建中间标签__host____meta_kubernetes_pod_node_name:

relabel_configs: source_labels: [' __meta_kubernetes_pod_node_name '] target_label:“__host__”

看到重新确认为更多的信息。有关如何配置服务发现的更多信息查看Kubernetes服务发现配置

《刮(Linux)

在系统上systemd从《华尔街日报》,Promtail还支持阅读。与文件中定义的刮static_configs节,刮是定义在一个杂志上杂志节:

scrape_configs: job_name:期刊杂志:json:假max_age: 12 h路径:/var/log/journal匹配:_TRANSPORT =内核标签:工作:systemd-journal relabel_configs: - source_labels: [‘__journal__systemd_unit] target_label:“单位”

中定义的所有字段杂志部分是可选的,只是这里提供参考。的max_age确保没有旧条目字段比指定的时间将被发送到洛基;这绕过了“太老”错误。的路径字段告诉Promtail读日记。标签映射定义的常数列表标签添加到每一个分录Promtail读取。的匹配字段添加过滤器》杂志上。如果指定了多个过滤器匹配的不同领域,都过滤日志条目,如果两个过滤器适用于相同的字段,然后他们会自动匹配作为替代品。

json字段被设置为真正的,消息来自《华尔街日报》将通过管道为JSON,保持原来的所有字段的日记帐分录。这是非常有用的,当你不想指数某些领域但你仍然想知道其中包含的值。

默认情况下,Promtail读《华尔街日报》通过的/var/log/journal/运行/日志/杂志路径。如果运行Promtail码头工人的容器内,适合您的发行版的路径应该绑定安装内部Promtail连同绑定/etc/machine-id。绑定安装/etc/machine-id道路的同名杂志的读者需要知道哪些具体的阅读杂志。例如:

码头工人运行\ - v /var/log/journal/: / var / log /杂志/ \ - v /跑步/日志/杂志/:/运行/日志/杂志/ \ - v /etc/machine-id: / etc / machine-id \ grafana / promtail:最新\ -config.file = /道路/ / config / file.yaml

当Promtail阅读的杂志,它带来了在各个领域的前缀__journal_内部标签。就像在上面的示例中,_SYSTEMD_UNIT领域的杂志变成了一个标签单位通过relabel_configs。看到重新确认更多的信息,也看的systemd手册页《华尔街日报》的列表字段暴露的。

这里有一个例子SYSTEMD_UNIT,主机名,SYSLOG_IDENTIFIER是国家用于洛基。

请记住,标签前缀__会下降,所以需要重新确认这些标签。

- job_name: systemd-journal日报:标签:集群:ops-tools1工作:默认/ systemd-journal路径:/var/log/journal relabel_configs: - source_labels:——__journal__systemd_unit target_label: systemd_unit - source_labels:——__journal__hostname target_label:节点名- source_labels:——__journal_syslog_identifier target_label: syslog_identifier

Windows事件日志

在Windows Promtail支持读取事件日志。可以配置使用Windows事件目标windows_events节:

scrape_configs: job_name: windows windows_events: use_incoming_timestamp:假bookmark_path:“。/书签。xml”eventlog_name:“应用程序”xpath_query:‘*’标签:工作:windows relabel_configs: - source_labels:[‘计算机’]target_label:“主机”

当Promtail收到它将把一个事件通道电脑标签和序列化json的事件。你可以通过重新贴标签于默认的标签重新确认如果需要。

提供一条通往一个书签是强制性的,它将被用来保存最后一个事件处理,并允许恢复目标没有跳过日志。

读了配置节以获取更多信息。

看到eventlogmessage为提取的数据消息

GCP日志抓取

Promtail支持刮云资源GCS桶日志等日志集群负载平衡器日志和Kubernetes GCP的日志。配置中指定gcplog部分,在scrape_config

有两种类型的抓取策略:

- job_name: gcplog gcplog: subscription_type:“拉动式”#如果“subscription_type”字段为空,默认为“拉动”project_id:“my-gcp-project”订阅:“my-pubsub-subscription”use_incoming_timestamp:假#默认修改时间戳。标签:工作:“gcplog”relabel_configs: - source_labels: [‘__gcp_resource_type] target_label:“resource_type”——source_labels: [‘__gcp_resource_labels_project_id] target_label:“项目”

在这里project_id订阅是唯一所需的字段。

  • project_id是GCP项目id。
  • 订阅是GCP pubsub订阅Promtail可以使用日志条目。

使用前gcplog目标,质量应该配置pubsub订阅接收日志。

它还支持重新确认管道就像其他目标阶段。

当Promtail收到GCP日志,各种内部标签可用重新确认:

  • __gcp_logname
  • __gcp_resource_type
  • __gcp_resource_labels_ <名称>在上面的示例中,project_id标签从GCP资源变成了一个标签项目通过relabel_configs

- job_name: gcplog gcplog: subscription_type:“推”use_incoming_timestamp:假标签:工作:“gcplog-push”服务器:http_listen_address: 0.0.0.0 http_listen_port: 8080 relabel_configs: - source_labels: [‘__gcp_message_id] target_label:“message_id”——source_labels: [‘__gcp_attributes_logging_googleapis_com_timestamp] target_label:“incoming_ts”

当GCP日志配置目标,推Promtail将启动HTTP服务器监听端口8080年中配置服务器部分。这个服务器暴露单个端点POST /质量/ api / v1 /推动从质量,负责接收日志。

谷歌PubSub能够发送日志,Promtail服务器必须公开访问,支持HTTPS。,Promtail可以部署Kubernetes等编排服务的一部分,它可以处理HTTPS通信通过一个入口,也可以是托管在代理/网关,卸载HTTPS Promtail组件和路由请求。一旦解决,质量可以配置发送日志Promtail。

它还支持重新确认管道阶段。

当Promtail收到GCP日志,各种内部标签可用重新确认:

  • __gcp_message_id
  • __gcp_subscription_name
  • __gcp_attributes_ <名称>
  • __gcp_logname
  • __gcp_resource_type
  • __gcp_resource_labels_ <名称>

在上面的示例中,__gcp_message_id__gcp_attributes_logging_googleapis_com_timestamp标签转换为message_idincoming_ts通过relabel_configs。所有其他内部标签,例如一些其他属性,将下降目标如果不改变了。

Syslog接收机

Promtail支持接收IETF Syslog (RFC5424)消息从一个TCP或UDP流。接收syslog中定义一个消息syslog节:

scrape_configs: job_name: syslog syslog: listen_address: 0.0.0.0:1514 listen_protocol: tcp idle_timeout: 60年代label_structured_data:是的标签:工作:“syslog”relabel_configs: - source_labels: [‘__syslog_message_hostname] target_label:“主机”

syslog节中唯一必需字段listen_address场,必须提供一个有效的网络地址。接收消息的默认协议是TCP。修改协议,listen_protocol字段可以更改udp。注意,UDP不支持TLS。的idle_timeout可以帮助清理过期syslog连接。如果label_structured_data是集,结构化数据syslog头将翻译内部标签的形式__syslog_message_sd_ < ID > _ <键>。标签映射定义的常数列表标签添加到每一个分录Promtail读取。

注意,建议部署专用的syslog货代syslog-ngrsyslog在Promtail面前。货代可以照顾存在的各种规范和传输(UDP, BSD syslog,…)。看到输出配置建议syslog-ngrsyslog

当Promtail收到syslog的消息时,它将在所有头字段,从收到的消息解析,前缀__syslog_内部标签。就像在上面的示例中,__syslog_message_hostname领域的杂志变成了一个标签主机通过relabel_configs。看到重新确认为更多的信息。

Syslog-NG输出配置

目的地d_loki {syslog (“localhost”运输(tcp)端口(< promtail_port >);};

Rsyslog输出配置

通过TCP发送消息:

*。*行动(type =“omfwd”=“tcp协议目标= < promtail_host >“端口= < promtail_port >“模板=“RSYSLOG_SyslogProtocol23Format TCP_Framing”=“octet-counted”KeepAlive =“上”)

通过UDP发送消息:

*。*行动(type =“omfwd”=“udp协议目标= < promtail_host >“端口= " < promtail_port > "模板=“RSYSLOG_SyslogProtocol23Format”)

卡夫卡

Promtail使用消费者团体支持阅读消息从卡夫卡。卡夫卡的目标可以使用配置卡夫卡节:

scrape_configs: job_name:卡夫卡卡夫卡:经纪人:-我的卡夫卡- 0. org: 50705 -我的卡夫卡- 1. org: 50705主题:- ^ promtail。* - some_fixed_topic标签:工作:卡夫卡relabel_configs: -行动:取代source_labels:——__meta_kafka_topic target_label:主题——行动:取代source_labels:——__meta_kafka_partition target_label:分区-行动:取代source_labels:——__meta_kafka_group_id target_label:集团-行动:取代source_labels:——__meta_kafka_message_key target_label: message_key

只有经纪人主题是必需的。读了配置节以获取更多信息。

GELF

GELF Promtail是一个实验特性的支持。

Promtail支持听消息使用GELFUDP协议。GELF目标可以使用配置gelf节:

scrape_configs: job_name: gelf gelf: listen_address:“0.0.0.0:12201”use_incoming_timestamp:真正的标签:工作:gelf relabel_configs: -行动:取代source_labels:——__gelf_message_host target_label:主机-行动:取代source_labels:——__gelf_message_level target_label:水平——行动:取代source_labels:——__gelf_message_facility target_label:设施

Cloudflare

Promtail支持从Cloudflare使用HTTP日志消息Logpull API。Cloudflare目标可以配置一个cloudflare布洛克:

scrape_configs: job_name: cloudflare cloudflare: api_token:修订zone_id:修订fields_type:所有标签:工作:cloudflare-foo.com

只有api_tokenzone_id是必需的。指的是Cloudfare配置部分的细节。

Heroku排水

Promtail支持从Heroku接收日志应用程序通过使用Heroku HTTPS排水。配置中指定heroku_drain块内Promtailscrape_config配置。

- job_name: heroku_drain heroku_drain:服务器:http_listen_address: 0.0.0.0 http_listen_port: 8080标签:工作:heroku_drain_docs use_incoming_timestamp:真正的relabel_configs: - source_labels: [‘__heroku_drain_host] target_label:“主机”——source_labels: [‘__heroku_drain_app] target_label:“源”——source_labels: [‘__heroku_drain_proc] target_label:‘proc - source_labels: [‘__heroku_drain_log_id] target_label:“log_id”

scrape_configsHeroku流失目标配置,job_name必须是一个Prometheus-compatible指标名称

服务器部分配置为接收日志创建HTTP服务器。标签定义了一个静态组标签的值添加到每个收到日志条目。use_incoming_timestamp可用于收到Heroku通过时间戳。

在使用之前heroku_drain目标,Heroku应该配置的URL Promtail实例将倾听。按以下步骤在Heroku HTTPS排水文档使用Heroku CLI命令如下:

heroku下水道:添加(http | https): / /主机名:8080 / heroku / api / v1 /流失——HEROKU_APP_NAME

Heroku应用程序名称

请注意,__heroku_drain_app标签将包含日志的来源,应用程序heroku而不是heroku的应用程序的名称。

提供实际的应用程序名称的最简单方法是将一个查询参数创建heroku排水时然后重新贴标签于刮的配置参数,例如:

heroku下水道:添加(http | https): / /主机名:8080 / heroku / api / v1 /排水?app_name = HEROKU_APP_NAME——HEROKU_APP_NAME

然后在一个relabel_config:

relabel_configs: source_labels: [' __heroku_drain_param_app_name '] target_label:“应用程序”

它还支持重新确认管道就像其他目标阶段。

当Promtail收到Heroku排水日志,各种内部标签可用重新确认:

  • __heroku_drain_host
  • __heroku_drain_app
  • __heroku_drain_proc
  • __heroku_drain_log_id在上面的示例中,project_id标签从GCP资源变成了一个标签项目通过relabel_configs

重新确认

每一个scrape_configs条目可以包含一个relabel_configs节。relabel_configs是一个列表的操作将标签从发现到另一种形式。

一个条目relabel_configs也可以通过做一个拒绝目标行动:下降如果一个标签值指定的正则表达式匹配。当目标被删除,拥有scrape_config不会过程日志从特定的源。其他scrape_configs没有放弃行动从同一个目标可能仍然使用和阅读日志从洛基。

一个常见的用例relabel_configs改变是一个内部标签如吗__meta_kubernetes_ *成内部的中间标签等__service__。中间内部标签是基于价值下降或转换为最终外部标签,等__job__

例子

  • 下降的目标如果一个标签(__service__在这个例子中是空的:
下降-行动:正则表达式:“source_labels:——__service__
  • 的目标如果有任何下降source_labels包含一个值:
——行动:正则表达式:下降。+分隔符:“source_labels: - __meta_kubernetes_pod_label_name __meta_kubernetes_pod_label_app
  • 存在一个内部标签通过重命名它将被发送到洛基:
——行动:取代source_labels: __meta_kubernetes_namespace target_label:名称空间
  • 坚持所有Kubernetes pod标签通过映射,如通过映射__meta_kube__meta_kubernetes_pod_label_foo喷火
——行动:labelmap正则表达式:__meta_kubernetes_pod_label_ (+)。

更多阅读:

HTTP客户机选项

普罗米修斯Promtail使用HTTP客户端实现对所有调用洛基。因此,可以使用配置客户节,可以建立一个或多个连接洛基:

客户:- (< client_option >)

client_config从Promtail配置参考所有可用的选项。