菜单
开源

发现marathon

discovery.marathon 允许您从 Marathon的 服务 API 中检索抓取目标。

用法

alloy
discovery.marathon "LABEL" {
  servers = [MARATHON_SERVER1, MARATHON_SERVER2...]
}

参数

支持以下参数

名称类型描述默认值必需
servers列表(字符串)Marathon服务器的列表。
refresh_interval持续时间刷新目标列表的间隔。"30s"
auth_token秘密用于验证的认证令牌。
auth_token_file字符串包含用于认证的授权令牌的文件。
bearer_token_file字符串包含用于认证的授权令牌的文件。
bearer_token秘密用于认证的授权令牌。
enable_http2bool是否支持HTTP2用于请求。true
follow_redirectsbool是否应跟随服务器返回的重定向。true
proxy_url字符串用于发送请求的HTTP代理。
no_proxy字符串以逗号分隔的IP地址、CIDR表示法和域名列表,排除代理。
proxy_from_environmentbool使用环境变量指示的代理URL。false
proxy_connect_headermap(list(secret))指定在CONNECT请求期间发送给代理的标头。

最多只能提供以下之一

no_proxy 可以包含IP地址、CIDR表示法和域名。IP和域名可以包含端口号。《proxy_url》必须在配置了《no_proxy》时配置。

proxy_from_environment 使用环境变量HTTP_PROXY、HTTPS_PROXY和NO_PROXY(或其小写版本)。除非由NO_PROXY排除,否则请求将使用与它们方案匹配的环境变量中的代理。如果配置了《proxy_from_environment》,则不应配置《proxy_url》和《no_proxy》。

proxy_connect_header 应仅当配置了《proxy_url》或《proxy_from_environment》时配置。

以下块可以在《discovery.marathon》的定义内部使用

层次结构描述必需
basic_authbasic_auth配置用于端点的basic_auth。
authorizationauthorization配置端点的通用授权。
oauth2oauth2配置用于端点的OAuth2。
oauth2 > tls_configtls_config配置连接到端点的TLS设置。
tls_configtls_config配置连接到端点的TLS设置。

《>》符号表示更深层次的嵌套。例如,《oauth2 > tls_config》指的是在《oauth2》块内定义的《tls_config》块。

basic_auth 块

名称类型描述默认值必需
password_file字符串包含基本认证密码的文件。
password秘密基本认证密码。
username字符串基本认证用户名。

《password》和《password_file》互斥,且在《basic_auth》块内部只能提供其中一个。

authorization 块

名称类型描述默认值必需
credentials_file字符串包含密钥值的文件。
credentials秘密密钥值。
type字符串授权类型,例如,“Bearer”。

《credential》和《credentials_file》互斥,且在《authorization》块内部只能提供其中一个。

oauth2 块

名称类型描述默认值必需
client_id字符串OAuth2 客户端ID。
client_secret_file字符串包含OAuth2客户端密钥的文件。
client_secret秘密OAuth2 客户端密钥。
endpoint_paramsmap(string)追加到令牌URL的可选参数。
proxy_url字符串用于发送请求的HTTP代理。
no_proxy字符串以逗号分隔的IP地址、CIDR表示法和域名列表,排除代理。
proxy_from_environmentbool使用环境变量指示的代理URL。false
proxy_connect_headermap(list(secret))指定在CONNECT请求期间发送给代理的标头。
scopes列表(字符串)用于认证的权限列表。
token_url字符串从其中获取令牌的URL。

《client_secret》和《client_secret_file》互斥,且在《oauth2》块内部只能提供其中一个。

《oauth2》块还可以包含单独的《tls_config》子块。

no_proxy 可以包含IP地址、CIDR表示法和域名。IP和域名可以包含端口号。《proxy_url》必须在配置了《no_proxy》时配置。

proxy_from_environment 使用环境变量HTTP_PROXY、HTTPS_PROXY和NO_PROXY(或其小写版本)。除非由NO_PROXY排除,否则请求将使用与它们方案匹配的环境变量中的代理。如果配置了《proxy_from_environment》,则不应配置《proxy_url》和《no_proxy》。

proxy_connect_header 应仅当配置了《proxy_url》或《proxy_from_environment》时配置。

tls_config 块

名称类型描述默认值必需
ca_pem字符串用于验证服务器的CA PEM编码文本。
ca_file字符串用于验证服务器的CA证书。
cert_pem字符串客户端认证的PEM编码文本证书。
cert_file字符串客户端认证的证书文件。
insecure_skip_verifybool禁用服务器证书的验证。
key_file字符串客户端认证的密钥文件。
key_pem秘密客户端认证的PEM编码文本。
min_version字符串可接受的最小TLS版本。
server_name字符串用于指示服务器名称的ServerName扩展。

以下参数对是互斥的,不能同时设置。

  • ca_pemca_file
  • cert_pemcert_file
  • key_pemkey_file

配置客户端认证时,必须提供客户端证书(使用cert_pemcert_file)和客户端密钥(使用key_pemkey_file)。

如果没有提供min_version,则可接受的最小TLS版本将继承Go的默认最小版本,即TLS 1.2。如果提供了min_version,则必须将其设置为以下字符串之一

  • "TLS10" (TLS 1.0)
  • "TLS11" (TLS 1.1)
  • "TLS12" (TLS 1.2)
  • "TLS13" (TLS 1.3)

导出字段

以下字段是导出的,可以被其他组件引用

名称类型描述
targetslist(map(string))从Marathon服务器发现的目标集合。

每个目标包括以下标签

  • __meta_marathon_app:应用名称(斜杠被破折号替换)。
  • __meta_marathon_image:使用的Docker镜像名称(如果可用)。
  • __meta_marathon_task:Mesos任务的ID。
  • __meta_marathon_app_label_<labelname>:附加到应用的任何Marathon标签。
  • __meta_marathon_port_definition_label_<labelname>:端口定义标签。
  • __meta_marathon_port_mapping_label_<labelname>:端口映射标签。
  • __meta_marathon_port_index:端口索引号(例如,PORT1为1)。

组件健康

当给定无效配置时,discovery.marathon才会报告为不健康。在这些情况下,导出字段将保留其最后的健康值。

调试信息

discovery.marathon不会公开任何特定组件的调试信息。

调试指标

discovery.marathon不会公开任何特定组件的调试指标。

示例

此示例从Marathon服务器发现目标

alloy
discovery.marathon "example" {
  servers = ["localhost:8500"]
}

prometheus.scrape "demo" {
  targets    = discovery.marathon.example.targets
  forward_to = [prometheus.remote_write.demo.receiver]
}

prometheus.remote_write "demo" {
  endpoint {
    url = PROMETHEUS_REMOTE_WRITE_URL

    basic_auth {
      username = USERNAME
      password = PASSWORD
    }
  }
}

替换以下

  • PROMETHEUS_REMOTE_WRITE_URL:将指标发送到的Prometheus远程写入兼容服务器的URL。
  • USERNAME:用于远程写入API认证的用户名。
  • PASSWORD:用于远程写入API认证的密码。

兼容组件

discovery.marathon导出的内容可以被以下组件消费

注意

连接某些组件可能不合理,或者组件可能需要进一步的配置才能正确连接。请参阅相关文档以获取更多详细信息。