阿里云日志服务最佳实践手册D.docx

上传人:b****4 文档编号:3774618 上传时间:2022-11-25 格式:DOCX 页数:16 大小:700.40KB
下载 相关 举报
阿里云日志服务最佳实践手册D.docx_第1页
第1页 / 共16页
阿里云日志服务最佳实践手册D.docx_第2页
第2页 / 共16页
阿里云日志服务最佳实践手册D.docx_第3页
第3页 / 共16页
阿里云日志服务最佳实践手册D.docx_第4页
第4页 / 共16页
阿里云日志服务最佳实践手册D.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

阿里云日志服务最佳实践手册D.docx

《阿里云日志服务最佳实践手册D.docx》由会员分享,可在线阅读,更多相关《阿里云日志服务最佳实践手册D.docx(16页珍藏版)》请在冰豆网上搜索。

阿里云日志服务最佳实践手册D.docx

阿里云日志服务最佳实践手册D

 

 

最佳实践

基于日志服务解决方案

日志服务与多个云产品、以及第三方开源生态进行对接,最大程度上降低用户使用门槛:

例如流计算、数据仓库、监控等,除此之外在安全等领域引入ISV,可以通过安全云市场享受日志分析专家的服务。

一些典型场景

日志、大数据分析

-通过Agent、API实时收集系统产生事件,例如访问、点击等

-通过LogHub接口进行流计算,例如分析用户最喜爱的节目,当前观看最高的频道,各个省市点播率等,精确运营

i.对日志进行数仓离线归档,每天、每周出详细的运营数据、账单等

ii.适合领域:

流媒体、电子商务、移动分析、游戏运营等。

例如网站运营CNZZ也是日志服务的用户

日志审计

-通过Agent实时收集日志至日志服务,在此过程中无需担心误删、或被黑客删除

i.通过日志查询功能,快速分析访问行为,例如查询某个账户、某个对象、某个操作的操作记录

ii.通过日志投递OSS、ODPS对日志进行长时间存储,满足合规审计需求

iii.适合领域:

电子商务、政府平台、网站等。

阿里云官网产品:

ActionTrail,日志审计等就是基于日志服务开发

问题诊断

-开发过程中,对客户端、移动设备、服务端、模块等加入日志、并通过ID进行关联

i.收集各个模块日志,通过云监控、流计算等实时获得访问情况

ii.当请求或订单发生错误时,开发无需登录服务器,直接通过日志查询功能对错误关键词、次数、关联影响等进行查询,快速定位问题,减少影响覆盖面

iii.适合领域:

交易系统、订单系统、移动网络等

运维管理

i.收集上百台、上千台机器上不同应用日志日志(包括错误、访问日志、操作日志等)

ii.通过不同的日志库、机器组对应用程序进行集中式管理

iii.对不同日志进行处理:

例如访问日志进行流计算做实时监控;对操作日志进行索引、实时查询;对重要日志进行离线存档

iv.日志服务提供全套API进行配置管理和集成

v.适合领域:

有较多服务器需要管理的用户

其它:

-计量计费、业务系统监控、漏洞检测、运营分析、移动客户端分析等。

在阿里云内部,日志服务无处不在,几乎所有云产品都在使用日志服务解决日志处理、分析等问题

第一步:

创建VPC与ECS实例

参考专有网络VPC用户文档操作,创建vpc与ECS实例如下:

第二步:

在ECS机器上安装Logtail

wgethttp:

//logtail-release.vpc100-oss-cn-chmod755logtail.sh

./logtail.shinstallcn_shenzhen_vpc

登陆机器192.168.1.2,安装Logtail,选择写数据到日志服务深圳Region:

详细请参考日志服务安装Logtail。

第三步:

到日志服务控制台进行配置

创建Logstore及Logtail收集配置:

填写文件目录、名称以及日志样例:

创建机器组,将192.168.1.2加入机器组:

将配置应用到机器组,等待约3分钟后开始验证。

第四步:

Logtail心跳状态验证

打开机器组,查看心跳状态:

如心跳异常,请参考日志服务为什么我的Logtail心跳状态不正常排查原因。

第五步:

数据收集验证

当日志文件在持续追加产生时,查看Logstore,预览Logtail收集到的日志数据如下:

基于日志服务如何实现ActionTrail

ActionTrail是一款用于记录用户账号各类API调用操作的产品。

ActionTrail记录了每次API调用的重要信息

,如操作者、操作时间、对象、动作类型、来源等详尽的信息,这些调用记录,可以精确追踪、还原用户行为

