写点什么

基于 AWS 托管服务的日志收集分析系统

  • 2019-11-11
  • 本文字数:3145 字

    阅读完需:约 10 分钟

基于AWS托管服务的日志收集分析系统

应用系统日志的收集分析对于运维来说是至关重要的。一个可靠、安全、可扩展的日志收集分析解决方案在分析应用系统异常终止原因时能够让一切都变得轻松起来。


在这篇博文里,我们会探讨除了流行的 ELK(Elasticsearch, Logstash, and Kibana)解决方案之外的另一种选择,EKK 解决方案(Amazon Elasticsearch Service, Amazon Kinesis, and Kibana)。EKK 架构最大的好处是使得你不再需要自己亲自安装、部署、管理以及扩展日志收集分析系统,而将精力集中在分析日志,排除应用系统异常上面。


下面我们会介绍如何使用 EKK 架构来收集和分析 Apache web 服务器的日志,先来看看 EKK 架构的组成部分。


Amazon Elasticsearch Service 是一个流行的搜索和分析引擎,主要用来提供实时的应用系统日志和点击类流量的分析服务。本文中我们会利用 Amazon ES 将 Apache 的日志存储并索引起来,作为一项托管服务,Amazon ES 可以很轻松地在 AWS 云上进行部署、操作和扩展。此外使用托管服务,还能大大减轻管理上的工作,例如打补丁、异常监测、节点恢复、备份、监控等等。因为 Amazon ES 自身内部已经和 Kibana 进行了集成,所以省去了安装和配置等工作。获取 Amazon ES 的更多信息,请参考Amazon Elasticsearch Service


Amazon Kinesis Agent 是一个易于安装的单机版 Java 应用程序,它负责收集和发送日志数据。它会持续监控 Apache web 服务器的日志文件,并且将新的数据不断地发送到传输数据流中。同时它还负责文件回滚、生成检查点、异常发生后的重试,以及以时间序列为准可靠地发送日志文件。获取更多利用 Amazon Kinesis Agent 的信息,请参考Amazon Kinesis AgentGitHub 相关项目


Amazon Kinesis Firehose 提供了往 AWS 中加载流式数据的捷径。本文中,Firehouse 会获取并自动加载日志的流式数据到 Amazon ES 里,随后在 S3 中还会再进行一次备份。获取 Amazon Kinesis Firehose 的更多信息,请参考Amazon Kinesis Firehose


有了 AWS CloudFormation 的帮助,你只需要使用一个模板就能快速实现 EKK 架构。模板里准备了 Apache web 服务器,并使用 Amazon Kinesis Agent 和 Firehose 将它的访问日志发送给 Amazon ES 集群,同时在 S3 中备份日志数据,最后使用 Amazon ES Kibana endpoint 来对你的日志进行可视化分析。


AWS CloudFormation template 帮你快速完成如下工作:


  • 准备 Amazon ES 集群。

  • 准备 Amazon EC2 实例。

  • 安装 2.4.23 版本的 Apache HTTP 服务器。

  • 在 Apache HTTP 服务器之上安装 Amazon Kinesis Agent。

  • 准备 ELB(弹性负载均衡)。

  • 创建 Amazon ES 索引和相应的日志对应关系。

  • 创建 Amazon Kinesis Firehose 发送系统。

  • 创建所有的 IAM 角色以及相应的权限规则。例如,Firehose 需要将日志数据备份到 S3 中,那么就需要往目标 S3 桶上传数据的权限。

  • 为 Firehose 发送系统配置 CloudWatch 日志流和日志组,以便在日志发送出现异常时进行排查。


EKK 架构示意图:



要搭建本文中的 EKK 架构,你需要以下先决条件:


  • US West 区域的 Amazon EC2 密钥对。

  • US West 区域的 S3 桶。

  • US west 区域的默认 VPC。

  • 具有管理员权限的 IAM 角色,用来确保 Amazon ES 和 Amazon S3 通过 Firehose 获取到 EC2 上的日志数据


让我们开始吧:

从启动 AWS CloudFormation 模板开始创建整个系统

  1. 在 AWS CloudFormation 控制台上,选择来 启动模板。请确保你在 US West 区域。


