免费下载!由 O’Reilly 出版的《NGINX 完全指南》中文版已正式上线 了解详情
写点什么

搭建云上日志收集分析系统(一)

  • 2019-09-26
  • 本文字数:2292 字

    阅读完需:约 8 分钟

搭建云上日志收集分析系统(一)

背景说明

应用系统的日志收集与分析工作对运维来说至关重要。常见的系统解决方案中开源技术栈 ELK(Elastic Stack: Elasticsearch, Logstash, Kibana)是当前比较流行的选择。下面我们会讨论另一种构建于云原生设计的类似于 ELK 的解决方案 EKK(Amazon Elasticsearch Service, Amazon Kinesis, and Kibana)。


EKK 的优势在于组件是 AWS 托管服务,不必自己安装、运维,并且与 AWS 的其它服务轻松集成,可以很轻松的部署一套可靠、可扩展、安全、容错以及解耦和基于事件的解决方案。


传统的 Elasticsearch 中,日志数据的不断膨胀,对数据的生命周期管理越来越重要(应对此需求的新功能 ILM(index lifecycle management)在 Elasticsearch 7.0 中闪亮登场)。本文不介绍 ILM,介绍另一种解决方案:使用 Lambda 配合实现数据的轮换。

文中使用的 AWS 服务简介

1. Amazon Elasticsearch Service

是一项完全托管的服务,方便您部署、保护和运行大量 Elasticsearch 操作,且不用停机。该服务提供开源 Elasticsearch API、受托管的 Kibana 以及与 Logstash 和其他 AWS 服务的集成,支持您安全获取任何来源的数据,并开展实时搜索、分析和可视化。

2. Amazon Kinesis Firehose

Firehose 是将流数据可靠地加载到数据湖、数据存储和分析工具的最简单方式。它可以捕获、转换流数据并将其加载到 Amazon S3、Amazon Redshift、Amazon Elasticsearch Service 和 Splunk,让您可以借助正在使用的现有商业智能工具和控制面板进行近乎实时的分析。这是一项完全托管的服务,可以自动扩展以匹配数据吞吐量,并且无需持续管理。它还可以在加载数据前对其进行批处理、压缩和加密,从而最大程度地减少目的地使用的存储量,同时提高安全性。


本文中,Firehouse 会获取并自动加载日志的流式数据到 Amazon ES 里,并在 S3 中还会再进行一次备份。

3. AWS Lambda

通过 AWS Lambda,无需预置或管理服务器即可运行代码。您只需按使用的计算时间付费 – 代码未运行时不产生费用。


借助 Lambda,您几乎可以为任何类型的应用程序或后端服务运行代码,而且完全无需管理。只需上传您的代码,Lambda 会处理运行和扩展高可用性代码所需的一切工作。您可以将您的代码设置为自动从其他 AWS 产品触发,或者直接从任何 Web 或移动应用程序调用。


本文中使用 Lambda 实现 Elasticsearch Index 的 rotate 功能,将历史数据从 ES 中移除,解决由历史数据太大造成的性能下降,成本上升等问题。


并使用 Lambda 实现了,将 S3 中的历史数据文件 Load 回 ES,借助 ES 进行临时性历史日志分析。

4. Amazon CloudWatch

Amazon CloudWatch 是一种面向开发运营工程师、开发人员、站点可靠性工程师 (SRE) 和 IT 经理的监控和可观测性服务。CloudWatch 为您提供相关数据和切实见解,以监控应用程序、响应系统范围的性能变化、优化资源利用率,并在统一视图中查看运营状况。CloudWatch 以日志、指标和事件的形式收集监控和运营数据,让您能够在统一查看在 AWS 和本地服务器上运行的资源、应用程序和服务。您可以使用 CloudWatch 检测环境中的异常行为、设置警报、并排显示日志和指标、执行自动化操作、排查问题,以及发现可确保应用程序正常运行的见解。

5. Amazon Athena

Amazon Athena 是一种交互式查询服务,让您能够轻松使用标准 SQL 分析 Amazon S3 中的数据。Athena 没有服务器,因此您无需管理任何基础设施,且只需为您运行的查询付费。


Athena 简单易用。只需指向您存储在 Amazon S3 中的数据,定义架构并使用标准 SQL 开始查询。就可在数秒内获取最多的结果。使用 Athena,无需执行复杂的 ETL 作业来为数据分析做准备。这样一来,具备 SQL 技能的任何人都可以轻松快速地分析大规模数据集。


本文最后简单介绍实用 Athena 服务,如何直接进行基于 S3 全量日志的分析工作。

6. AWS Identity and Access Management (IAM)

AWS Identity and Access Management (IAM) 使您能够安全地管理对 AWS 服务和资源的访问。您可以使用 IAM 创建和管理 AWS 用户和组,并使用各种权限来允许或拒绝他们对 AWS 资源的访问。

架构

1. EKK 和 数据 Rotate 架构