,对于安全分析,资源变更追查,合规审查有非常重要的作用。

ActionTrail需要考虑的问题

ActionTrail这样一款有价值的产品是如何实现的,有哪些问题需要考虑?

首先,由于各类API调用的日志分散在各处,怎么去收集散落在各地的日志呢?

之后,各应用的行为不尽相同,日志内容、格式也比如有区别,如何提供一个统一的方式来处理差异的日志?

最后,对于用户来说,如何能够方便地获取ActionTrail提供的调用日志,来进行后续的追踪、分析呢

ActionTrail架构

在清楚了ActionTrail的问题和处理流程之后,我们看看ActionTrail是如何实现的。

下面是ActionTrail的框架

ActionTrail如何解决这些问题

对于第一个问题,ActionTrail自己去解析应用记录在本地的日志显然成本太高,这要求ActionTrail完全理解应用日志格式,并侵入应用机器,耦合度实在是太高,那有没有一个更好的方式来处理呢?

其实,基于日志服务,就能很容易解决这个问题。

应用的日志,应用最熟悉,应用各自通过logtail,将每条日志解析成key:

value这样半结构化形式,上传至日志服务应用各自的Project,再通过RAM授权ActionTrail读取这部分日志。

只要事先约定ActionTrail需要的key,ActionTrail就可以直接从日志服务消费各应用的API调用日志了。

由于日志格式是半结构化的,ActionTrail可以使用同样的方式来处理、分析,那第二个问题也解决了。

ActionTrail实时地从日志服务中抓取各应用的日志,提取必要的字段,并将剩余的字段统一打包在一起。

清洗完毕的数据,ActionTrail也记录在本地,通过logtail实时上传至日志服务中ActionTrail的Project中。

下图就是经过清洗处理后的一条日志,该日志记录了一个用户在17:

53的时候重启了一个虚拟机。

最后,如果将ActionTrail处理后的日志交到用户,让用户方便地处理呢?

放到用户的Ossbucket中是一个不错的选择。

ActionTrail定期从日志服务中批量读取处理后的日志,根据用户账号和应用类型进行分类,上传至用户授权的bucket中,这样用户就可以直接从自己的ossbucket中读取这部分日志了。

基于日志服务的监控系统

日志服务简介

日志服务是阿里云一个重要的基础设施,支撑着阿里云所有集群日志数据的收集和分发。

众多应用比如OTS、ODPS、CNZZ等利用日志服务logtail收集日志数据,利用API消费数据,导入下游实时统计系统或者离线系统做分析统计。

作为一个基础设施,日志服务具备:

1.可靠性:

经过多年阿里集团内部用户的检验,经历多年双十一考验,保证数据的可靠、不丢失。

2.可扩展性:

数据流量上升,通过增加shard个数快速动态扩容处理能力。

3.便捷性:

一键式管理包括上万台机器的日志收集。

日志服务帮用户完成了日志收集,统一了日志格式,提供API用于下游消费。

下游系统可以接入多重系统重复消费,比如导入Spark、Storm做实时计算,也可以导入elasticsearch做搜索,真正做到了一次收集,多次消费

在众多数据消费场景中,监控是最常见的一种场景。

本文介绍阿里云基于日志服务的监控系统。

日志服务把所有集群的监控数据作为日志收集到服务端,解决了多集群管理和异构系统日志收集的问题,监控数据统一成格式化的日志发送到日志服务.

日志服务为监控系统提供了

1.统一的机器管理:

安装一次logtail,所有的后续操作在日志服务端进行。

2.统一的配置管理:

需要收集哪些日志文件,只要在服务端配置一次,配置会自动下发到所有机器。

3.结构化的数据:

所有数据格式化成日志服务的数据模型,方便下游消费。

4.弹性的服务能力:

处理大规模数据写入和读取的能力。

监控系统架构

如何搭建监控系统

1.收集监控数据:

1.参考快速入门了解如何配置SLS的日志收集,确保日志收集到了日志服务。

2.中间件使用API消费数据

可以参考SDK使用方法,选择适合你的SDK版本。

通过SDK的PullLog接口从日志服务批量消费日志数据,并且把数据同步到下游实时计算系统。

3.搭建storm实时计算系统

选择storm或者其他的类型的实时计算系统,配置计算规则,选择要计算的监控指标,计算结果写入到OTS中

4.展示监控信息

通过读取保存在OTS中的监控数据,在前端展示;或者读取数据,根据数据结果做报警。

网站访问日志统计分析介绍

场景

