配置 Elasticsearch 输出
编辑配置 Elasticsearch 输出
编辑Elasticsearch 输出使用 Elasticsearch HTTP API 将事件直接发送到 Elasticsearch。
兼容性: 此输出适用于所有兼容版本的 Elasticsearch。请参阅 Elastic 支持矩阵。
此示例在 elastic-agent.yml
文件中配置名为 default
的 Elasticsearch 输出
outputs: default: type: elasticsearch hosts: [127.0.0.1:9200] username: elastic password: changeme
此示例与上一个示例类似,不同之处在于它使用了推荐的 基于令牌(API 密钥)的身份验证
outputs: default: type: elasticsearch hosts: [127.0.0.1:9200] api_key: "my_api_key"
在 Elastic Cloud Serverless 环境中需要基于令牌的身份验证。
Elasticsearch 输出配置设置
编辑elasticsearch
输出类型支持以下按类别分组的设置。许多这些设置都具有合理的默认值,允许您以最少的配置运行 Elastic Agent。
常用设置
编辑设置 | 描述 | ||
---|---|---|---|
(布尔值) 启用或禁用输出。如果设置为 默认值: |
|||
(列表) 要连接到的 Elasticsearch 节点列表。事件将以轮询方式分发到这些节点。如果一个节点变得不可访问,则事件会自动发送到另一个节点。每个 Elasticsearch 节点都可以定义为 当节点定义为 outputs: default: type: elasticsearch hosts: ["10.45.3.2:9220", "10.45.3.1:9230"] protocol: https path: /elasticsearch
请注意,Elastic Cloud Serverless 环境中的 Elasticsearch 节点在 443 端口上公开。 |
|||
(字符串) Elasticsearch 可访问的协议名称。选项包括: |
|||
(布尔值) 如果设置为 默认值: |
|||
(字符串) 在 CONNECT 请求期间发送到代理的附加标头。 |
|||
(字符串) 连接到 Elasticsearch 服务器时使用的代理的 URL。该值可以是完整的 URL 或 |
身份验证设置
编辑通过 elasticsearch
输出将数据发送到安全集群时,Elastic Agent 可以使用以下任何身份验证方法
基本身份验证凭据
编辑outputs: default: type: elasticsearch hosts: ["https://myEShost:9200"] username: "your-username" password: "your-password"
设置 | 描述 |
---|---|
(字符串) 连接到 Elasticsearch 的基本身份验证密码。 |
|
(字符串) 连接到 Elasticsearch 的基本身份验证用户名。 此用户需要将事件发布到 Elasticsearch 的所需权限。 请注意,在 Elastic Cloud Serverless 环境中,您需要使用 基于令牌(API 密钥)的身份验证。 |
基于令牌(API 密钥)的身份验证
编辑outputs: default: type: elasticsearch hosts: ["https://myEShost:9200"] api_key: "KnR6yE41RrSowb0kQ0HWoA"
设置 | 描述 |
---|---|
(字符串) 您可以使用 API 密钥 来保护与 Elasticsearch 的通信安全,而不是使用用户名和密码。该值必须是 API 密钥的 ID 和 API 密钥,用冒号分隔: |
公钥基础设施 (PKI) 证书
编辑outputs: default: type: elasticsearch hosts: ["https://myEShost:9200"] ssl.certificate: "/etc/pki/client/cert.pem" ssl.key: "/etc/pki/client/cert.key"
有关可用设置的列表,请参阅 SSL/TLS,特别是 表 7,“常用配置选项” 和 表 8,“客户端配置选项” 下的设置。
Kerberos
编辑支持以下加密类型:
- aes128-cts-hmac-sha1-96
- aes128-cts-hmac-sha256-128
- aes256-cts-hmac-sha1-96
- aes256-cts-hmac-sha384-192
- des3-cbc-sha1-kd
- rc4-hmac
使用 Kerberos 基于密码的身份验证的示例输出配置
outputs: default: type: elasticsearch hosts: ["http://my-elasticsearch.elastic.co:9200"] kerberos.auth_type: password kerberos.username: "elastic" kerberos.password: "changeme" kerberos.config_path: "/etc/krb5.conf" kerberos.realm: "ELASTIC.CO"
Elasticsearch 实例的服务主体名称由这些选项构建。基于此配置,名称将为:
HTTP/[email protected]
设置 | 描述 |
---|---|
(字符串) 要与 Kerberos KDC 一起使用的身份验证类型
默认值: |
|
(字符串) |
|
(布尔值) 启用或禁用 Kerberos 配置。 如果 |
|
(布尔值) 如果为 默认值: |
|
(字符串) 如果 |
|
(字符串) 如果 |
|
(字符串) 输出所在的领域的名称。 |
|
(字符串) 用于连接到输出的主体的名称。 |
兼容性设置
编辑设置 | 描述 |
---|---|
允许 Elastic Agent 连接并向运行的 Elasticsearch 实例发送输出,该实例的版本早于 Agent 版本。 请注意,此设置不会影响 Elastic Agent 连接到 Fleet Server 的能力。Fleet Server 不会接受来自主要或次要版本较新的 Agent 的连接。它将接受来自补丁版本较新的 Agent 的连接。例如,版本 8.14.3 的 Elastic Agent 可以连接到版本 8.14.0 的 Fleet Server,但版本 8.15.0 或更高版本的 Agent 无法连接。 默认值: |
数据解析、过滤和操作设置
编辑用于解析、过滤和转换数据的设置。
设置 | 描述 |
---|---|
(布尔值) 配置字符串中 HTML 的转义。设置为 默认值: |
|
(字符串) 指定要将事件写入的 摄取管道 的格式字符串值。 outputs: default: type: elasticsearchoutput.elasticsearch: hosts: ["https://127.0.0.1:9200"] pipeline: my_pipeline_id 您可以使用格式字符串访问任何事件字段来动态设置摄取管道。例如,此配置使用自定义字段 outputs: default: type: elasticsearch hosts: ["https://127.0.0.1:9200"] pipeline: "%{[fields.log_type]}_pipeline" 通过此配置,所有具有 要了解如何向事件添加自定义字段,请参阅 有关以其他方式动态设置摄取管道的更多信息,请参阅 |
|
管道选择器规则数组。每个规则指定用于匹配规则的事件的 摄取管道。在发布过程中,Elastic Agent 使用数组中的第一个匹配规则。规则可以包含条件语句、基于格式字符串的字段和名称映射。如果缺少 规则设置
此处也支持处理器支持的所有条件。 以下示例根据 outputs: default: type: elasticsearch hosts: ["https://127.0.0.1:9200"] pipelines: - pipeline: "warning_pipeline" when.contains: message: "WARN" - pipeline: "error_pipeline" when.contains: message: "ERR" 下面的示例通过获取 outputs: default: type: elasticsearch hosts: ["https://127.0.0.1:9200"] pipelines: - pipeline: "%{[fields.log_type]}" mappings: critical: "sev1_pipeline" normal: "sev2_pipeline" default: "sev3_pipeline" 使用此配置,所有具有 |
HTTP 设置
编辑修改发送到 Elasticsearch 的 HTTP 请求的设置。
内存队列设置
编辑内存队列将所有事件保留在内存中。
内存队列等待输出确认或丢弃事件。如果队列已满,则无法将新事件插入内存队列。只有在来自输出的信号之后,队列才会释放空间以接受更多事件。
内存队列由参数 flush.min_events
和 flush.timeout
控制。flush.min_events
限制单个批次中可以包含的事件数量,flush.timeout
指定队列应等待多长时间才能完全填充事件请求。如果输出支持 bulk_max_size
参数,则最大批次大小将是 bulk_max_size
和 flush.min_events
中较小的一个。
flush.min_events
是一个旧参数,新的配置应优先使用 bulk_max_size
来控制批次大小。从 8.13 版本开始,使用 flush.min_events
而不是 bulk_max_size
来限制批次大小永远不会带来性能优势。
在同步模式下,只要事件可用,就会立即填充事件请求,即使没有足够的事件来填充请求的批次也是如此。当必须将延迟降至最低时,这很有用。要使用同步模式,请将 flush.timeout
设置为 0。
为了向后兼容,也可以通过将 flush.min_events
设置为 0 或 1 来激活同步模式。在这种情况下,批次大小将限制为队列容量的一半。
在异步模式下,事件请求将等待最长指定的超时时间以尝试完全填充请求的批次。如果超时到期,队列将返回包含所有可用事件的部分批次。要使用异步模式,请将 flush.timeout
设置为正持续时间,例如 5s。
此示例配置在有足够的事件来填充输出的请求(通常由 bulk_max_size
控制,并且由 flush.min_events
限制为最多 512 个事件)时或事件已等待时将事件转发到输出。
queue.mem.events: 4096 queue.mem.flush.min_events: 512 queue.mem.flush.timeout: 5s
设置 | 描述 |
---|---|
队列可以存储的事件数。此值应被 默认值: |
|
默认值: |
|
(整数) 默认值: |
性能调整设置
编辑通过 Elasticsearch 输出发送数据时可能会影响性能的设置。
使用 preset
选项自动配置性能调整设置组以针对 throughput
、scale
、latency
进行优化,或者您可以选择一组 balanced
的性能规范。
性能调整 preset
值优先于可能单独定义的任何设置。如果要更改任何设置,请将 preset
设置为 custom
并分别指定性能调整设置。
设置 | 描述 |
---|---|
(字符串)网络错误后等待尝试重新连接到 Elasticsearch 的秒数。等待 默认值: |
|
(字符串)网络错误后等待尝试连接到 Elasticsearch 的最大秒数。 默认值: |
|
(整数)在单个 Elasticsearch 批量 API 索引请求中批量处理的事件最大数量。 事件可以收集到批次中。Elastic Agent 将把大于 指定更大的批次大小可以通过降低发送事件的开销来提高性能。但是,较大的批次大小也会增加处理时间,这可能会导致 API 错误、连接中断、发布请求超时以及最终导致吞吐量降低。 将 默认值: |
|
(整数) gzip 压缩级别。将此值设置为 提高压缩级别会减少网络使用量,但会增加 CPU 使用率。 默认值: |
|
(整数)发布失败后重试发布事件的次数。在指定的重试次数后,事件通常会被丢弃。 将 默认值: |
|
配置性能调整设置的完整组,以优化将数据发送到 Elasticsearch 输出时的 Elastic Agent 性能。 请参阅 性能调整设置,其中包含一个表格,显示与任何预设关联的值组,以及另一个表格,显示不同预设选项测试的每秒事件数 (EPS) 结果。 性能调整预设设置
默认值: |
|
(字符串)Elasticsearch 请求的 HTTP 请求超时(秒)。 默认值: |
|
(整数)每个配置的主机发布事件的工作程序数量。例如:如果您有两个主机和三个工作程序,则总共启动六个工作程序(每个主机三个)。 默认值: |