Link Search Menu Expand Document Documentation Menu

将事件发送到 OpenSearch

您可以将 Logstash 事件发送到 OpenSearch 集群,然后使用 OpenSearch Dashboards 可视化您的事件。

请确保您已安装 LogstashOpenSearchOpenSearch 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 事件的示例。

  1. 打开 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} 命名约定的索引中。

  1. 启动 Logstash

     $ bin/logstash -f config/pipeline.conf --config.reload.automatic
    

    config/pipeline.confpipeline.conf 文件的相对路径。您也可以使用绝对路径。

  2. 在终端中添加一个 JSON 对象

     { "amount": 10, "quantity": 2}
    
  3. 启动 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_idaws_secret_access_key
  • 建议使用环境变量,例如 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY,因为它们除了 .NET 之外,所有 AWS SDK 和 CLI 都能识别。您还可以使用 Java SDK 识别的 AWS_ACCESS_KEYAWS_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"
   }            
}