菜单

配置Promtail

Promtail配置在YAML文件(通常被称为config.yaml)包含的信息Promtail服务器,存储位置在哪里,以及如何刮的日志文件。

印刷Promtail在运行时配置

如果你通过Promtail国旗-print-config-stderr-log-config-reverse-order(或-print-config-stderr = true)Promtail将转储整个配置对象与内置的默认值创建第一个从配置文件覆盖相结合,其次通过覆盖国旗。

结果是每一个配置对象的值在Promtail配置结构。

一些值可能不是相关安装,这是预期的每一个选择都有默认值是否被使用。

这个配置是Promtail将使用运行,它可以是无价的调试配置问题,确保你的配置文件中特别有用,国旗被阅读和正确加载。

-print-config-stderr直接Promtail如运行时是好的。。/ promtail你可以得到一个快速的输出整个Promtail配置。

-log-config-reverse-order国旗我们用在所有的环境中,运行Promtail配置条目逆转,以便正确地配置读取从上到下的顺序看Grafana的探索。

配置文件引用

指定哪个配置文件加载,通过-config.file国旗在命令行。文件是用YAML格式下面,定义的模式。方括号表明一个参数是可选的。为非列表参数值设置为指定的默认值。

为更详细的配置信息从目标,如何发现和刮日志看到的。将日志从刮目标的更多信息,见管道

使用在配置环境变量

您可以使用环境变量引用在配置文件中设置值需要可配置在部署期间。要做到这一点,通过-config.expand-env = true和使用:

$ {VAR}

VAR是环境变量的名字。

每个变量的引用替换在启动环境变量的值。替换是区分大小写的,发生在YAML文件被解析。引用未定义的变量替换为空字符串,除非你指定一个默认值或自定义错误文本。

指定一个默认值,使用:

$ {VAR: default_value}

其中default_value是使用如果环境变量未定义的值。

请注意:expand-env = true配置将首次运行通过envsubst这将取代双斜杠单斜杠。因为每个用的削减\需要换成双斜杠\ \

通用的占位符:

  • <布尔>:一个布尔值真正的
  • < int >正则表达式匹配的:任何整数(1 - 9)+ [0 - 9]*
  • <时间>:一个正则表达式匹配的时间[0 - 9]+(女士| [smhdwy])
  • < labelname >:一个字符串匹配的正则表达式[[a-zA-Z_] - za - z0 - 9 _] *
  • < labelvalue >:一个Unicode字符的字符串
  • <文件名>:一个有效的路径相对于当前工作目录或绝对路径。
  • <主机>:一个有效的字符串组成的主机名或IP,然后是一个可选的端口号
  • <字符串>:一个字符串
  • <秘密>:一个字符串,该字符串代表一个秘密,比如一个密码

支持内容和默认值config.yaml:

# Promtail配置服务器。(服务器:< server_config >) #描述Promtail连接到# Grafana洛基的多个实例,每个发送日志。#警告:如果一个远程洛基服务器无法响应或响应#任何错误的事情,这将影响发送日志#其他远程洛基服务器配置。在一个线程发送完成!#一般建议并行运行多个Promtail客户#如果你想发送到多个远程洛基实例。客户:[< client_config >] #描述如何保存文件偏移量磁盘读取[职位:< position_config >] scrape_configs: - (< scrape_config >) #全球限制这个实例配置Promtail [limits_config < limits_config >): #配置如何关注跟踪目标。[target_config: < target_config >] #配置额外promtail配置。(选择:< options_config >) #配置跟踪支持(跟踪:< tracing_config >)

服务器

服务器块配置Promtail作为HTTP服务器的行为:

#禁用HTTP和GRPC服务器。【禁用:<布尔> |默认= false) # HTTP服务器主机(http_listen_address <字符串>):#听HTTP服务器监听端口(0意味着随机端口)[http_listen_port: < int > |违约= 80]# gRPC服务器监听主机(grpc_listen_address <字符串>):# gRPC服务器监听端口(0意味着随机端口)[grpc_listen_port: < int > |违约= 9095]#注册仪表处理程序(/指标,等等。)[register_instrumentation <布尔> |默认= true): #超时优雅关闭[graceful_shutdown_timeout: <时间> |违约= 30 s] #读超时HTTP服务器(http_server_read_timeout: <时间> |违约= 30年代]#写超时HTTP服务器(http_server_write_timeout: <时间> |违约= 30年代]#闲置超时为HTTP服务器(http_server_idle_timeout: <时间> |违约= 120年代]#马克斯gRPC消息大小,可以收到(grpc_server_max_recv_msg_size: < int > |默认= 4194304]#马克斯gRPC消息大小,可以发送(grpc_server_max_send_msg_size: < int > |默认= 4194304]#限制并发流gRPC调用的数量(0 =无限)[grpc_server_max_concurrent_streams: < int > |违约= 100]#日志只有给定的严重程度或以上消息。支持值[调试#信息、警告、错误][log_level: <字符串> |违约= "信息"]#基本路径服务器所有API路线(例如,/ v1 /)。[http_path_prefix: <字符串>]#目标经理检查Promtail准备国旗,如果设置为假支票被忽略(health_check_target < bool > |默认= true): #启用重载通过HTTP请求。[enable_runtime_reload: < bool > |默认= false)

客户

客户块配置Promtail如何连接到洛基的实例:

# URL洛基在哪里听、用洛基http_listen_address和# http_listen_port表示。如果洛基在microservices模式下运行,这是经销商的HTTP URL #。需要包括路径推动API。#示例:http://example.com: 3100 /洛基/ api / v1 /推动url: <字符串> #承租者ID使用默认情况下将日志洛基。如果省略或空#它假定洛基在单租户模式下运行,没有X-Scope-OrgID头#发送。[tenant_id: <字符串>]#最大的时间等待发送一批之前,即使这批#并不是完整的。[batchwait: <时间> |默认= 1 s] #最大批量大小(以字节为单位)的日志积累之前发送#洛基的批处理。[batchsize: < int > |默认= 1048576]#如果使用基本身份验证,配置用户名和密码#发送。basic_auth: #用户名使用基本身份验证(用户名:<字符串>)#为基本认证所使用的密码(密码:<字符串>)#包含密码的文件基本认证[password_file <文件名>):#可选的OAuth 2.0配置#不能同时使用basic_auth或授权oauth2: #客户id和秘密oauth2 [client_id: <字符串>][client_secret <秘密>):#从文件读取客户端秘密#它与“client_secret”互斥(client_secret_file <文件名>):#可选范围为令牌请求范围:[- <字符串>…)#从token_url URL获取令牌:<字符串> #可选参数添加到标记的URL endpoint_params:[<字符串>:<字符串>… ] # Bearer token to send to the server. [bearer_token: ] # File containing bearer token to send to the server. [bearer_token_file: ] # HTTP proxy server to use to connect to the server. [proxy_url: ] # If connecting to a TLS server, configures how the TLS # authentication handshake will operate. tls_config: # The CA file to use to verify the server [ca_file: ] # The cert file to send to the server for client auth [cert_file: ] # The key file to send to the server for client auth [key_file: ] # Validates that the server name in the server's certificate # is this value. [server_name: ] # If true, ignores the server certificate being signed by an # unknown CA. [insecure_skip_verify:  | default = false] # Configures how to retry requests to Loki when a request # fails. # Default backoff schedule: # 0.5s, 1s, 2s, 4s, 8s, 16s, 32s, 64s, 128s, 256s(4.267m) # For a total time of 511.5s(8.5m) before logs are lost backoff_config: # Initial backoff time between retries [min_period:  | default = 500ms] # Maximum backoff time between retries [max_period:  | default = 5m] # Maximum number of retries to do [max_retries:  | default = 10] # Static labels to add to all logs being sent to Loki. # Use map like {"foo": "bar"} to add a label foo with # value bar. # These can also be specified from command line: # -client.external-labels=k1=v1,k2=v2 # (or --client.external-labels depending on your OS) # labels supplied by the command line are applied # to all clients configured in the `clients` section. # NOTE: values defined in the config file will replace values # defined on the command line for a given client if the # label keys are the same. external_labels: [ :  ... ] # Maximum time to wait for a server to respond to a request [timeout:  | default = 10s]

职位

职位块配置Promtail将保存一个文件显示多远它读入一个文件。时需要Promtail启动服务器,允许继续从那里离开。