用户使用ECS搭建网站,网站的访问日志(Nginx,Apache访问日志)收集到阿里云日志服务中供查询。

为了从访问日志中挖掘出更多价值,日志服务提供了一个docker镜像,用于实时统计和展示网站访问的一系列指标,例如PV,UV,延时,地理,状态码,爬虫,网络流量等指标。

 

日志字段

192.168.1.101--[17/Mar/2016:

10:

28:

30+0800]"GET/fonts/fontawesome-webfont.woff?

v=4.2.0HTTP/1.1"0.02112073040""Mozilla/5.0(Macintosh;IntelMacOSX10_11_3)AppleWebKit/537.36(KHTML,likeGecko)Chrome/49.0.2623.87Safari/537.36"

以上述日志为例,分别提取的字段包括

字段名

字段样例

ip

192.168.1.101

method

GET

path

/fonts/fontawesome-webfont.woff?

v=4.2.0

latency

0.021

request_length

1207

status

304

response_length

0

referer

user_agent

Mozilla/5.0(Macintosh;IntelMacOSX10_11_3)AppleWebKit/537.36(KHTML,likeGecko)Chrome/49.0.2623.87Safari/537.36

指标

PV

分别以5分钟、1小时、1天为统计周期,统计每个周期内的日志总数。

UV

分别以1小时、1天为统计周期,统计每个周期内的IP总数。

页面

以天为统计周期,统计访问最多的页面路径,以及访问最多的参数。

例如请求/fonts/fontawesome-webfont.woff?

v=4.2.0,提取出页面/fonts/fontawesome-webfont.woff和参数v=4.2.0

方法

方法指的是HTTP方法,包括GET,POST,DELETE,PUT等。

以小时和天为统计周期,统计每个周期内每个方法的日志条数。

地理

统计每个IP所属的省份,展示所选时间段内每个省份的分布图。

状态码

状态码指的是HTTP状态码,包括200,401,403,500等常见状态码。

以小时和天为统计周期,统计每个周期内的状态码次数。

浏览器

浏览器分为多个子指标,分别统计每一个子指标出现的PV、UV。

包括

-终端类型

●移动终端

●非移动终端浏览器类型

●chrome

●safari

●IE

●firefox

操作系统

●mac

●window

●linux

浏览器内核

●webkit

●gecko

爬虫

统计常见的爬虫访问量,常见爬虫包括XX、Google、360、今日头条。

来源页

根据referer统计的来源域名,统计来源最高的20个域名。

延时

-统计每5分钟内的网络请求的延时的平均值和最大值。

-统计每天分布最多的延时的分布情况。

出现次数较少的延时区间不会加入统计,比如一天内只有一次延时为8s,大部分的延时都在0.3s到0.5s之间,那么只会统计0.3->0.4,0.4->0.5的延时分布。

-统计每个小时延时最大的日志。

流量

以小时为单位,根据request_length字段和response_length字段,统计访问的入网流量和出网流量的大小。

和GoogleAnalytics的比较

GoogleAnalytics

基于日志服务的访问统计

实现方式

在浏览器端加JS,用户访问时触发统计

根据服务端访问日志统计

是否能看到爬虫信息

能否看到请求延时

开始使用

请参考使用文档。

网站访问日志统计分析

使用视频

如何使用网站访问日志分析请参照视频。

Demo地址

必要条件

Nginx/Apache访问日志必须接入到阿里云日志服务开通日志服务

开通容器服务

有阿里云AccessKey可以访问日志服务(可以是子帐号)

子帐号权限

如果您使用子帐号授权,请参考下边的权限配置,将${your_project}替换成你的Project名称

