You need to enable JavaScript to run this app.
文档中心
云搜索服务

云搜索服务

复制全文
下载 pdf
数据集成
通过 Logstash 读取对象存储数据写入云搜索服务
复制全文
下载 pdf
通过 Logstash 读取对象存储数据写入云搜索服务
本文介绍如何通过 Logstash 管道,实现读取对象存储存储桶中的日志数据,并写入到云搜索服务索引中。​
背景信息​
对象存储 TOS(Torch Object Storage)是火山引擎提供的海量、安全、低成本、易用、高可靠、高可用的分布式云存储服务。对象存储提供完全兼容 AWS S3 的协议。详细信息,请参见 AWS S3 协议兼容性说明。因此在 Logstash 中可以用 Logstash S3 插件从 TOS 中读取数据。​
流程介绍​
​​​
  1. 准备对象存储存储桶。​
  • 您需要在对象存储控制台创建一个存储桶,然后获取存储桶的访问地址,以便在 Logstash 管道中填入信息实现与对象存储的连通。​
  1. 准备数据目的云搜索服务索引。​
  • 您需要在云搜索服务控制台创建实例并获取实例的访问地址。​
  1. 创建 Logstash 管道。​
  • 当您准备好数据源和数据目的后,便可以在云搜索服务控制台创建 Logstash 管道。​
注意事项​
为保证网络访问安全,本文所使用的云产品服务均使用内网访问方式,因此要求对象存储与云搜索服务实例均处于相同地域的同一个 VPC 内。​
您可以在创建云资源前,先创建私有网络。具体操作,请参见创建私有网络和创建子网。​
步骤一:准备对象存储存储桶​
通过 Logstash 管道将对象存储数据写入云搜索服务前,首先需要先为对象存储完成如下准备工作:​
  1. 创建存储桶。具体操作,请参见创建存储桶。​
  1. 获取存储桶的 S3 endpoint。具体操作,请参见查看桶信息。​
步骤二:准备数据目标端云搜索服务索引​
使用 Logstash 管道消费 TLS 日志,需要准备一个数据写入的目的源,本文使用的是云搜索服务索引。请按照以下步骤创建实例,并获取实例的访问地址。​
  1. 创建云搜索服务实例。具体操作,请参见创建实例。​
  1. 获取实例的私网地址。具体操作,请参见查看实例详情。​
  1. (可选)您还可以为 Kibana 开启公网访问,然后勾选需要绑定的公网 IP,为 Kibana 开启公网访问能力,以便后续可以登录 Kibana Web 页面查询索引中的数据。如果您没有可用的公网 IP,可前往控制台创建。具体操作,请参见申请公网 IP。​
步骤三:创建 Logstash 管道​
  1. 在步骤二的云搜索服务实例的同一地域和 VPC 中创建 Logstash 实例。具体操作,请参见创建 Logstash 实例。​
  1. 创建 Logstash 管道,根据实际情况修改管道内容。具体操作,请参见创建管道。配置示例如下。​
  • ​
    input {​
    s3 {​
    "access_key_id" => "**"​
    "secret_access_key" => "**"​
    "endpoint" => "https://tos-s3-cn-beijing.volces.com"​
    "bucket" => "**"​
    additional_settings => {​
    "ssl_verify_peer" => false​
    }​
    codec => "json"​
    }​
    }​
    filter {​
    # 删除 S3 input 自动生成的原始 JSON 字段​
    mutate {​
    remove_field => ["event"]​
    }​
    }​
    output {​
    opensearch {​
    # 目标实例访问地址​
    hosts => "https://opensearch-o-**.escloud.ivolces.com:9200"​
    # 目标实例 basicAuth 鉴权信息,如果有​
    user => "admin"​
    password => "**"​
    # 需要写入的索引名​
    index => "tos_test"​
    # 是否仅用`hosts`配置项数组中的 HTTPS 链接进行请求​
    ssl => false​
    ssl_certificate_verification => false​
    }​
    }​
    ​
说明​
  • bucket、endpoint 填写在步骤一创建的桶名称和 endpoint。​
  • additional_settings 中的 ssl_verify_peer 可以在 HTTPS 访问的情况下跳过证书校验。​
  • input.s3.codec 和 filter 填写仅为示例,根据实际数据格式修改。​
  • sincedb_path 默认为 /logstash-data/system/plugins/inputs/s3/sincedb_* ,是持久化路径,实例重启不会丢失。无特殊需求时可保持默认。​
  1. (可选)如需调试数据格式和内容,按如下配置 Logstash 管道。具体操作,请参见使用调试功能。​
​
input {​
s3 {​
"access_key_id" => "**"​
"secret_access_key" => "**"​
"endpoint" => "https://tos-s3-cn-beijing.volces.com"​
"bucket" => "**"​
additional_settings => {​
"ssl_verify_peer" => false​
}​
codec => "json"​
}​
}​
filter {​
ruby {​
code => '​
require "time"​
require "json"​
local_time = Time.now.getlocal.strftime("%Y-%m-%dT%H:%M:%S.%3N")​
event.set("rfc3339_local", local_time) # rfc3339_local 是字段名​
event.set("message", event.to_hash.to_json)​
'​
}​
}​
output {​
file {​
path => "/logstash-logs/user-debug.log"​
codec => line {​
format => "[%{rfc3339_local}] %{message}"​
}​
}​
}​
​
结果验证​
当消费信息的任务运行正常后,您可以登录 Kibana Web 页面,查询示例索引 tos_test 中是否已写入对象存储数据。具体操作,请参见登录 Kibana/Dashboards。​
在 Kibana Web 页面左侧导航栏选择 Dev Tools,然后在 Console 左侧代码区域输入 GET /tos_test/_search,再单击执行按钮。​
当返回如下类似信息时,表示已成功从对象存储中读取数据并写入到云搜索索引。​
​
{​
"took": 3,​
"timed_out": false,​
"_shards": {​
"total": 1,​
"successful": 1,​
"skipped": 0,​
"failed": 0​
},​
"hits": {​
"total": {​
"value": 10,​
"relation": "eq"​
},​
"max_score": 1,​
"hits": [​
{​
"_index": "tos_test",​
"_id": "9LOU6ZsB9jFptnLdIYsB",​
"_score": 1,​
"_source": {​
"ip": "1.1.1.1",​
"@version": "1",​
"@timestamp": "2026-01-23T06:39:17.591145505Z",​
"action": "ALLOW",​
"timestamp": "2024-01-01T10:00:01Z"​
}​
},​
// ......仅展示部分数据。​
]​
}​
}​
​
最近更新时间:2026.07.31 16:03:48
这个页面对您有帮助吗?
有用
有用
无用
无用