#位置文件的位置(文件名:<字符串> |默认= " / var / log /职位。yaml "] #多久更新文件的位置(sync_period: <时间> |违约= 10 s] #忽略&后覆盖位置的文件是否损坏(ignore_invalid_yaml <布尔> |默认= false):

scrape_configs

scrape_configs块配置Promtail如何刮日志使用指定的发现从一系列目标的方法:

#名称来识别这个刮配置Promtail UI。job_name: <字符串> #描述如何将日志从目标。[pipeline_stages: < pipeline_stages >] #来自《华尔街日报》描述了如何刮日志。【期刊:< journal_config >】#描述编码刮文件应该转换。【编码:< iana_encoding_name >】#描述如何从syslog接收日志。[syslog: < syslog_config >] #描述如何通过洛基把接收日志API,从其他Promtails或码头工人(如日志记录司机)[loki_push_api < loki_push_api_config >): #描述如何刮日志从Windows事件日志。[windows_events: < windows_events_config >] #配置描述如何拉/收到谷歌的云平台(GCP)日志。[gcplog: < gcplog_config >] #描述如何获取日志从卡夫卡通过消费者团体。【卡夫卡:< kafka_config >】#描述如何从gelf接收日志客户端。[gelf: < gelf_config >] #描述如何从Cloudflare把日志配置。 [cloudflare: ] # Configuration describing how to pull logs from a Heroku LogPlex drain. [heroku_drain: ] # Describes how to relabel targets to determine if they should # be processed. relabel_configs: - [] # Static targets to scrape. static_configs: - [] # Files containing targets to scrape. file_sd_configs: - [] # Describes how to discover Kubernetes services running on the # same host. kubernetes_sd_configs: - [] # Describes how to use the Consul Catalog API to discover services registered with the # consul cluster. consul_sd_configs: [ -  ... ] # Describes how to use the Consul Agent API to discover services registered with the consul agent # running on the same host as Promtail. consulagent_sd_configs: [ -  ... ] # Describes how to use the Docker daemon API to discover containers running on # the same host as Promtail. docker_sd_configs: [ -  ... ]

pipeline_stages

管道阶段和他们的标签是用于转换日志条目。管道发现过程完成后执行。的pipeline_stages对象包含一系列阶段对应于下面列出的产品。

在大多数情况下,您从日志中提取数据正则表达式json阶段。提取的数据转换成一个临时映射对象。Promtail如所使用的数据可以作为值标签或作为一个输出。另外除了任何其他阶段码头工人中国国际广播电台可以访问数据的提取。

——[<码头工人> | < cri > | <正则表达式> | < json > | <模板> | <匹配> | <时间> | <输出> | <标签> | <标准> | <租户> | <取代>)

码头工人

码头工人阶段解析日志的内容从集装箱码头工人,和由名称定义一个空对象:

码头工人:{}

码头工人阶段将匹配和解析日志行这种格式:

