点击围观!腾讯 TAPD 助力金融行业研发提效、敏捷转型最佳实践! 了解详情
写点什么

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

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

    阅读完需:约 1 分钟

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

背景说明

应用系统的日志收集与分析工作对运维来说至关重要。常见的系统解决方案中开源技术栈 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 配合实现数据的轮换。

创建一个 SNS Topic(s3-to-es-by-hour) 触发 Lambda(s3-to-es-bulk-by-hour)

1. 创建 Topic

进入 SNS 服务页面



2. 订阅事件


3. 测试




消息


{"year":"2019","month":"06","day":"30","hour":"05"}
复制代码


复制 Topic 的 ARN,下面 Lambda 会发送消息进来

创建 Lambda split-day-to-24-hour

负责把按天 ES index 的导入事件拆分成 24 个按小时导入的事件


https://s3.cn-north-1.amazonaws.com.cn/awschinablog/Amazon Elasticsearch Service, Amazon Kinesis, and Kibana82.jpg">


1. 更新代码

替换 SNS Topic ARN 为上面创建的 Topic



import json
import boto3


sns = boto3.client('sns')


def lambda_handler(event, context):
for record in event['Records']:
msg = json.loads(json.dumps(eval(record['Sns']['Message'])))


# TODO implement
for i in range(0,24) :
msg['hour'] = "%02d" % i
print(msg)


response = sns.publish(
TopicArn='arn:aws-cn:sns:cn-north-1:725362542198:s3-to-es-by-hour',
Message=json.dumps(msg),
)


return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
复制代码


  1. 创建 SNS Topic 用于触发此 Lambda


3. 订阅 Lambda


4. 测试




{"year":"2019","month":"06","day":"30"}
复制代码


2019 年 6 月 30 日的日志文件,会并发为 24 个 Lambda 按小时导入到 ES

Athena query data in S3 using SQL

1. 基于 S3 路径,创建 Table


CREATE EXTERNAL TABLE IF NOT EXISTS log.apachelogtest (
'bytes' string,
'datetime' string,
'host' string,
'request' string,
'response' string,
'datetime' string
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
) LOCATION 's3://poc-zhnc-hive/log/'
TBLPROPERTIES ('has_encrypted_data'='false');
复制代码

2. 使用 Table 查询


作者简介


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


本文转载自 AWS 技术博客


原文链接:


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


2019-09-26 17:121190
用户头像

发布了 1602 篇内容, 共 71.1 次阅读, 收获喜欢 67 次。

关注

评论

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

一文读懂加密资产板块的盈利潜力与投资机会

石头财经

跟着卷卷龙一起学Camera--Rolling Shutter

卷卷龙

ISP camera 11月月更

AWS S3 bucket 的 ACL 控制

HoneyMoose

盘点具备盈利潜力的几大加密板块,以及潜在的投资机会

BlockChain先知

Spark SQL基本架构

穿过生命散发芬芳

spark SQL 11月月更

跟着卷卷龙一起学Camera--MIPI 01

卷卷龙

ISP camera 11月月更

22道js输出顺序问题,你能做出几道

loveX001

JavaScript

React的useLayoutEffect和useEffect执行时机有什么不同

beifeng1996

React

React源码分析(二)渲染机制

goClient1992

React

Vue的computed和watch的区别是什么?

bb_xiaxia1998

Vue

2022-11-01:给定一个只由小写字母和数字字符组成的字符串str。 要求子串必须只含有一个小写字母,数字字符数量随意。 求这样的子串最大长度是多少?

福大大架构师每日一题

算法 rust 福大大

前端面试那些题

loveX001

JavaScript

React循环DOM时为什么需要添加key

beifeng1996

React

前端面试指南之React篇(二)

beifeng1996

React

一文搞定Vue面试

bb_xiaxia1998

Vue

合格vue开发者应该知道的面试题

bb_xiaxia1998

Vue

鱼骨图还能做需求优先级分析?

产品海豚湾

产品经理 产品设计 产品开发 需求分析 11月月更

数据的分组与计算

向阳逐梦

Python pandas 11月月更

一年前端面试打怪升级之路

loveX001

JavaScript

前端面试指南之React篇(一)

beifeng1996

React

React源码分析1-jsx转换及React.createElement

goClient1992

React

React源码分析(三):useState,useReducer

goClient1992

React

官宣 | 袋鼠云获过亿元 C + 轮融资,深耕国产自研数字化技术与服务

袋鼠云数栈

【MySQL】如何构建一个完整的MySQL知识体系(MySQL专栏启动)

小明Java问道之路

Java MySQL MySQL 数据库 11月月更

研发效能|DevOps 已死平台工程永存带来的焦虑

laofo

DevOps 研发效能 持续交付 工程效率 平台工程

python小知识-set妙用

AIWeker

Python 人工智能 python小知识 11月月更

AI为方,产业为向:京东云数字人的技术攀爬

脑极体

人工智能’

防守体系建设三部曲

阿泽🧸

11月月更 防守体系

iofod 支持生成 Electron 桌面应用

iofod jude

前端 低代码平台 iofod

跟着卷卷龙一起学Camera--延迟04

卷卷龙

ISP camera 11月月更

new Vue的时候到底做了什么

bb_xiaxia1998

Vue

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