将事件发送到 OpenSearch
您可以将 Logstash 事件发送到 OpenSearch 集群,然后使用 OpenSearch Dashboards 可视化您的事件。
请确保您已安装 Logstash、OpenSearch 和 OpenSearch Dashboards。
OpenSearch 输出插件
要运行 OpenSearch 输出插件,请在您的 pipeline.conf
文件中添加以下配置
output {
opensearch {
hosts => "https://:9200"
user => "admin"
password => "admin"
index => "logstash-logs-%{+YYYY.MM.dd}"
ssl_certificate_verification => false
}
}
示例演练
以下演练展示了如何发送 Logstash 事件的示例。
-
打开
config/pipeline.conf
文件并添加以下配置input { stdin { codec => json } } output { opensearch { hosts => "https://:9200" user => "admin" password => "admin" index => "logstash-logs-%{+YYYY.MM.dd}" ssl_certificate_verification => false } }
Logstash 管道通过终端接受 JSON 输入,并将事件发送到本地运行的 OpenSearch 集群。Logstash 将事件写入一个使用 logstash-logs-%{+YYYY.MM.dd}
命名约定的索引中。
-
启动 Logstash
$ bin/logstash -f config/pipeline.conf --config.reload.automatic
config/pipeline.conf
是pipeline.conf
文件的相对路径。您也可以使用绝对路径。 -
在终端中添加一个 JSON 对象
{ "amount": 10, "quantity": 2}
-
启动 OpenSearch Dashboards 并选择 开发工具
GET _cat/indices?v health | status | index | uuid | pri | rep | docs.count | docs.deleted | store.size | pri.store.size green | open | logstash-logs-2021.07.01 | iuh648LYSnmQrkGf70pplA | 1 | 1 | 1 | 0 | 10.3kb | 5.1kb
在输出插件中添加不同的身份验证机制
除了现有身份验证机制之外,您还可以使用 auth_type
设置添加新的身份验证机制,如下面示例配置所示
output {
opensearch {
hosts => ["https://hostname:port"]
auth_type => {
type => 'basic'
user => 'admin'
password => 'admin'
}
index => "logstash-logs-%{+YYYY.MM.dd}"
}
}
auth_type 中的参数
auth_type
设置中支持以下参数
type
(字符串):身份验证类型。user
:用户名。password
:用于基本身份验证的密码。
AWS IAM 身份验证配置
要使用 aws_iam
身份验证运行 Logstash 输出 OpenSearch 插件,请添加以下配置
output {
opensearch {
hosts => ["https://hostname:port"]
auth_type => {
type => 'aws_iam'
aws_access_key_id => 'ACCESS_KEY'
aws_secret_access_key => 'SECRET_KEY'
region => 'us-west-2'
service_name => 'es'
}
index => "logstash-logs-%{+YYYY.MM.dd}"
}
}
必需参数
hosts
(字符串数组):AmazonOpensearchService
域端点和端口号。auth_type
(JSON 对象):身份验证设置。type
(字符串):“aws_iam”。aws_access_key_id
(字符串):AWS 访问密钥。aws_secret_access_key
(字符串):AWS 秘密访问密钥。region
(字符串,默认值 => “us-east-1”):域所在的区域。
- port (字符串):AmazonOpensearchService 监听 443 端口以进行
HTTPS
连接。 - protocol (字符串):用于连接的协议。对于
AmazonOpensearchService
,协议为https
。
可选参数
template
(路径):您可以在此处设置自己的模板路径。如果未指定模板,插件将使用默认模板。template_name
(字符串,默认值 =>logstash
):定义模板在 OpenSearch 中的命名方式。service_name
(字符串):定义用于aws_iam
身份验证的服务名称。legacy_template
(布尔值,默认值 =>true
):选择 OpenSearch 模板 API。当为true
时,使用从_template
API 派生的旧模板。当为false
时,使用index_template
API。default_server_major_version
(数字):当无法从 OpenSearch 根 URL 获取时,要使用的 OpenSearch 服务器主要版本。如果未设置,当无法获取版本时,插件将抛出异常。target_bulk_bytes
(数字):缓冲区中的最大字节数。当达到最大值时,Logstash 会将数据刷新到 OpenSearch。当批量请求对于 OpenSearch 集群来说过大并且集群返回429
错误时,此功能非常有用。
凭证解析逻辑
以下列表提供了凭证解析逻辑的详细信息
- 用户在配置中传入
aws_access_key_id
和aws_secret_access_key
。 - 建议使用环境变量,例如
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
,因为它们除了.NET
之外,所有 AWS SDK 和 CLI 都能识别。您还可以使用 Java SDK 识别的AWS_ACCESS_KEY
和AWS_SECRET_KEY
。 - 在
~/.aws/credentials
目录中找到的凭证配置文件,由所有 AWS SDK 和 AWS CLI 共享。 - 实例配置文件凭证通过 Amazon EC2 元数据服务提供。
数据流
OpenSearch 输出插件可以在 OpenSearch 中存储时间序列数据集(如日志、事件和指标)和非时间序列数据。建议使用数据流将时间序列数据集(如日志、指标和事件)索引到 OpenSearch 中。
要了解有关数据流的更多信息,请参阅数据流文档。
要通过 Logstash 将数据摄入数据流,请创建数据流并指定数据流的名称,然后将 action
设置为 create
,如下面示例配置所示
output {
opensearch {
hosts => ["https://hostname:port"]
auth_type => {
type => 'basic'
user => 'admin'
password => 'admin'
}
index => "my-data-stream"
action => "create"
}
}