{“日志”:“水平= info ts = 2019 - 04 - 30 - t02:12:41.844179z调用者= filetargetmanager。:180味精= \“添加目标\“\ n”、“流”:“stderr”、“时间”:“2019 - 04 - 30 t02:12:41.8443515z "}

自动提取时间日志时间戳,到一个标签,日志字段到输出,这可能是非常有用的是码头工人包装应用程序日志以这种方式,这将打开它进行进一步的管道处理的日志内容。

码头工人阶段只是一个方便包装的定义:

json:输出:日志流:流时间戳:时间-标签:流:时间戳:来源:时间戳格式:RFC3339Nano -输出:来源:输出

中国国际广播电台

国际阶段解析日志的内容从国际集装箱,和由名称定义一个空对象:

中国国际广播电台:{}

国际阶段将匹配和解析日志行这种格式:

2019 - 01 - 01 t01:00:00.000000001z stderr P一些日志消息

自动提取时间日志时间戳,成一个标签,其余的消息转换为输出,这可以作为国际包装您的应用程序非常有用的日志以这种方式,这将打开它进行进一步的管道处理的日志内容。

国际阶段只是一个方便的包装器定义:

-正则表达式:表达式:“^ (?)(P <时间> \ \ s + ?) (? P <流程> stdout | stderr) (P <标记> \ \ s + ?) (? P <内容>。*)$”——标签:流:时间戳:来源:时间格式:RFC3339Nano -输出:来源:内容

正则表达式

Regex阶段需要一个正则表达式并提取了命名组用于进一步的阶段。

regex: # RE2公司正则表达式。每个捕获组必须命名。表达式:<字符串> #从提取的数据解析名称。如果空,使用日志消息。(来源:<字符串>)

json

JSON阶段解析日志行为JSON和需要JMESPath表达式来提取数据从JSON用于进一步的阶段。

json: # JMESPath表达式的组键/值对。关键是#提取的数据,而表达的关键值,#评为JMESPath从源数据。表情:[<字符串>:<字符串>…从提取的数据解析]#名称。如果空,使用日志消息。(来源:<字符串>)

模板

模板使用去的阶段文本/模板语言操作值。

从提取的数据解析模板:#的名字。如果关键在提取数据不存在,将创建一个#条目。来源:<字符串> #模板字符串使用。在其他正常模板#函数、低ToUpper,替换,修剪,TrimLeft, TrimRight, # TrimPrefix, TrimSuffix, TrimSpace可用功能。模板:<字符串>

例子:

模板:来源:水平模板:“{{如果情商value "警告"}}{{value替换“警告”“OK”1}}{{其他}}{{value}}{{结束}}’

匹配

匹配阶段有条件地执行一组阶段当匹配一个可配置的日志条目LogQL流选择器。

选择器匹配:# LogQL流。选择器:<字符串> #管道名称。当定义,创建一个额外的标签# pipeline_duration_seconds直方图,价值在哪里#连接job_name使用下划线。[pipeline_name: <字符串>]#嵌套组管道阶段只有选择器匹配日志条目的标签:阶段:[<码头工人> | < cri > | <正则表达式> < json > | <模板> | <匹配> | <时间> | <输出> | <标签> | <标准>)

时间戳

时间戳阶段解析的数据提取地图和覆盖的最后时间价值洛基的日志存储。如果这个阶段不存在,Promtail将把日志条目的时间戳与日志条目的时间阅读。

时间戳:#的名字从提取的数据使用时间戳。来源:<字符串> #决定如何解析时间字符串。可以使用预定义的格式的名字:[ANSIC UnixDate RubyDate根据RFC822 #以RFC822Z RFC850 RFC1123 RFC1123Z RFC3339 RFC3339Nano Unix # UnixMs UnixUs UnixNs]。格式:<字符串> # IANA时区数据库字符串。(地点:<字符串>)

输出

输出阶段从提取的地图和获取数据集的内容洛基将存储的日志条目。

输出:#的名字从提取的数据使用的日志条目。来源:<字符串>

标签

标签阶段从提取的地图和获取数据集附加标签将被发送到洛基的日志条目。

标签:#关键是必需的和标签的名称将被创建。#值是可选的,将从提取的数据,其价值#名称将用于标签的价值。如果空,将#推断价值一样关键。(<字符串>(<字符串>):……]

指标

度量阶段允许定义从提取的数据指标。

创建指标不推洛基,相反通过Promtail暴露的/指标端点。普罗米修斯应该配置为刮Promtail能够检索指标配置在这个阶段。

#一个地图,关键是指标的名称和值是一个特定的#指标类型。指标:[<字符串>:[<柜台> | <计> | <直方图>]…]
计数器

只定义了一个计数器度量其价值上升。

#指标类型。必须柜台。类型:计数器#描述了度量。[描述:<字符串>]#键提取数据映射到使用的度规,#如果不存在违约指标的名称。[来源:<字符串>]配置:#过滤器源数据,只改变度规#如果有针对性的值完全匹配提供的字符串。#如果不存在,将所有数据匹配。【价值:<字符串>】#必须“公司”或“添加”(不分大小写)。如果选择#公司,每个#的度量值将增加1日志行收到通过的过滤器。如果选择添加,#提取的值大多数是可转换为积极思想浮动#和它的值将被添加到度量。行动:<字符串>

定义了一个衡量指标,其价值可以向上或向下。

#指标类型。必须评估。类型:计#描述了度量。[描述:<字符串>]#键提取数据映射到使用的度规,#如果不存在违约指标的名称。[来源:<字符串>]配置:#过滤器源数据,只改变度规#如果有针对性的值完全匹配提供的字符串。#如果不存在,将所有数据匹配。【价值:<字符串>】#必须要么“套”,“公司”,“12月”,“添加”或“子”。如果#添加、设置或选择子,提取的值必须是#可转换为积极自由浮动。(aapl . o:行情)和12月将#增量或减量指标的值分别为1。行动:<字符串>
柱状图

定义了一个水桶直方图度量的值。

#指标类型。必须直方图。类型:直方图#描述了度量。[描述:<字符串>]#键提取数据映射到使用的度规,#如果不存在违约指标的名称。[来源:<字符串>]配置:#过滤器源数据,只改变度规#如果有针对性的值完全匹配提供的字符串。#如果不存在,将所有数据匹配。【价值:<字符串>】#必须“公司”或“添加”(不分大小写)。如果选择#公司,每个#的度量值将增加1日志行收到通过的过滤器。如果选择添加,#提取的值大多数是可转换为积极思想浮动#和它的值将被添加到度量。行动:<字符串> #持有所有的桶的数字指标。 buckets: - 

租户

租户阶段是一个动作阶段,集的租户ID日志条目选择从现场提取的数据地图。

租户:#的名字从提取数据的值应该设置为租户ID。#源或价值配置选项是必需的,但不是两个互斥(#)。【来源:<字符串>】#值用来设置租户ID执行这一阶段时。有用的#当这个阶段是包含在一个条件管道“匹配”。(价值:<字符串>)

取代

取代阶段是一个解析日志的解析阶段使用一个正则表达式并取代了日志行线。

替换:# RE2公司正则表达式。将被添加到提取每个命名捕获组。#每个组和命名捕获组与给定的值将被替换#“取代”表达式:<字符串> #从提取的数据解析名称。如果空,使用日志消息。#替换的值将被分配回从古到今键[来源:<字符串>]#值捕获组将被取代。捕获的组或指定#捕获集团将被替换为这个值和日志行替换#新值所取代。一个空值将从日志中删除捕获组线。(替换:<字符串>)

杂志

杂志块配置阅读来自Promtail systemd日报。需要建立的Promtail日报》的支持启用。如果使用AMD64码头工人的形象,这是默认启用。

#真时,日志消息来自《华尔街日报》通过#管道作为与所有日记的原始JSON消息#字段。假时,日志消息的文本内容来自《华尔街日报》的消息#字段条目。(json <布尔> |默认= false): #最古老的相对时间从流程开始读#和洛基。[max_age: <时间> |默认= 7 h] #标签添加映射到每一个日志的《华尔街日报》标签:[< labelname >: < labelvalue >…)#一个目录路径从阅读条目。默认为系统#路径(/ var / log /杂志和/运行/日志/杂志)空的时候。(路径:<字符串>)

请注意:优先级标签可用值和关键字。例如,如果优先级3然后将标签__journal_priority与一个值3__journal_priority_keyword与相应的关键字犯错

syslog

syslog块配置syslog侦听器允许用户将日志Promtail syslog的协议。目前支持IETF Syslog (RFC5424)有和没有八隅体计数。

推荐的部署是一个专用的syslog货代syslog-ngrsyslog在Promtail面前。货代可以照顾存在的各种规范和传输(UDP, BSD syslog,…)。

八位字节数建议作为消息分帧的方法。在一个流不透明的框架,Promtail需要等待下一条消息捕获多行信息,因此延迟消息之间可以发生。

看到输出配置建议syslog-ngrsyslog。两个配置启用IETF Syslog octet-counting。

你可能需要增加的打开的文件限制Promtail过程如果有许多客户端连接。(ulimit - sn)

#监听TCP地址。“主持人:港口”的格式。listen_address: <字符串> #配置接收机使用TLS。tls_config: #服务器发送的证书和密钥文件(需要)cert_file: <字符串> key_file: <字符串> # CA证书用于验证客户端证书。使得客户端证书验证时指定。[ca_file: <字符串>]# tcp syslog连接闲置超时,默认是120秒。idle_timeout: <时间> #是否syslog结构化数据转换为标签。#一个结构化的数据输入(example@99999测试= " yes ")将成为#标签“__syslog_message_sd_example_99999_test”与“是”的价值。label_structured_data: < bool > #标签添加映射到每一个日志消息。标签:[< labelname >: < labelvalue >… ] # Whether Promtail should pass on the timestamp from the incoming syslog message. # When false, or if no timestamp is present on the syslog message, Promtail will assign the current timestamp to the log when it was processed. # Default is false use_incoming_timestamp:  # Sets the maximum limit to the length of syslog messages max_message_length: 

可用的标签

  • __syslog_connection_ip_address:远程IP地址。
  • __syslog_connection_hostname:远程主机名。
  • __syslog_message_severity:syslog严重性从消息进行解析。符号名称按syslog_message.go
  • __syslog_message_facility:syslog工具从消息进行解析。符号名称按syslog_message.gosyslog (3)
  • __syslog_message_hostname:主机名从消息进行解析。
  • __syslog_message_app_name:应用名称字段从消息进行解析。
  • __syslog_message_proc_id:procid领域从消息进行解析。
  • __syslog_message_msg_id:是否字段从消息进行解析。
  • __syslog_message_sd_ < sd_id > _ < sd_name > (_ < iana_enterprise_id >):结构化数据字段从消息进行解析。数据字段(custom@99770示例=“1”)就变成了__syslog_message_sd_custom_99770_example

loki_push_api

loki_push_api块配置Promtail公开洛基推动API服务器。

每个工作配置loki_push_api将使这个API,需要一个单独的端口。

注意服务器配置是一样的服务器

Promtail也暴露了另一个端点/ promtail / api / v1 /原料预计用日志行。这可以用于发送NDJSON或明文日志。

#推动服务器配置选项(服务器:< server_config >) #标签添加映射到每个日志发送到推动API标签行:[< labelname >: < labelvalue >…#如果Promtail应该把从传入日志时间戳。#当假Promtail将分配当前时间戳到日志时处理。#不适用于明文端点/ promtail / api / v1 /生的。[use_incoming_timestamp: < bool > |默认= false)

看到例子将配置

windows_events

windows_events块配置Promtail刮windows事件日志和寄给洛基。

subcribe到您需要提供一个具体的事件流eventlog_name或者一个xpath_query

事件是刮定期每3秒默认但可以改变使用poll_interval

一个书签路径bookmark_path是强制性的,将被用作一个立场文件,Promtail将最后一个事件处理的记录。这个文件一直延续到Promtail重启。

你可以设置use_incoming_timestamp如果你想保持输入事件的时间戳。默认情况下Promtail事件时将使用时间戳从事件日志读取。

Promtail将序列化JSON windows事件,添加通道电脑标签从事件。您可以添加额外的标签标签财产。

# LCID(区域ID)事件呈现# - 1033年迫使英语# - 0使用默认Windows地区[地区:< int > |违约= 0]#事件日志的名字,只有使用xpath_query是空号的例子:“应用程序”(eventlog_name: <字符串> |违约= "]# xpath_query可以在定义短形式像“事件/系统[EventID = 999]”#也可以形成一个XML查询。指的是消费活动文章:# https://docs.microsoft.com/en-us/windows/win32/wes/consuming-events XML查询推荐的形式,因为它是最灵活#你可以创建或调试XML查询通过创建自定义视图在Windows事件查看器#然后复制生成的XML (xpath_query: <字符串> |默认= " * "]#设置书签到文件系统上的位置。#书签包含在XML中目标的当前位置。#当重新启动或推出Promtail,目标将继续刮事件从基于书签的位置。#每个条目处理后的位置更新。[bookmark_path: <字符串> |默认= "]# PollInterval是我们看到如果新事件的时间间隔是可用的。默认情况下,目标将检查每3秒。[poll_interval: <时间> |默认= 3 s] #允许排除xml事件数据。[exclude_event_data: < bool > |默认= false) #允许排除每个windows事件的用户数据。[exclude_user_data: < bool > |默认= false) #标签添加映射到每个日志从windows事件日志读取标签行:[< labelname >: < labelvalue >… ] # If Promtail should pass on the timestamp from the incoming log or not. # When false Promtail will assign the current timestamp to the log when it was processed [use_incoming_timestamp:  | default = false]

GCP的日志

gcplog块配置如何Promtail接收GCP日志。有两种策略,根据配置的subscription_type:

  • :使用GCP Pub / Sub把订阅。Promtail将消耗GCP Pub / Sub直接从配置日志消息的主题。
  • :使用GCP Pub / Sub推动订阅。Promtail会暴露一个HTTP服务器,GCP将日志服务器。

当使用订阅类型,请记住:

  • 服务器配置是一样的服务器,因为Promtail公开HTTP服务器的目标要求。
  • 一个端点POST /质量/ api / v1 /推动,预计GCP PubSub请求消息传递系统。
#从GCP用于获取日志类型的订阅。可以是“拉动”(默认)或“推”。[subscription_type: <字符串> |默认=“拉动式”]#如果subscription_type拉,GCP项目ID (project_id <字符串>):#如果subscription_type拉,GCP PubSub订阅来自Promtail将把日志(订阅<字符串>):#如果subscription_type推,服务器的配置选项(服务器:< server_config >) # Promtail是否应该把时间戳从传入GCP日志消息。#当假的,或如果没有GCP日志消息的时间戳,Promtail将分配当前#时间戳到日志时处理。[use_incoming_timestamp: <布尔> |默认= false) #如果subscription_type推,配置HTTP处理程序超时。如果GCP日志处理传入的请求花费的时间#比配置的时间,这是处理然后发送输入处理管道,服务器将中止# 503 HTTP状态代码和回应。[push_timeout: <时间> |默认= 0(没有超时)]#标签添加映射到每一个日志消息。标签:[< labelname >: < labelvalue >…]

可用的标签

当Promtail收到GCP日志,各种内部标签可用重新确认。这取决于订阅类型选择。

内部标签可用于拉

  • __gcp_logname
  • __gcp_resource_type
  • __gcp_resource_labels_ <名称>

内部标签用于推动

  • __gcp_message_id
  • __gcp_subscription_name
  • __gcp_attributes_ <名称>:读取所有属性.message.attributes在传入的推送消息。每个属性关键是方便重新命名,因为它可能包含不支持的字符。例如,logging.googleapis.com/timestamp被转换为__gcp_attributes_logging_googleapis_com_timestamp
  • __gcp_logname
  • __gcp_resource_type
  • __gcp_resource_labels_ <名称>

卡夫卡

卡夫卡块配置Promtail刮日志卡夫卡使用一组消费者。

经纪人应该列出可用的经纪人与卡夫卡集群通信。使用多个经纪人当你想提高可用性。

主题是Promtail主题的订阅列表。如果一个主题开始^然后一个正则表达式(RE2公司)是用于匹配的主题。例如^ promtail -。*将匹配的主题promtail-devpromtail-prod。主题更新每30秒,所以如果一个新的主题匹配,它将自动添加不需要Promtail重启。

group_id定义独特的消费者组id用于消费日志。每个日志记录发布到主题是交付给一个消费者实例在每个订阅的消费者群体。

  • 如果所有promtail实例有相同的消费群体,然后记录在promtail实例有效地将负载平衡。
  • 如果所有promtail实例有不同的消费群体,那么每个记录将被广播给所有promtail实例。

group_id是有用的,如果你想有效地发送数据到多个洛基实例和/或其他下沉。

转让人配置允许您选择要使用的再平衡战略对消费者群体。平衡就是一群消费者的过程实例(属于同一个组)协调的一组互斥的分区组是订阅的主题。

  • 范围默认值,分配分区作为消费者团体成员的范围。
  • 黏糊糊的早些时候与试图保护成员分配分区作业
  • 设置轮流捡取成员分配分区交替顺序。

版本允许选择卡夫卡版本需要连接到集群。(默认为2.2.1)

默认情况下,时间戳交办Promtail读取消息时,如果你想保持实际的消息从卡夫卡可以设置时间戳use_incoming_timestamp为true。

#代理连接到卡夫卡的列表(需要)。[经纪人:<字符串> |默认=["]]#卡夫卡消费主题的列表(需要)。(主题:<字符串> |默认=["]]#卡夫卡消费者组id。[group_id: <字符串> |违约= " promtail "] #要使用的消费者团体再平衡战略。(e。g“粘性”,此“循环”或“范围”)[转让人:<字符串> |违约= "范围"]#卡夫卡版本连接。(版本:<字符串> |默认=“2.2.1”]#可选的身份验证配置与卡夫卡经纪人的身份验证:#类型是身份验证类型。支持值[没有、ssl、sasl][类型:<字符串> |默认= "没有"]# TLS配置身份验证和加密。它只使用ssl身份验证类型时。tls_config (< tls_config >): # SASL配置身份验证。它只用于当sasl验证类型。 sasl_config: # SASL mechanism. Supported values [PLAIN, SCRAM-SHA-256, SCRAM-SHA-512] [mechanism:  | default = "PLAIN"] # The user name to use for SASL authentication [user: ] # The password to use for SASL authentication [password: ] # If true, SASL authentication is executed over TLS [use_tls:  | default = false] # The CA file to use to verify the server [ca_file: ] # Validates that the server name in the server's certificate # is this value. [server_name: ] # If true, ignores the server certificate being signed by an # unknown CA. [insecure_skip_verify:  | default = false] # Label map to add to every log line read from kafka labels: [ :  ... ] # If Promtail should pass on the timestamp from the incoming log or not. # When false Promtail will assign the current timestamp to the log when it was processed [use_incoming_timestamp:  | default = false]

可用的标签:

下面的列表标签消费卡夫卡时发现:

  • __meta_kafka_topic:当前主题的消息已读。
  • __meta_kafka_partition:分区id的消息已读。
  • __meta_kafka_member_id:消费者团体成员id。
  • __meta_kafka_group_id:消费者组id。
  • __meta_kafka_message_key:消息键。如果它是空的,这个值将是“没有”。

保存日志发现标签使用relabel_configs部分。

GELF

gelf块配置GELF UDP侦听器允许用户将Promtail的日志GELF协议。目前只支持UDP,如果你感兴趣请提交功能请求TCP的支持。

GELF可以将消息发送未压缩的或与GZIP或ZLIB压缩。

每个GELF消息收到将JSON编码的日志。例如:

{“版本”:“1.1”,“主机”:“example.org”,“short_message”:“短消息”、“时间戳”:1231231123,“水平”:5“_some_extra”:“额外”}

您可以利用管道阶段GELF目标,例如,如果你想要解析日志行和提取更多的标签或更改日志行格式。

# UDP地址监听。“主持人:港口”的格式。默认0.0.0.0:12201 listen_address: <字符串> #标签添加映射到每一个日志消息。标签:[< labelname >: < labelvalue >…)# Promtail是否应该把时间戳从传入gelf消息。#当假的,或如果没有时间戳gelf消息,Promtail将分配当前时间戳到日志时处理。#默认是假use_incoming_timestamp: < bool >

可用的标签:

  • __gelf_message_level:GELF水平作为字符串。
  • __gelf_message_host:主机发送GELF消息。
  • __gelf_message_version:GELF级消息客户机设置的版本。
  • __gelf_message_facility:GELF设施。

保存日志发现标签使用relabel_configs部分。

Cloudflare

cloudflare块配置Promtail Cloudflare的日志Logpull API

这些日志包含相关数据连接客户端,通过Cloudflare网络请求的路径,和从原点web服务器的响应。这些数据有助于丰富现有日志源服务器。

# Cloudflare API使用令牌。(必需)#你可以创建一个新的令牌通过访问(Cloudflare概要文件)(https://dash.cloudflare.com/profile/api-tokens)。api_token: <字符串> # Cloudflare区域id日志。(需要)zone_id: <字符串> #把日志的时间范围。[pull_range: <时间> |默认= 1 m] #工人的数量,将日志。[工人:< int > |默认= 3)#类型的字段获取列表日志。#支持价值观:默认情况下,最小的,扩展的时候,所有。[fields_type: <字符串> |默认=违约]#标签添加映射到每一个日志消息。标签:[< labelname >: < labelvalue >…]

默认情况下Promtail获取日志字段的默认设置。这是不同的字段类型,字段包括:

  • 默认的包括“ClientIP”、“ClientRequestHost”、“ClientRequestMethod”、“ClientRequestURI”,“EdgeEndTimestamp”、“EdgeResponseBytes”,“EdgeRequestHost”、“EdgeResponseStatus”,“EdgeStartTimestamp”、“RayID”

  • 最小的包括所有默认的字段并添加“ZoneID”、“ClientSSLProtocol”、“ClientRequestProtocol”、“ClientRequestPath”,“ClientRequestUserAgent”、“ClientRequestReferer”,“EdgeColoCode”、“ClientCountry”,“CacheCacheStatus”、“CacheResponseStatus”、“EdgeResponseContentType

  • 扩展包括所有最小的字段并添加“ClientSSLCipher”、“ClientASN”、“ClientIPClass”、“CacheResponseBytes”、“EdgePathingOp”,“EdgePathingSrc”、“EdgePathingStatus”,“ParentRayID”、“WorkerCPUTime”,“WorkerStatus”、“WorkerSubrequest”,“WorkerSubrequestCount”、“OriginIP”,“OriginResponseStatus”、“OriginSSLProtocol”,“OriginResponseHTTPExpires”、“OriginResponseHTTPLastModified”

  • 所有包括所有扩展字段并添加“BotScore”、“BotScoreSrc”、“ClientRequestBytes”、“ClientSrcPort”、“ClientXRequestedWith”,“CacheTieredFill”、“EdgeResponseCompressionRatio”,“EdgeServerIP”、“FirewallMatchesSources”,“FirewallMatchesActions”、“FirewallMatchesRuleIDs”,“OriginResponseBytes”、“OriginResponseTime”,“ClientDeviceType”、“WAFFlags”,“WAFMatchedVar”、“EdgeColoID”,“RequestHeaders”、“ResponseHeaders”

了解更多关于每个字段及其值,请参阅Cloudflare文档

Promtail保存最后successfully-fetched立场文件的时间戳。如果找到一个位置在文件中对于一个给定的区域ID, Promtail将重启日志的位置。当没有找到位置,Promtail将从当前时间开始把日志。

Promtail获取日志(可配置通过使用多个工人工人),请求最后拉范围可用(通过配置pull_range重复)。验证最后Promtail使用的时间戳cloudflare_target_last_requested_end_timestamp指标。Promtail有可能落后,因为有太多的日志行来处理每个拉。添加更多的工人,减少拉范围,或减少的数量字段获取可以减轻这种性能问题。

Cloudflare日志都是JSON。这是一个例子:

{“CacheCacheStatus”:“小姐”,“CacheResponseBytes”: 8377年,“CacheResponseStatus”: 200年,“CacheTieredFill”:假的,“ClientASN”: 786年,“ClientCountry”:“g”、“ClientDeviceType”:“桌面”、“ClientIP”:“100.100.5.5”、“ClientIPClass”:“noRecord”、“ClientRequestBytes”: 2691年,“ClientRequestHost”:“www.foo.com”,“ClientRequestMethod”:“得到”,“ClientRequestPath”:“/评论/ foo /”、“ClientRequestProtocol”:“HTTP / 1.0”,“ClientRequestReferer”:“https://www.foo.com/foo/168855/?抵消= 8625”、“ClientRequestURI”:“/ foo / 15248108 /”、“ClientRequestUserAgent”:“一些机器人”、“ClientSSLCipher”:“ECDHE-ECDSA-AES128-GCM-SHA256”、“ClientSSLProtocol”:“TLSv1.2”、“ClientSrcPort”: 39816年,“ClientXRequestedWith”:“”、“EdgeColoCode”:“人”,“EdgeColoID”: 341年,“EdgeEndTimestamp”: 1637336610671000000,“EdgePathingOp”:“王”、“EdgePathingSrc”:“宏观”、“EdgePathingStatus”:“nr”、“EdgeRateLimitAction”:“”、“EdgeRateLimitID”: 0,”EdgeRequestHost”:“www.foo.com”,“EdgeResponseBytes”: 14878年,“EdgeResponseCompressionRatio”: 1、“EdgeResponseContentType”:“text / html”、“EdgeResponseStatus”: 200年,“EdgeServerIP”:“8.8.8.8”、“EdgeStartTimestamp”: 1637336610517000000,“FirewallMatchesActions”: [],“FirewallMatchesRuleIDs”: [],“FirewallMatchesSources”: [],“OriginIP”:“8.8.8.8”、“OriginResponseBytes”: 0,”OriginResponseHTTPExpires”:“”、“OriginResponseHTTPLastModified”:“”、“OriginResponseStatus”: 200年,“OriginResponseTime”: 123000000,“OriginSSLProtocol”:“TLSv1.2”、“ParentRayID”:“00”、“RayID”:“6 b0a……”、“RequestHeaders”: [],“ResponseHeaders”:“x-foo”:“酒吧”,“SecurityLevel”:“地中海”、“WAFAction”:“未知”、“WAFFlags”:“0”、“WAFMatchedVar”:“”、“WAFProfile”:“未知”、“WAFRuleID”:“”、“WAFRuleMessage”:“”、“WorkerCPUTime”: 0,”WorkerStatus”:“未知”、“WorkerSubrequest”:假的,”WorkerSubrequestCount ZoneID“: 0: 1234}

您可以利用管道阶段例如,如果你想要解析JSON日志行和提取更多的标签或更改日志行格式。

heroku_drain

heroku_drain块配置Promtail公开Heroku HTTPS排水

每个作业配置Heroku流失将揭露一个排水,需要一个单独的端口。

服务器配置是一样的服务器,因为Promtail公开HTTP服务器为每个新下水道。

Promtail暴露一个端点heroku / api / v1 /排水预计来自Heroku的请求日志的交付。

# Heroku消耗服务器的配置选项(服务器:< server_config >) #标签添加映射到每一个日志消息。标签:[< labelname >: < labelvalue >…)# Promtail是否应该把从传入Heroku排水时间戳信息。#当假的,或如果没有syslog中时间戳信息,Promtail将分配当前#时间戳到日志时处理。[use_incoming_timestamp: <布尔> |默认= false)

可用的标签

Heroku日志发送日志Syslog-formatted消息(有一些轻微的调整;他们不是RFC-compatible)。

每个日志条目的Heroku流失目标暴露了syslog字段下面的标签:

  • __heroku_drain_host:主机名场解析的消息。
  • __heroku_drain_app:应用名称场解析的消息。
  • __heroku_drain_proc:PROCID场解析的消息。
  • __heroku_drain_log_id:是否场解析的消息。

relabel_configs

重新标记是一个强大的工具来动态地修改标签的目标之前刮。可以配置多个重新标记步骤每刮配置。他们应用于标签的每个目标的顺序出现在配置文件中。

重新确认后,实例标签的值被设置为__address__默认情况下,如果不是在重新设置。的__scheme____metrics_path__标签设置为目标的计划和指标路径。的__param_ <名称>标签的值被设置为第一个URL参数传递<名称>

额外的标签前缀__meta_可以在重新确认阶段。他们设定的服务发现机制,提供了目标和不同机制。

开始标签__将被删除的标签设置目标重新标记完成后。

如果重新一步需要存储一个标签值只是暂时(与随后的重新输入步骤),使用__tmp标签名称前缀。保证不会使用这个前缀普罗米修斯本身。

从现有标签#源标签选择值。其内容是连接#使用配置的分离器和匹配的正则表达式配置#替换,保持,和删除操作。[source_labels:“[' < labelname > [,……]']' ] # Separator placed between concatenated source label values. [ separator:  | default = ; ] # Label to which the resulting value is written in a replace action. # It is mandatory for replace actions. Regex capture groups are available. [ target_label:  ] # Regular expression against which the extracted value is matched. [ regex:  | default = (.*) ] # Modulus to take of the hash of the source label values. [ modulus:  ] # Replacement value against which a regex replace is performed if the # regular expression matches. Regex capture groups are available. [ replacement:  | default = $1 ] # Action to perform based on regex matching. [ action:  | default = replace ]

<正则表达式>是任何有效的RE2公司正则表达式。这是所需的取代,保持,下降,labelmap,labeldroplabelkeep行动。正则表达式是固定在两端。un-anchor正则表达式,使用* * <正则表达式>

< relabel_action >决定重新操作:

  • 取代:匹配正则表达式对连接source_labels。然后,设置target_label更换,匹配组引用($ {1},$ {2},…)更换取代的价值。如果正则表达式不匹配,没有更换。
  • 保持:下降的目标正则表达式连接不匹配source_labels
  • 下降:下降的目标正则表达式匹配的连接source_labels
  • hashmod:设置target_label模量的一个散列连接source_labels
  • labelmap:匹配正则表达式对所有标签的名字。然后拷贝的值匹配的标签,标签的名字更换与匹配组引用($ {1},$ {2},…)更换取代的价值。
  • labeldrop:匹配正则表达式对所有标签的名字。任何相匹配的标签将从组中删除标签。
  • labelkeep:匹配正则表达式对所有标签的名字。任何不匹配的标签将从组中删除标签。

必须注意labeldroplabelkeep确保日志仍然是独特的标签一旦标签删除。

static_configs

一个static_configs允许指定一个目标和一个共同的标签列表设置。它的典型方法是指定在刮配置静态目标。

#配置发现当前机器上。#这是普罗米修斯服务发现所需的代码,但不#真正适用于Promtail只能看文件在本地机器上#因此它应该只有localhost的价值,也可以排除#完全和一个默认值localhost Promtail将被应用。目标:localhost #定义了一组文件刮和一个可选的附加标签适用于从__path__ #流定义的所有文件。标签:#路径加载日志。可以使用一滴模式(例如,/var/log/ * . log)。__path__: <字符串> #用于排除文件被加载。还可以使用一滴模式。__path_exclude__: <字符串> #额外的标签分配到日志(< labelname >: < labelvalue >…]

file_sd_config

基于文件的服务发现提供了一种更通用的方法来配置静态目标,作为一个接口插入定制的服务发现机制。

它读取一组包含零个或多个列表的文件< static_config >年代。改变所有定义文件立即通过磁盘检测手表和应用。文件可能在YAML或JSON格式提供。只改变导致应用格式良好的目标群体。

JSON文件必须包含一个静态配置列表,使用这种格式:

[{“目标”:“localhost”,“标签”:{“__path__”:“<字符串>”,…:“< labelname > < labelvalue >”,…}},……]

回退,文件内容也重读定期在指定的刷新间隔。

每个目标都有一个meta标签__meta_filepath重新确认阶段。它的值设置为filepath目标提取。

#模式文件中提取的目标群体。文件:[- < filename_pattern >…#刷新间隔重读的文件。[refresh_interval: <时间> |默认= 5 m]

在哪里< filename_pattern >可能是一个路径的结局. json,.yml.yaml。最后一个路径段可能包含一个单一的*匹配任何字符序列,例如。我/道路/ tg_ * . json

kubernetes_sd_config

Kubernetes SD配置允许检索刮目标Kubernetes”REST API,并且总是保持同步集群状态。

下列之一角色可以配置为发现目标类型:

节点

节点角色发现一个目标每个集群节点的地址违约Kubelet的HTTP端口。

目标地址默认为第一个现有地址Kubernetes节点对象的地址类型的顺序NodeInternalIP,NodeExternalIP,NodeLegacyHostIP,NodeHostName

可用的元标签:

  • __meta_kubernetes_node_name:节点对象的名称。
  • __meta_kubernetes_node_label_ < labelname >:每个节点对象的标签。
  • __meta_kubernetes_node_labelpresent_ < labelname >:真正的对于每个从节点对象标签。
  • __meta_kubernetes_node_annotation_ < annotationname >:每个节点对象的注释。
  • __meta_kubernetes_node_annotationpresent_ < annotationname >:真正的为每个节点对象的注释。
  • __meta_kubernetes_node_address_ < address_type >:第一个地址为每个节点地址类型,如果它存在。

此外,实例标签的节点将被设置为从API检索服务器的节点名称。

服务

服务发现一个目标为每个角色服务端口的每个服务。这对于黑箱监测通常是有用的服务。地址将被设置为服务的Kubernetes DNS名称和相应的服务端口。

可用的元标签:

  • __meta_kubernetes_namespace:服务对象的命名空间。
  • __meta_kubernetes_service_annotation_ < annotationname >从服务对象:每个注释。
  • __meta_kubernetes_service_annotationpresent_ < annotationname >每个注释:“真正”的服务对象。
  • __meta_kubernetes_service_cluster_ip:集群服务的IP地址。(不适用于服务ExternalName型)
  • __meta_kubernetes_service_external_name:服务的DNS名称。(适用于服务类型ExternalName)
  • __meta_kubernetes_service_label_ < labelname >从服务对象:每个标签。
  • __meta_kubernetes_service_labelpresent_ < labelname >:真正的为每个标签的服务对象。
  • __meta_kubernetes_service_name:服务对象的名称。
  • __meta_kubernetes_service_port_name目标:服务端口的名称。
  • __meta_kubernetes_service_port_protocol:协议服务端口的目标。

圆荚体

圆荚体角色发现所有豆荚和暴露他们的容器作为目标。对于每个宣布一个集装箱港,生成一个目标。如果一个集装箱没有指定端口,每集装箱港区的目标是通过重新创建手动添加一个端口。

可用的元标签:

  • __meta_kubernetes_namespace:圆荚体对象的名称空间。
  • __meta_kubernetes_pod_name:圆荚体对象的名称。
  • __meta_kubernetes_pod_ip:豆荚的豆荚IP对象。
  • __meta_kubernetes_pod_label_ < labelname >:每个标签从豆荚对象。
  • __meta_kubernetes_pod_labelpresent_ < labelname >:真正的为每个标签从豆荚对象。
  • __meta_kubernetes_pod_annotation_ < annotationname >:每个注释从豆荚对象。
  • __meta_kubernetes_pod_annotationpresent_ < annotationname >:真正的每个注释从豆荚对象。
  • __meta_kubernetes_pod_container_init:真正的如果是一个容器InitContainer
  • __meta_kubernetes_pod_container_name:目标地址指向容器的名称。
  • __meta_kubernetes_pod_container_port_name:集装箱港口的名称。
  • __meta_kubernetes_pod_container_port_number:数量的集装箱港口。
  • __meta_kubernetes_pod_container_port_protocol:集装箱港口的协议。
  • __meta_kubernetes_pod_ready:设置为真正的豆荚的就绪状态。
  • __meta_kubernetes_pod_phase:设置为等待,运行,成功,失败的未知的生命周期
  • __meta_kubernetes_pod_node_name:节点的名称预计到仓。
  • __meta_kubernetes_pod_host_ip:当前主机IP的豆荚对象。
  • __meta_kubernetes_pod_uid:豆荚对象的UID。
  • __meta_kubernetes_pod_controller_kind:对象的豆荚控制器。
  • __meta_kubernetes_pod_controller_name:豆荚控制器的名称。

端点

端点角色发现目标上市服务的端点。为每个端点地址发现一个目标/端口。如果端点豆荚,豆荚的所有额外的集装箱港口,而不是绑定到一个端点端口,被发现为目标。

可用的元标签:

  • __meta_kubernetes_namespace:端点对象的名称空间。
  • __meta_kubernetes_endpoints_name:端点对象的名称。
  • 对所有目标发现直接从端点列表(那些没有另外推断从底层舱),以下附加标签:
    • __meta_kubernetes_endpoint_hostname:主机名的端点。
    • __meta_kubernetes_endpoint_node_name:节点承载端点的名称。
    • __meta_kubernetes_endpoint_ready:设置为真正的端点的就绪状态。
    • __meta_kubernetes_endpoint_port_name:端点端口的名称。
    • __meta_kubernetes_endpoint_port_protocol:协议的端点端口。
    • __meta_kubernetes_endpoint_address_target_kind:端点地址的目标。
    • __meta_kubernetes_endpoint_address_target_name:目标端点地址的名称。
  • 如果端点属于服务,所有的标签角色:服务发现均附呈。
  • 支持的所有目标吊舱,所有标签的角色:豆荚发现均附呈。

入口

入口角色发现每个入口的每条路径的目标。这通常是有用的黑箱监控的一个入口。地址将被设置为主机进入规范中指定。

可用的元标签:

  • __meta_kubernetes_namespace:导入的命名空间对象。
  • __meta_kubernetes_ingress_name:导入对象的名称。
  • __meta_kubernetes_ingress_label_ < labelname >从进入对象:每个标签。
  • __meta_kubernetes_ingress_labelpresent_ < labelname >:真正的为每个标签从入口对象。
  • __meta_kubernetes_ingress_annotation_ < annotationname >:每个注释从入口对象。
  • __meta_kubernetes_ingress_annotationpresent_ < annotationname >:真正的每个注释从入口对象。
  • __meta_kubernetes_ingress_scheme:协议方案的入口,https如果TLS配置设置,默认http
  • __meta_kubernetes_ingress_path:从进入规范。默认路径/

参见下面的配置选项Kubernetes发现:

# Kubernetes API来访问的信息。# API服务器地址。如果空,普罗米修斯被认为运行在集群的#将自动发现API服务器和使用pod的# CA证书和持票人在/var/run/secrets/kubernetes.io / serviceaccount /令牌文件。[api_server: <主机>]# Kubernetes实体的角色应该被发现。角色:<作用> #可选的用于验证API服务器身份验证信息。#注意‘basic_auth’,‘bearer_token’和‘bearer_token_file’选项#互斥。#密码和password_file是互斥的。#可选的HTTP基本身份验证信息。basic_auth(用户名:<字符串>):[密码:<秘密>][password_file <字符串>):#可选的无记名令牌的身份验证信息。[bearer_token: <秘密>]#可选的不记名令牌文件认证信息。 [ bearer_token_file:  ] # Optional proxy URL. [ proxy_url:  ] # TLS configuration. tls_config: [  ] # Optional namespace discovery. If omitted, all namespaces are used. namespaces: names: [ -  ] # Optional label and field selectors to limit the discovery process to a subset of available # resources. See # https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/ # and https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ to learn # more about the possible filters that can be used. The endpoints role supports pod, # service, and endpoint selectors. Roles only support selectors matching the role itself; # for example, the node role can only contain node selectors. # Note: When making decisions about using field/label selectors, make sure that this # is the best approach. It will prevent Promtail from reusing single list/watch # for all scrape configurations. This might result in a bigger load on the Kubernetes API, # because for each selector combination, there will be additional LIST/WATCH. # On the other hand, if you want to monitor a small subset of pods of a large cluster, # we recommend using selectors. The decision on the use of selectors or not depends # on the particular situation. [ selectors: [ - role:  [ label:  ] [ field:  ] ]]

在哪里<作用>必须端点,服务,圆荚体,节点,或入口

看到这个例子普罗米修斯配置文件对于一个详细的示例配置Kubernetes普罗米修斯。

您可能希望检查第三方普罗米修斯运营商普罗米修斯,自动设置Kubernetes之上。

consul_sd_config

领事SD配置允许检索刮的目标领事目录API。使用目录API时,每个运行Promtail会得到一个列表的所有服务整个领事集群时发现新目标。

下面的meta标签可在目标上重新确认:

  • __meta_consul_address:目标的地址
  • __meta_consul_dc:数据中心的名字为目标
  • __meta_consul_health:服务的健康状况
  • __meta_consul_metadata_ <键>:每个节点元数据的关键价值目标
  • __meta_consul_node:节点名定义为目标
  • __meta_consul_service_address:目标的服务地址
  • __meta_consul_service_id目标:服务ID
  • __meta_consul_service_metadata_ <键>:每个服务元数据的关键价值目标
  • __meta_consul_service_port:目标的服务端口
  • __meta_consul_service:目标属于服务的名称
  • __meta_consul_tagged_address_ <键>:每个节点标记地址键值的目标
  • __meta_consul_tags:目标的列表标签与标签分隔符
#目录访问领事API的信息。是#定义为领事文档要求。(服务器:<主机> |默认= " localhost: 8500 "][标记:<秘密>][数据中心:<字符串>][方案:<字符串> |默认=“http”][用户名:<字符串>][密码:<秘密>]tls_config: [< tls_config >] #一个目标检索的服务列表。如果省略,所有服务#刮。服务(——<字符串>):#看到https://www.consul.io/api/catalog.html list-nodes-for-service知道更多#可能可以使用过滤器。#一个可选的标记用于过滤列表节点对于一个给定的服务。服务必须包含在列表中所有标签。(——<字符串>)标签:#节点元数据对于一个给定的键/值对来过滤节点服务。[node_meta:[<字符串>:<字符串>…]]#领事的字符串标记加入到标签标签。 [ tag_separator:  | default = , ] # Allow stale Consul results (see https://www.consul.io/api/features/consistency.html). Will reduce load on Consul. [ allow_stale:  | default = true ] # The time after which the provided names are refreshed. # On large setup it might be a good idea to increase this value because the catalog will change all the time. [ refresh_interval:  | default = 30s ]

注意,IP地址和端口用于刮组装为目标< __meta_consul_address >: < __meta_consul_service_port >。然而,在一些高设置,相关地址__meta_consul_service_address。在这些情况下,您可以使用重新用标签标明功能替代的特殊__address__标签。

重新确认阶段是首选和更强大的方式来过滤服务或服务基于节点任意标签。与成千上万的服务让用户可以更高效的使用基本的领事API直接支持过滤节点(目前节点的元数据和一个标记)。

consulagent_sd_config

领事剂SD配置允许检索刮目标领事的代理API。使用代理API时,每个运行Promtail只会服务与当地代理注册在同一个主机上运行时发现新目标。这是适合非常大的高集群的使用目录API将太慢或资源密集型的。

下面的meta标签可在目标上重新确认:

  • __meta_consulagent_address:目标的地址
  • __meta_consulagent_dc:数据中心的名字为目标
  • __meta_consulagent_health:服务的健康状况
  • __meta_consulagent_metadata_ <键>:每个节点元数据的关键价值目标
  • __meta_consulagent_node:节点名定义为目标
  • __meta_consulagent_service_address:目标的服务地址
  • __meta_consulagent_service_id目标:服务ID
  • __meta_consulagent_service_metadata_ <键>:每个服务元数据的关键价值目标
  • __meta_consulagent_service_port:目标的服务端口
  • __meta_consulagent_service:目标属于服务的名称
  • __meta_consulagent_tagged_address_ <键>:每个节点标记地址键值的目标
  • __meta_consulagent_tags:目标的列表标签与标签分隔符
#领事代理API来访问的信息。是#定义为领事文档要求。(服务器:<主机> |默认= " localhost: 8500 "][标记:<秘密>][数据中心:<字符串>][方案:<字符串> |默认=“http”][用户名:<字符串>][密码:<秘密>]tls_config: [< tls_config >] #一个目标检索的服务列表。如果省略,所有服务#刮。服务(——<字符串>):#看到https://www.consul.io/api-docs/agent/service过滤知道更多#可能可以使用过滤器。#一个可选的标记用于过滤列表节点对于一个给定的服务。服务必须包含在列表中所有标签。(——<字符串>)标签:#节点元数据对于一个给定的键/值对来过滤节点服务。[node_meta:[<字符串>:<字符串>…]]#领事的字符串标记加入到标签标签。 [ tag_separator:  | default = , ]

注意,IP地址和端口号用于刮组装为目标< __meta_consul_address >: < __meta_consul_service_port >。然而,在一些高设置,相关地址__meta_consul_service_address。在这些情况下,您可以使用重新用标签标明功能替代的特殊__address__标签。

重新确认阶段是首选和更强大的方式来过滤服务或服务基于节点任意标签。与成千上万的服务让用户可以更高效的使用基本的领事API直接支持过滤节点(目前节点的元数据和一个标记)。

docker_sd_config

码头工人服务发现允许检索目标从一个码头工人守护进程。它只会看集装箱码头工人守护进程引用的主机参数。码头工人在分布式服务发现应该在每个节点上运行设置。容器必须运行json文件journald日志记录的司机。

请注意,发现不会捡完容器。这意味着Promtail不会刮掉剩下的日志完成后重启容器。

配置是遗传的普罗米修斯的码头工人服务发现

#码头工人守护进程的地址。使用unix: / / / var /运行/码头工人。袜子的本地设置。主持人:<字符串> #可选代理URL。[proxy_url: <字符串>]# TLS配置。tls_config (< tls_config >): #港刮指标,当“角色”节点,发现#任务和服务没有发表的港口。(端口:< int > |默认= 80]#主机使用,如果容器是在主机网络模式。[host_networking_host: <字符串> |默认=“localhost”] #可选的过滤器来限制发现过程可用#资源的一个子集。#码头工人文档中列出了可用的过滤器:#容器:https://docs.docker.com/engine/api/v1.41/操作/ ContainerList[过滤器:[-名称:<字符串>价值观:<字符串>,[…]]]#之后,容器将刷新的时间。[refresh_interval: <时间> |默认= 60年代]# Promtail所使用的身份验证信息进行身份验证#码头工人守护进程。#注意“basic_auth”和“授权”选项是互斥的。 # `password` and `password_file` are mutually exclusive. # Optional HTTP basic authentication information. basic_auth: [ username:  ] [ password:  ] [ password_file:  ] # Optional `Authorization` header configuration. authorization: # Sets the authentication type. [ type:  | default: Bearer ] # Sets the credentials. It is mutually exclusive with # `credentials_file`. [ credentials:  ] # Sets the credentials to the credentials read from the configured file. # It is mutually exclusive with `credentials`. [ credentials_file:  ] # Optional OAuth 2.0 configuration. # Cannot be used at the same time as basic_auth or authorization. oauth2: [  ] # Configure whether HTTP requests follow HTTP 3xx redirects. [ follow_redirects:  | default = true ]

可用的元标签:

  • __meta_docker_container_id:容器的ID
  • __meta_docker_container_name:容器的名称
  • __meta_docker_container_network_mode:容器的网络模式
  • __meta_docker_container_label_ < labelname >:每个标签的容器
  • __meta_docker_container_log_stream:日志流类型stdoutstderr
  • __meta_docker_network_id:网络的ID
  • __meta_docker_network_name:网络的名称
  • __meta_docker_network_ingress:是否进入网络
  • __meta_docker_network_internal:是否内部网络
  • __meta_docker_network_label_ < labelname >:每个标签的网络
  • __meta_docker_network_scope:网络的范围
  • __meta_docker_network_ip:容器的IP网络
  • __meta_docker_port_private:在集装箱港口
  • __meta_docker_port_public如果存在一个端口映射:外部端口
  • __meta_docker_port_public_ip:公共IP如果存在一个端口映射

这些标签可以在重新使用。例如,以下配置擦伤容器命名鞭打和消除了斜杠(/从容器名称)。

scrape_configs: job_name: flog_scrape docker_sd_configs:主持人:unix: / / / var /运行/码头工人。袜子refresh_interval: 5 s过滤器:-名称:名称值:[鞭打]relabel_configs: - source_labels: [‘__meta_docker_container_name]正则表达式:“/ (. *)”target_label:“容器”

limits_config

可选limits_config块配置全球限制Promtail的实例。

#当真的,Promtail的实施速度限制在这个实例。[readline_rate_enabled: < bool > |默认= false) #日志行每秒的速率限制Promtail可能推动洛基的实例。[readline_rate: < int > |默认= 10000]#破裂线的数量的上限,这Promtail可能推动#洛基的实例。[readline_burst: < int > |默认= 10000]#当真实的,超过的速率限制导致这个实例Promtail抛弃#日志行,而不是发送给洛基。当假的,超过的速率限制#导致这个实例Promtail暂时推迟发送日志行和稍后重试。[readline_rate_drop: < bool > |默认= true) #活动流的最大数量限制。#限制流的数量是有用的作为一种机制来限制Promtail内存使用量,这有助于#避免伯父场景。# 0意味着它是禁用的。[max_streams: < int > |默认= 0)

target_config

target_config阻止控制阅读文件的行为发现目标。

#周期同步目录被监视和文件被跟踪发现#新的或停止观看的删除。sync_period:“10”

options_config

#一个以逗号分隔的标签中包含流滞后指标#“promtail_stream_lag_seconds”。默认值是“文件名”。“主机”标签#总是包括在内。流滞后指标表明哪些流写入洛基落后#;要注意使用太多的标签,#,因为它可以增加基数。[stream_lag_labels: <字符串> |默认=“文件名”]

tracing_config

跟踪Jaeger块配置跟踪。目前,有限的配置/环境变量只有。

#当真实,启用默认<布尔> | = false):

码头工人配置示例

相当困难的尾巴码头工人的文件在一个独立的机器,因为他们是在不同的位置为每个操作系统。我们推荐的码头工人记录司机为当地的码头工人安装或码头工人组成。

如果在Kubernetes环境中运行,你应该看看在定义的配置jsonnet,这些杠杆普罗米修斯服务发现库(给Promtail它的名字)来自动发现和尾矿豆荚。jsonnet配置解释与评论每个部分是什么。

示例静态配置

虽然Promtail可能是普罗米修斯服务发现命名的代码,很好的工作在相同的代码跟踪日志没有容器或容器环境直接在虚拟机或裸露的金属。

服务器:http_listen_port: 9080 grpc_listen_port: 0位置:文件名:/var/log/positions.yaml #这个位置需要被Promtail可写。客户:url: http://ip_or_hostname_where_Loki_run: 3100 /洛基/ api / v1 /推动scrape_configs: - job_name:系统pipeline_stages: static_configs: -目标:localhost标签:工作:varlogs #“工作”标签是相当标准的普罗米修斯和有用的链接指标和日志。主持人:主人#“主机”标签将有助于确定日志从这台机器与其他__path__: /var/log/*.日志#路径匹配使用第三方库:https://github.com/bmatcuk/doublestar

如果你旋转的日志,使用一个通配符模式时要小心* . log,并确保它不匹配的旋转日志文件。例如,如果你把你的日志server.logserver.01 - 01 - 1970. -日志每晚在同一个目录下,静态配置与通配符搜索模式* . log将新文件,阅读它,有效地导致整个天日志摄取。

没有目标的静态配置示例

虽然Promtail可能是普罗米修斯服务发现命名的代码,很好的工作在相同的代码跟踪日志没有容器或容器环境直接在虚拟机或裸露的金属。

服务器:http_listen_port: 9080 grpc_listen_port: 0位置:文件名:/var/log/positions.yaml #这个位置需要被Promtail可写。客户:url: http://ip_or_hostname_where_Loki_run: 3100 /洛基/ api / v1 /推动scrape_configs: - job_name:系统pipeline_stages: static_configs:标签:工作:varlogs #“工作”标签是相当标准的普罗米修斯和有用的链接指标和日志。主持人:主人#“主机”标签将有助于确定日志从这台机器与其他__path__: /var/log/*.日志#路径匹配使用第三方库:https://github.com/bmatcuk/doublestar

示例日志配置

这个例子从systemd日志读取条目:

服务器:http_listen_port: 9080 grpc_listen_port: 0位置:文件名:/ tmp /职位。yaml客户:url: http://ip_or_hostname_where_loki_runs: 3100 /洛基/ api / v1 /推动scrape_configs: - job_name:期刊杂志:max_age: 12 h标签:工作:systemd-journal relabel_configs: - source_labels: [‘__journal__systemd_unit] target_label:“单位”

Syslog配置示例

这个例子开始Promtail syslog接收机,可以接受syslog条目在Promtail TCP:

服务器:http_listen_port: 9080 grpc_listen_port: 0位置:文件名:/ tmp /职位。yaml客户:url: http://loki_addr: 3100 /洛基/ api / v1 /推动scrape_configs: - job_name: syslog syslog: listen_address: 0.0.0.0:1514标签:工作:“syslog”relabel_configs: - source_labels: [‘__syslog_message_hostname] target_label:“主机”

例子将配置

示例开始Promtail推动接收机和将接受来自其他Promtail实例的日志或码头工人记录司机:

服务器:http_listen_port: 9080 grpc_listen_port: 0位置:文件名:/ tmp /职位。yaml客户:url: http://ip_or_hostname_where_Loki_run: 3100 /洛基/ api / v1 /推动scrape_configs: - job_name: push1 loki_push_api:服务器:http_listen_port: 3500 grpc_listen_port: 3600标签:pushserver: push1

请注意,job_name必须提供和多个之间必须是唯一的吗loki_push_apiscrape_configs,它将用于登记指标。

因此,创建一个新的服务器实例http_listen_portgrpc_listen_port必须不同于Promtail吗服务器配置部分(除非是禁用)

你可以设置grpc_listen_port0有一个如果不使用httpgrpc随机端口分配。