HTTP

http 输出插件允许将您的记录输出到 HTTP 端点。目前,该功能非常基础,它以 MessagePack(或JSON)格式的数据记录向 HTTP 端点发出 POST 请求。

Configuration Parameters

Key Description default
Host 目标 HTTP 服务的主机名或 IP 地址 127.0.0.1
HTTP_User 基本身份认证用户名
HTTP_Passwd 基本身份认证密码
Port HTTP 服务的端口 80
Proxy 指定 HTTP 代理。该值的预期格式为 http://host:porthttps 协议的代理还不支持
URI 指定目标 Web 服务器 HTTP URI,如: /something /
Format 指定要在 HTTP 请求正文中使用的数据格式,默认使用 msgpack。其它支持的格式是 json,json_stream,json_lines,gelf msgpack
header_tag 为原始的消息标签指定一个可选的 HTTP 请求头
Header 添加 HTTP 请求头的键值对。可以设置多个
json_date_key 在输出中指定日期字段的名称 date
json_date_format 指定日期格式。支持的格式为 double,iso8601(如: 2018-05-30T09:39:52.000681Z) double
gelf_timestamp_key gelf 格式的数据格式指定 timestamp 的键
gelf_host_key gelf 格式的数据格式指定 host 的键
gelf_short_messge_key gelf 格式的数据格式指定 shortmessge 的键
gelf_full_message_key gelf 格式的数据格式指定 fullmessge 的键
gelf_level_key gelf 格式的数据格式指定 level 的键

TLS / SSL

http 输出插件支持 TLS/SSL,有关可用属性和配置的详细信息,请参阅 TLS/SSL 部分。

Getting Started

要将记录输出到 HTTP 服务器,您可以从命令行或通过配置文件运行插件:

Command Line

http 插件可以通过两种方式从命令行读取参数,通过 -p 参数或直接通过服务 URI 进行设置。URI 格式如下:

  1. http://host:port/something

使用指定的格式,您可以通过以下方式启动 Fluent Bit:

  1. $ fluent-bit -i cpu -t cpu -o http://192.168.2.3:80/something -m '*'

Configuration File

在您的主配置文件中,添加如下 InputOutput 配置段:

  1. [INPUT]
  2. Name cpu
  3. Tag cpu
  4. [OUTPUT]
  5. Name http
  6. Match *
  7. Host 192.168.2.3
  8. Port 80
  9. URI /something

默认情况下,URI 会成为输出记录的标签,原始标签值将被忽略。要保留标签,必须基于多个配置段并将其输出到不同的 URI。

我们还支持的另一种方式时在可配置的请求头中发送原始标签。接收方可以根据请求头字段执行所需的操作: 解析它并将其用作消息的标签。示例如下:

要配置此行为,请添加以下配置:

  1. [OUTPUT]
  2. Name http
  3. Match *
  4. Host 192.168.2.3
  5. Port 80
  6. URI /something
  7. Format json
  8. header_tag FLUENT-TAG

如果您使用 Fluentd 作为数据接收器,则可以使用 in_httpout_rewrite_tag_filter 来使用此 HTTP 请求头。

  1. <source>
  2. @type http
  3. add_http_headers true
  4. </source>
  5. <match something>
  6. @type rewrite_tag_filter
  7. <rule>
  8. key HTTP_FLUENT_TAG
  9. pattern /^(.*)$/
  10. tag $1
  11. </rule>
  12. </match>

请注意,我们使用自定义请求头覆盖了值为 URI 路径的标签。

Example : Add a header

  1. [OUTPUT]
  2. Name http
  3. Match *
  4. Host 127.0.0.1
  5. Port 9000
  6. Header X-Key-A Value_A
  7. Header X-Key-B Value_B
  8. URI /something

Example : Sumo Logic HTTP Collector

Sumo Logic 建议的配置是使用 iso8601 格式时间戳的 json_lines 格式记录。PrivateKey 指定用于配置的 HTTP 收集器。

  1. [OUTPUT]
  2. Name http
  3. Match *
  4. Host collectors.au.sumologic.com
  5. Port 443
  6. URI /receiver/v1/http/[PrivateKey]
  7. Format json_lines
  8. Json_date_key timestamp
  9. Json_date_format iso8601

Sumo Logic 查询 CPU 输入插件的示例(需要 iso8601 日期格式的 json_lines 格式记录)如下:

  1. _sourcecategory="my_fluent_bit"
  2. | json "cpu_p" as cpu
  3. | timeslice 1m
  4. | max(cpu) as cpu group by _timeslice