提示:如果你想下载这个模板并随后上传至 AWS CloudFormation,你可以从随后给出的 S3 桶里面下载模板到你本地的电脑中。


  1. 选择下一步

  2. 在详细设置页面,提供以下信息:



a)软件栈名称:为你的 EKK 系统命名


b)实例类型:选择安装 Apache HTTP 服务器的 EC2 实例类型


c)密钥:选择 US West 区域的密钥对


d) SSH 位置:可以通过 SSH 连接到 EC2 实例的 IP 地址范围,默认为 0.0.0.0/0


e)web 服务端口:Web 服务器的监听端口,默认为 80


  1. 选择下一步

  2. 在选项页面,为 AWS CloudFormation 模板提供你想要的可选信息,然后选择下一步。



  1. 在回顾页面,检查模板的各项设置,点击确认然后选择创建系统。


整个创建过程大约耗时 10-15 分钟。

配置 Amazon Kinesis Agent

等待 AWS CloudFormation 创建完整个 EKK 系统,然后开始配置 Amazon Kinesis Agent。


  1. 在 AWS CloudFormation 控制台中,选择资源标签页,找到 Firehose 发送系统的名称。你在随后的第 3 步中需要它来配置 Agent。



  1. 在输出标签页,找到并记录下 Web 服务器的公有 IP 地址。你随后需要通过它 SSH 登录到 Web 服务器上配置 Agent。获得更多关于通过 SSH 连接 EC2 实例的信息,请参考通过 SSH 登录你的 Linux 实例.



  1. 在 Web 服务器的命令行上,运行以下命令:


Java


sudo vi /etc/aws-kinesis/agent.json
复制代码


该命令会打开配置文件,agent.json,内容如下:


Java


{ "cloudwatch.emitMetrics": true, "firehose.endpoint": "firehose.us-west-2.amazonaws.com", "awsAccessKeyId": "", "awsSecretAccessKey": "", "flows": [ { "filePattern": "/var/log/httpd/access_log", "deliveryStream": "", "dataProcessingOptions": [ { "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" } ] } ] }
复制代码


  1. 将在资源标签页获得的 Firehose 发送系统名称填入 deliveryStream 栏目中,然后保存并退出。

  2. 在命令行上运行以下命令:


sudo service aws-kinesis-agent restart


  1. 在 AWS CloudFormation 控制台中查看 Amazon ES 对应的逻辑 ID 域

  2. 在 AWS Elasticsearch 服务页面中你可以查看到由 AWS CloudFormation 创建的 ES 集群


配置 Kibana 并分析日志数据

Amazon ES 为每一个 ES 域都默认提供了 Kibana 的安装,你可以在域的展示页面找到 Kibana endpoin 的相关信息。


  1. 在 Amazon ES 控制台,选择 Kibana endpoin

  2. 在 Kibana 中,为索引名称和模式选项键入 logmonitor。该值是你为 Web 访问日志创建的 AWS ES 索引名称。来自 AWS ELB 的健康检查会产生 Apache 的访问日志,随后流经整个 EKK 数据线,最后在 Kibana 中被可视化展现出来供分析所用。

  3. 在时间选择中,选择 datetime



  1. 在 Kibana 控制台,选择发现标签页来观察 Apache 日志。



Kibana 提供了条形图、折线图、散点图、直方图、饼图等来对日志文件进行分析。



过去 30 天访问 Web 服务器的 IP 地址饼图



过去 5 分钟内访问 Web 服务器的 IP 地址条形图


你还可以将 http 响应、IP 地址等各类信息绘制成图表,甚至组合它们,以此来提供对于 Apache 日志的更深洞见。

监控日志收集分析系统

在 Firehose 控制台上选择流数据,然后选择监控标签页来查询 CloudWatch 中针对 Firehose 发送系统的度量值。



当日志发送失败后,Amazon S3 和 Amazon ES 上等日志会帮助你定位问题。比如,如下的截图显示了因为索引上的日期映射没有和源日志文件保持一致。


结论

本文中,我们展示了如何通过 Amazon Kinesis Agent, Amazon ES 和 Firehose 将 Apache 日志传输至 Kibana 并进行可视化分析。值得注意的是,Firehose 会根据应用系统产生日志的速率来自动进行伸缩。获取更多如何扩展 Amazon ES 集群的信息,请参考Amazon ES 开发指南.


