ELK迁移到阿里云日志服务
划重点
1、了解ELK迁移阿里云日志服务方案
2、了解同账号和跨账号迁移区别及适用场景
概述
日志服务相比自建 ELK 在功能、性能、规模和成本等方面有诸多优势。对于已经存储在 Elasticsearch 中的数据,用户只需要一行命令就能方便地将数据迁移至日志服务。
Elasticsearch数据迁移方案
针对Elasticsearch场景,日志服务团队提供了基于aliyun-log-python-sdk和aliyun-log-cli的解决方案。该方案主要针对历史数据做全量迁移。
原理
- 使用 Scroll API 从 Elasticsearch 抓取数据。Scroll API 可以从 Elasticsearch 里高效取出大量数据而无须付出深度分页的代价。
- 针对 Elasticsearch 每个 index 的每个 shard 创建一个数据迁移任务,提交到内部进程池中执行,用来提高并行度和吞吐量。
功能
- 支持用户将 Elasticsearch 中的所有文档或某些索引中的文档迁移至日志服务指定的 project 中,工具会自动初始化好与索引同名的 logstore。
- 支持用户自定义过滤条件,只迁移符合条件的文档至日志服务。
- 支持用户自定义 Elasticsearch 的索引和日志服务的 logstore 之间的映射关系。
- 支持用户通过参数 pool_size 来控制数据迁移任务的并行度。
- 支持使用 HTTP 基本认证从 Elasticserch 中迁移数据。
映射关系
Elasticsearch 数据模型中包含 - 索引(index),类型(type),文档(document),映射(mapping),数据类型(field datatypes)等概念,它们和日志服务中数据模型的映射关系如下表所示。
同账号迁移
迁移前确保es没有新数据写入,不然增量数据可能迁移不过去
- 查看待迁移的索引文档数,如下device为待迁移索引
curl http://localhost:9200/device/_count
- 查看索引占用磁盘大小
curl -s 'localhost:9200/_cat/allocation?v'
- aliyun-log-cli安装
- AK/endpoint配置
将存储AK与Endpoint在~/.aliyunlogcli, 默认使用的块名是main,查看所有 服务入口
如果在阿里云ECS机器(包含VPC)环境使用日志服务 API,还可以使用内网服务入口(使用内网服务入口访问日志服务不消耗 ECS 公网流量,可以节约宝贵的 ECS 公网带宽)
aliyunlog configure LTAIoUb0RuUiUjeO Sh9p38OYcx7hlCY0f2rmYCNOSa3Gfr cn-hangzhou-finance-intranet.log.aliyuncs.com
- 迁移命令
logstore不必事先创建,如果CLI发现目标logstore 未创建,会为您在指定的project下创建好。
aliyunlog log es_migration --hosts=10.253.126.13:9200 --project_name=tts-car --indexes=device --logstore_index_mappings='{"catgts-device": "device"}' --time_reference=@timestamp
- 登录阿里云日志服务查看
跨账号迁移
场景:将某账号下日志服务数据迁移到另外一个账号日志服务
aliyunlog configure access_id1 access_key1 cn-beijing.log.aliyuncs.com aliyunlog configure access_id2 access_key2 cn-hangzhou.log.aliyuncs.com test
查看~/.aliyunlogcli,AK将存储为:
[main] access-id=access_id1 access-key=access_key1 region-endpoint=cn-beijing.log.aliyuncs.com [test] access-id=access_id2 access-key=access_key2 region-endpoint=cn-hangzhou.log.aliyuncs.com
使用特定账户
aliyunlog log copy_project --from_project="p1" --to_project="p1" --to_client=test
将main账户下对应的项目p1复制到账户test下的p1
修改默认账户
如前面所属,默认账户是main,在多用户情况下,切换默认账户也是很有用。通过选项--default-client可以修改。
aliyunlog configure --default-client=beijing
这样其他命令默认会使用beijing账户下的访问密码和服务入口地址。