{

"Version":

"1","Statement":

[

{

"Action":

[

"log:

Get*","log:

List*"

,${your_logstore}替换成您的访问日志所在的Logstore。

],

"Resource":

"acs:

log:

*:

*:

project/${your_project}/logstore/${your_logstore}","Effect":

"Allow"

},

{

"Action":

["log:

CreateConsumerGroup","log:

ListConsumerGroup",

"log:

ConsumerGroupUpdateCheckPoint","log:

ConsumerGroupHeartBeat","log:

GetConsumerGroupCheckPoint"

],

"Resource":

"acs:

log:

*:

*:

project/${your_project}/logstore/${your_logstore}/consumergroup/*","Effect":

"Allow"

}

]

}

非必要条件

-自建mysql或者RDS(默认使用docker镜像内的mysql)

实施步骤

实施步骤以ubuntu系统为例,其他系统请以本文档做参考

访问日志接入到阿里云日志服务,具体接入方法请参考阿里云日志服务文档。

开通容器服务。

在容器服务中创建集群,操作系统选择ubuntu。

在容器服务中创建应用。

i.应用名称输入dashboard(或自定义)。

ii.部署集群选择刚刚创建的集群。

iii.点击"使用镜像创建"。

iv.点击选择镜像,选择阿里云镜像,access_log_stat_dashboard镜像。

选中出现的aliyunlog/access_log_stat_dashboard镜像。

v.在【web路由规则】中,容器端口输入80,域名输入dashboard,点击"添加"。

vi.点击确定。

在【服务】中,找到刚刚创建的服务(dashboard,或自定义服务名称),点击服务名称,在出现的基本信息中找到访问端点,例如访问端点。

6.在浏览器中打开上述URL,开始使用。

7.首次打开dashboard,需要使用日志服务的帐号信息登录,包括包括region,project,AccessId,AccessKey。

8.登录完成后,首次使用dashboard要求配置:

i.日志信息。

包括region,project,AccessId,AccessKey,LogStore。

比登录信息多了一个LogStore。

ii.日志内容字段映射,docker镜像为使用一些默认的名称来描述访问日志的一些字段,如果您在接入日志服务时使用不同的字段名称,请在这里做字段映射,保证您的字段的含义能够被分析程序识别。

例如latency字段,假如您接入日志服务时配置该字段的名称为request_time,那么需要在这里填写request_time。

一段日志样例:

192.168.1.101--[17/Mar/2016:

10:

28:

30+0800]"GET/fonts/fontawesome-webfont.woff?

v=4.2.0HTTP/1.1"0.02112073040""Mozilla/5.0(Macintosh;IntelMacOSX10_11_3)AppleWebKit/537.36(KHTML,likeGecko)Chrome/49.0.2623.87Safari/537.36"

后台处理key

字段样例

ip

192.168.1.101

method

GET

path

/fonts/fontawesome-webfont.woff?

v=4.2.0

latency

0.021

request_length

1207

status

304

response_length

0

referer

user_agent

Mozilla/5.0(Macintosh;IntelMacOSX10_11_3)AppleWebKit/537.36(KHTML,likeGecko)Chrome/49.0.2623.87Safari/537.36

高级选项

镜像计算结果的数据保存在镜像的mysql中,如果您释放您的容器,那么历史计算结果会丢失,为了保证所有的历史结果,请您使用自己的mysql:

grantallprivilegeson*.*tologuser@'%'identifiedby'123456789';flushprivileges;

创建一个mysql用户,允许这个用户从docker中访问这个mysql

上述用户名和密码根据自己的需求自定义

-

sudoservicemysqlrestart

修改/etc/mysql/my.conf,注释掉bind-address0.0.0.0这一行重启mysql

 

点击dashboard页面上方的『计算结果临时保存在docker容器中,若需永久保存,请更改数据库』

,进入配置mysql。

填写mysql的地址和账户信息,点击【迁移】。

使用ECS启动docker

pull

dockerrun--dns223.5.5.5-p80:

80-d

上文讲述了如何使用容器服务来启动Docker,对于购买了ECS的用户而言,可以使用自己的虚拟机来启动Docker。

在ECS上启动镜像,请执行下边的命令:

阿里云消息服务(MNS)开通将日志推送日志服务功能,这里我们介绍下如何利用这部分日志。

消息服务日志格式参见队列消息操作日志、以及主题消息操作日志两个章节,其中日志包含了消息生命周期的所有内容,时间、地点、操作和上下文等。

我们可以通过三种方法对日志进行分析:

实时查询

选定时间内,发了多少条消息

或指定Queue,以及Action:

SendMessage,既可以看到该时间段内有2条消息被发出

某一条消息的生命周期如何?

通过在Query中输入MessageId既可以快速检索到

某个服务器向消息队列发布了多少条消息?

输入该服务器IP即可,也可以通过IP+DeleteMessage等组合查询该时间段行为

实时计算&离线计算

-实时计算:

使用Spark、Storm或StreamCompute,ConsumerLibrary等方式可以实时对消息服务日志进行分析。

例如:

●对一个队列而言,Top10消息的产生者、消费者分别是谁哪些IP?

●生产和消费的速度是否均衡?

某些消费者在处理延时上是否有瓶颈?

-离线:

使用MaxCompute或E-MapReduce/Hive进行大时间跨度的计算

●最近一周内,消息从发布到被消费平均延迟是什么?

●对比升级前和升级后两个时间段内性能变化如何?

全文完

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1