2. Load 历史数据到 ES 架构

在 IAM 服务中创建身份授权 IAM Role

1. 为需要收集日志的 EC2,创建 Role:EKK-EC2


2. 为 Kinesis Firehose 创建 Role: EKK-Firehose


设置权限


在 Amazon Elasticsearch 服务中创建创建 ES cluster

1. 计算存储要求

源数据 * (1 + 副本数量) * 1.45 = 最小存储要求


(元数据 + 增长空间) * (1 + 索引开销) / 所需的分片大小 = 主分片的大约数量


尽量使分片大小保持在 10–50GiB 之间是一种比较好的做法。

2. 实例类型

尝试从每 100GiB 存储要求更接近 2 个 vCPU 核心和 8GiB 内存的配置开始。

3. 专用主节点

实例计数推荐的最小专用主实例类型
1–10c5.large.elasticsearch
10–30c5.xlarge.elasticsearch
30–75c5.2xlarge.elasticsearch
75–200r5.4xlarge.elasticsearch


参考https://docs.amazonaws.cn/elasticsearch-service/latest/developerguide/sizing-domains.html

4. 控制台创建集群





IP 地址设置为自己的 IP 地址 CIDR 段,此 CIDR 段之外地址无权访问 ES、Kibana。


5. 可获得 ES Cluster 和 Kibana 的地址


https://s3.cn-north-1.amazonaws.com.cn/awschinablog/picture replacement3.jpg">


在 Kinesis 服务中创建 Kinesis Firehose









作者简介


陈朕,AWS 解决方案架构师,负责基于 AWS 云计算方案架构的咨询和设计,在国内推广 AWS 云平台技术和各种解决方案。十余年分布式应用、大数据的分布式处理经验。


本文转载自 AWS 技术博客


原文链接:


https://amazonaws-china.com/cn/blogs/china/ekk-amazon-elasticsearch-service-amazon-kinesis-and-kibana/


2019-09-26 16:181673
用户头像

发布了 1606 篇内容, 共 71.6 次阅读, 收获喜欢 68 次。

关注

评论

发布
暂无评论
发现更多内容

好好编程-物流项目07【SpringMVC整合】

Java 程序员 后端

好险!一入职就遇到MySQL这么大Bug!差点背锅走人!

Java 程序员 后端

【Promise 源码学习】第四篇 - 翻译并理解 Promise A+ 规范

Brave

源码 Promise 11月日更

学生管理系统架构设计文档

唐敏

「架构实战营」

字节跳动Java面试题精选——算法与数据结构「跳槽面试必备」

Java 程序员 后端

.NET6新东西--Http Logging

喵叔

11月日更

如何在本地部署多个Tomcat服务

Java 程序员 后端

字节跳动武汉招聘2000人,这套JAVA面试题被刷爆了

Java 程序员 后端

学会5位大牛撰写756页大规模Linux集群架构实践PDF,成功入职华为

Java 程序员 后端

Prometheus HTTP API 查询(五)告警接口

耳东@Erdong

Prometheus PromQL HTTP API 11月日更

如何让Kafka在保证高性能、高吞吐的同时通过各种机制来保证高可用性?

Java 程序员 后端

如何设计一个高可用系统?简单总结了10来种方法,今天全部告诉你们!

Java 程序员 后端

如何设计一个高性能Elasticsearch mapping

Java 程序员 后端

字节面试官:你觉得HTTPS能防止重放攻击吗?

Java 程序员 后端

安卓程序员必备hook技术之进阶篇

Java 程序员 后端

如何用RabbitMQ实现延迟队列

Java 程序员 后端

如何给网关设计一款专属的权限控制「责任链设计模式」

Java 程序员 后端

字节后端开发3+4面,终于拿到秋招第一个offer

Java 程序员 后端

完美!腾讯技术官发布Java零基础就业宝典,不用再怀疑人生了

Java 程序员 后端

好好编程-物流项目04【Mybatis逆向工程】

Java 程序员 后端

040022-week3-design

InfoQ_70156470130f

好好编程-物流项目13【登录认证-shiro实现】

Java 程序员 后端

解决:http: TLS handshake error from *

liuzhen007

11月日更

官宣:恭喜 ChaosBlade 项目进入 CNCF Sandbox

Java 程序员 后端

如何给网关设计一款专属的权限控制「责任链设计模式」(1)

Java 程序员 后端

如何调优 Java 垃圾收集

Java 程序员 后端

进击的Java(三)

ES_her0

11月日更

通过程序来介绍Node.js 的几个文件读写和事件监听API

Regan Yue

nodejs js Node 11月日更

如何封装原生的-Java-NIO-以及扩展?详细到让你分分钟搞定Netty

Java 程序员 后端

字节后端开发3+4面,终于拿到秋招第一个offer(1)

Java 程序员 后端

学会IDEA REST Client后就可以丢掉postman了

Java 程序员 后端

搭建云上日志收集分析系统(一)_运维_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章