HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

基于 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:001232

评论

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

【web开发基础】PHP快速入门(5)-PHP运算符之算术运算符和字符串运算符详解

迷彩

运算符 php开源 9月月更 web开发基础 算术运算符

大数据ELK(八):Elasticsearch安装IK分词器插件

Lansonli

ES 9月月更

仅需30行代码,轻松集成HMS Core视频编辑服务屏幕录制能力

HarmonyOS SDK

编辑 视频

面试官让你说说react状态管理?

beifeng1996

React

sentinel-dashboard-apollo 1.8.5 发布,支持 apollo 持久化的定制版

铁匠

orbeon form 通过 url 的方式同第三方应用集成的开发明细

汪子熙

Java SAP commerce form 9月月更

APISIX是怎么跑起来的

geange

lua api 网关 APISIX 网关 APISIX的源码解析

九月书单

图灵社区

科普 计算机 新书

小程序化:系统集成行业降本增效的破局思考

FinClip

互联网进入存量博弈时代,小程序技术创造移动应用新机遇

FinClip

finclip

VolareFinance 测试网教程(更新)

鳄鱼视界

Java中Interface天天都在写,你知道其背后的原理是什么吗?

wljslmz

Java 接口 9月月更

P5~P9应该具备的核心能力是什么

博文视点Broadview

keep move!滑动窗口中位数与滑动魔方

掘金安东尼

算法 9月月更

面向对象设计原则,历久弥新

有态度的马甲

VUE 数据分页

HoneyMoose

从URL输入到页面展现到底发生什么?

loveX001

JavaScript

new Vue的时候到底做了什么

bb_xiaxia1998

Vue

Java进阶(三十七)java 自动装箱与拆箱

No Silver Bullet

Java 9月月更 自动装箱 拆箱

【云原生 | 从零开始学Kubernetes】十三、k8s的容器探测以及启动探测

泡泡

云计算 容器 云原生 k8s 9月月更

【web 开发基础】php 开发基础快速入门 (4)-PHP常量详解

迷彩

php 常量 9月月更 魔术常量

禅道项目管理软件App使用

禅道项目管理

项目管理 App 禅道

vue项目性能优化-前端加分项

bb_xiaxia1998

Vue

Ohos-MPChart——支持多种图表绘制的组件

OpenHarmony开发者

OpenHarmony

Java中只有8大数据类型吗?看了本文,你会收获颇丰

wljslmz

Java 数据类型 9月月更

物联网平台常见问题与答案汇总

阿里云AIoT

数据 物联网平台 物联网 协议 mqtt

透视星环科技上市:基础工具、技术融合、场景应用三维击穿

易观分析

数据

九月书单

图灵教育

科普 计算机 新书

2022年中国HR SaaS行业洞察

易观分析

HR SaaS

一道React面试题把我整懵了

beifeng1996

React

还不了解堆栈和队列吗?数据结构最基础、最重要的概念必须掌握!

wljslmz

数据结构 堆栈 队列 9月月更

基于AWS托管服务的日志收集分析系统_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章