综上所述,使用类似 Amazon ES 和 Amazon Kinesis Firehose 这类的托管服务,让管理和维护日志收集分析系统变得十分轻松。更棒的是,你还可以通过在日志流数据上直接运行 SQL 语句来进一步提升 EKK 系统的性能和功能。而这一切都可以基于本文中给出的AWS CloudFormation 模板


译者介绍:



刘磊,曾供职于中国银联电子支付研究院,期间获得上海市科技进步一等奖,并申请 7 项国家发明专利。现任职于 AWS 中国专家服务团队,致力于为客户提供基于 AWS 服务的专业大数据解决方案、项目实施以及咨询服务。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/ekk-log-collection-and-analysis-system-based-on-aws-managed-services/


2019-11-11 08:001038

评论

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

DataEase 启动异常如何解决:Access denied for user 'root'@'xx.xx.xx.xxx' (using password YES)

搞大屏的小北

DataEase

如何理解DevOps?

老张

DevOps 软件工程

面试官:什么是双亲委派模型?

王磊

java面试

时序电路建模基础

timerring

FPGA

可变二维码,玩转“码”上时代

旺链科技

区块链 区块链技术 区块链溯源

WorkPlus即时通讯软件,专注于企业信息安全可靠的企业IM

WorkPlus

泼辣修图2023官方网页版入口在哪里?

茶色酒

泼辣修图2023

AI时代的信息技术部怎么改革?

擦机鼻涕

小程序 超级app

【FAQ】申请运动健康服务验证环节常见问题及解答

HMS Core

HMS Core

天翼云以10.2%份额位列中国公有云IaaS+PaaS市场第三

天翼云开发者社区

专访三维空间雷成老师 | 原来水墨画风格的3D建筑动画可以如此惊艳……

Renderbus瑞云渲染农场

瑞云渲染 3D建筑动画 三维空间

Flomesh Ingress 使用实践(二)TLS 进阶

Flomesh

HTTP ingress Pipy

什么是渲染农场,渲染农场一般怎么收费?

Renderbus瑞云渲染农场

云渲染农场 渲染农场

周鸿祎瞄准中小微客户提供免费SaaS,思路:50万企业×2万年费=100亿补贴

B Impact

Java高手速成 | JSP MVC模式项目案例

TiAmo

mvc java; jsp

利用 Addax 异构迁移数据到 Databend

Databend

开年直播 | 博睿数据创始人兼CTO对话InfoQ,聊聊2023年重要战略技术趋势:可观测性

博睿数据

可观测性 博睿数据 媒体声音

疫情大环境下科技互联网公司开源节流降本增效

laofo

研发效能 降本增效 开源节流

用 NFTScan 的角度解析 Yuga labs NFT 项目系列

NFT Research

NFT BAYC

数字先锋| 枣庄政务云全新升级,居民办事体验upup!

天翼云开发者社区

架构杂谈——互联网系统架构演进

小小怪下士

Java 程序员 后端 架构设计

一体化移动办公平台,让政企工作更轻松、更便捷

WorkPlus

数据结构-Hash常见操作实践

杨充

跨境SaaS企业“会议营销"实战:立足商机注定平庸,300分客户转不转“MQL"?

B Impact

基于SLO告警(Part 2):为什么使用MWMB方法

Grafana 爱好者

可观测性 Grafana Prometheus SRE SLO

高效管理,让工作事半功倍

石云升

极客时间 2月月更 技术领导力实战笔记

安全可信| 首批+先进!天翼全栈混合云一举斩获三项可信云评估

天翼云开发者社区

疫情时代的宠儿:抗生素行业,今后何去何从

前嗅大数据

大数据 数据分析 网络爬虫 抗生素

《流浪地球2》的现实倒影(一):从量子计算机到MOSS

脑极体

量子计算机 小苔藓 流浪地球 MOSS

Spring Boot + WebSocket 实时监控异常

程序员大彬

Java springboot

一文读懂SCADA系统的组件功能及应用

2D3D前端可视化开发

组态软件 工业组态软件 web组态软件 SCADA

  • 扫码添加小助手
    领取最新资料包
基于AWS托管服务的日志收集分析系统_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章