写点什么

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

评论

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

未来AI领域的颠覆性力量

百度开发者中心

自然语言 #人工智能 文心一言

聚焦企业开放OpenAPI痛难点,华为云API Explorer助力构建API门户

华为云开发者联盟

软件开发 华为云 华为云开发者联盟 企业号9月PK榜

中国广核集团智慧司库系统票据业务成功上线!打造票据数智管理新标杆!

用友BIP

全球司库

fastposter 新版本 v2.17.0 强势发布!让海报开发更简单

物有本末

图片处理 海报生成器 海报生成 海报小程序

百度智能云引领建设智能云标准生态,第十二届云计算标准和应用大会成功召开

Baidu AICLOUD

智能云 大模型 AI 原生云

行云管家支持信创吗?是真的吗?

行云管家

信创 国产化 行云管家

软通咨询杨念农:咨询2.0是企业数字化转型的大脑

软通咨询

数字化转型 #人工智能 管理咨询 数字化转型咨询

如何提高技术领导力?与你分享 5 个心得

LigaAI

程序人生 技术管理 成长与思考 技术领导力 企业号9月PK榜

什么是隧道代理、http代理,隧道代理较于http代理有什么优势?

巨量HTTP

代理IP http代理

选择渲染农场的几个标准

Finovy Cloud

游戏制作 影视制作 渲染 云渲染 渲染农场

修旧利废,提升净资产收益率

用友BIP

资产管理

探索以太坊 Layer 2 解决方案的后起之秀——Starknet

Footprint Analytics

区块链 以太坊 Layer 2

国庆机酒预订又快又便宜?内附华为Mate60负一屏抢购攻略

最新动态

快手发布文生图大模型“可图”,探索AI新玩法

Geek老T

短视频 AIGC

专业级PDF编辑和管理 Acrobat Pro DC 2023 for Mac

胖墩儿不胖y

Mac软件 pdf编辑器 编辑pdf pdf工具

市面上支持信创的堡垒机哪家好?为什么?

行云管家

网络安全 信创 数据安全 堡垒机

对线面试官 - Java基础面试题【一】

派大星

Java 面试题

慢SQL治理实践及落地成果分享 | 京东物流技术团队

京东科技开发者

数据库 sql 慢SQL 企业号9月PK榜

FIL NEW算力挖矿系统开发

l8l259l3365

termius使用ssh教程 【XShell的神器Termius】

南屿

SSH Termius

主动写入流对@ResponseBody注解的影响 | 京东云技术团队

京东科技开发者

spring 注解 企业号9月PK榜 @ResponseBody

Rocketmq并发和顺序消费的失败重试机制

石臻臻的杂货铺

RocketMQ

百度集团副总裁吴甜:大语言模型面临三大技术挑战

飞桨PaddlePaddle

文心一言 文心大模型

中国机械总院张红新:强化集团级数据治理 业财融合助力企业降本增效

用友BIP

2023全球商业创新大会

教你用API插件开发一个AI快速处理图片小助手

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号9月PK榜

Web3.0时代的全新合作模式:DAO | 京东云技术团队

京东科技开发者

区块链 DAO Web3.0 企业号9月PK榜

JDK8升级JDK11最全实践干货来了 | 京东云技术团队

京东科技开发者

Java jdk8 JDK11 企业号9月PK榜

文心一言 VS 讯飞星火 VS chatgpt (96)-- 算法导论9.3 1题

福大大架构师每日一题

福大大架构师每日一题

数字化转型与架构-架构设计篇|什么是架构风格和架构模式?

数字随行

数字化转型

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