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

云搜索服务

复制全文
下载 pdf
时序数据管理
利用 Data Streams 和 ISM 实现时序数据管理
复制全文
下载 pdf
利用 Data Streams 和 ISM 实现时序数据管理
本文以日志数据为例,介绍如何通过 OpenSearch 的 Data Streams 和 ISM 功能轻松实现时序数据的管理。​
背景信息​
在时序数据场景(例如日志数据)中,为了防止单个索引大小无限增长,常见的数据管理方法是将数据按天存储,每天通过 Rollover 切换到一个新的写索引,同时通过别名保证旧索引能被检索。这个数据管理流程包含了众多步骤,包括创建索引别名、创建 Rollover 数据管理策略、创建初始化索引、设置可写索引等步骤,操作流程比较繁琐。​
Data Streams 就是为时序数据管理场景而设计的功能,极大地简化了数据管理的配置步骤。本文以 nginx-log-generator 工具模拟生成的 Nginx 日志数据为例,介绍如何通过 OpenSearch 的 Data Streams 和 ISM 的功能组合来简化数据管理工作。​
注意事项​
  • 本文介绍的时序数据管理方法目前仅适用于 OpenSearch 实例和 Elasticsearch 7.10.2 实例。本文中使用 OpenSearch 实例作为示例。​
  • 索引模板和 ISM 策略只能针对未创建的数据流自动关联生效,也不支持直接将一个已经存在的索引转成 Data Stream,因此请先创建索引模板和 ISM 策略,再开始日志数据的写入。​
步骤一:创建索引模板​
  1. 通过公网访问 Dashboards。具体步骤,请参见公网访问 Kibana/Dashboards。​
  1. 在页面左侧菜单,选择 Management > Dev Tools,进入开发工具页面。​
  1. 创建索引模板。​
  • 创建名称为nginx-logs-template的索引模板。如果用户写入的索引名称是以 nginx-logs-开头,则系统会自动将其创建为数据流,同时创建对应的 backing index。​
  • ​
    PUT _index_template/nginx-logs-template​
    {​
    "index_patterns": [​
    "nginx-logs-*"​
    ],​
    "data_stream": {},​
    "priority": 100​
    }​
    ​
说明​
数据流默认要求写入的索引带有@timestamp字段,如果想用其他字段名,可以在创建索引模板的时候显式指定。​
​
PUT /_index_template/nginx-logs-template​
{​
"index_patterns": [​
"nginx-logs-*"​
],​
"data_stream": {​
"timestamp_field": {"name": "request_time"}​
},​
"priority": 100​
}​
​
步骤二:创建 ISM 策略​
  1. 在实例的 Dashboards 页面,进入 Management > Dev Tools 开发工具页面。​
  1. 创建自动 Rollover 策略,并关联索引模板。​
  • 创建 id 为rollover_nginx_logs的 ISM 策略,该策略会把一天前创建的索引自动 Rollover,并创建新的 backing index。​
  • ​
    OpenSearch 实例
    Elasticsearch 7.10.2 实例
    ​
    ​
    PUT _plugins/_ism/policies/rollover_nginx_logs​
    {​
    "policy": {​
    "description": "Rollover policy for nginx logs data stream",​
    "default_state": "rollover",​
    "states": [​
    {​
    "name": "rollover",​
    "actions": [​
    {​
    "rollover": {​
    "min_index_age": "1d"​
    }​
    }​
    ],​
    "transitions": []​
    }​
    ],​
    "ism_template": {​
    "index_patterns": [​
    "nginx-logs-*"​
    ],​
    "priority": 100​
    }​
    }​
    }​
    ​
    ​
步骤三:写入数据​
您需要完成创建索引模板和 ISM 策略的操作后,您才可以开始写入数据。如果写入的索引名称匹配到nginx-logs-*模式,系统就会自动创建对应的 Data Stream 和写入索引。​
本文选择通过 Logstash 的 OpenSearch output 插件 将 Nginx log 写入到 OpenSearch 实例中。Logstash 采集管道配置如下:​
​
input {​
file {​
path => "/tmp/nginx.log"​
type => "nginx"​
start_position => "beginning"​
}​
}​
​
filter {​
grok {​
match => { "message" => ['%{IPORHOST:remote_addr} - - \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) \"%{DATA:referrer}\" \"%{DATA:agent}\"'] }​
}​
}​
​
output {​
opensearch {​
# 目标OpenSearch实例的访问地址。​
hosts => ["https://localhost:9200"]​
# 索引名称。​
index => "nginx-logs-devbox"​
action => "create"​
# 目标OpenSearch实例的鉴权信息。​
user => "XXXX"​
password => "XXXXX"​
# 是否仅用hosts配置项数组中的https地址进行请求。​
ssl => true​
# 当使用https连接实例时,是否验证实例的服务端证书。​
ssl_certificate_verification => false​
}​
}​
​
查看 ISM 策略执行记录​
ISM 会把执行记录保存到索引.opendistro-ism-managed-index-history*中,您可以在 Dashboards 中像常规索引数据的可视化查询方法一样查询 ISM Policy 策略的历史执行记录。​
​图片​​
常见问题​
如果您在使用 ISM 策略时碰见异常问题或存在疑问,可以查看开源文档 ISM error prevention resolutions。​
如果仍然无法解决您的问题,您还可以通过提交工单进行咨询。​
​
最近更新时间:2026.09.24 15:54:06
这个页面对您有帮助吗?
有用
有用
无用
无用