阿里云日志服务SLS
前言:
刚入职实习了几天,我发现我的任务就是学习阿里云日志服务这块业务内容,这个功能和mysql一样,但是速度和视觉却是甩mysql这类数据库几条街。
当得知公司没人会这项技术后(在这之前我也没听过,我觉得算是小众技术吧目前),我觉得我机会来了,可以考这项技术先站稳脚跟。。。
废话不多说,开始聊聊我这几天对这sls的感受。
SLS简介:
日志服务:简称LOG,是针对日志类数据的一站式服务,在阿里巴巴集团经过大量大数据场景形成的,您无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能,提升运维、运营效率,建立DT时代海量日志处理能力。
功能: 实时采集和消费。
投递数仓。
查询与实时分析。
案例详情:
1、账单平均每天消费查询。
查看平均每日的总消费,先用date_trunc 函数计算出每天的消费数,再用geometric_mean 函数得出平均每天的消费。
- * |
- select
- geometric_mean(total) as "每日平均消费日消费(元)"
- from
- (
- select
- date_trunc('day', __time__) as day,
- sum(PretaxAmount) as total
- from
- log
- group by
- day
- order by
- day
- )
2、访问前十地址。
- * |
- select
- count(1) as pv,
- split_part(request_uri, '?', 1) as path
- group by
- path
- order by
- pv desc
- limit
- 10
3、tomcat错误请求数。
- status >= 400 |
- SELECT
- diff [] AS c1,
- diff [] AS c2,
- round(diff [] * 100.0 / diff [] - 100.0, 2) AS c3
- FROM
- (
- select
- compare(c, 3600) AS diff
- from
- (
- select
- count(1) as c
- from
- log
- )
- )
- 4、top用户代理
- * |
- select
- http_user_agent as "用户代理",
- count(*) as pv,
- round(sum(request_length) / 1024.0 / 1024, 2) as "请求报文流量(MB)",
- round(sum(body_bytes_sent) / 1024.0 / 1024, 2) as "返回客户端流量(MB)",
- round(
- sum(
- case
- when status >= 200
- and status < 300 then 1
- else 0
- end
- ) * 100.0 / count(1),
- 6
- ) as "2xx比例(%)",
- round(
- sum(
- case
- when status >= 300
- and status < 400 then 1
- else 0
- end
- ) * 100.0 / count(1),
- 6
- ) as "3xx比例(%)",
- round(
- sum(
- case
- when status >= 400
- and status < 500 then 1
- else 0
- end
- ) * 100.0 / count(1),
- 6
- ) as "4xx比例(%)",
- round(
- sum(
- case
- when status >= 500
- and status < 600 then 1
- else 0
- end
- ) * 100.0 / count(1),
- 6
- ) as "5xx比例(%)"
- group by
- "用户代理"
- order by
- pv desc
- limit
- 100
经过几个案例,其实sls的理解有稍微的加深,我觉得这可以当作一门语言来学。。。
阿里云日志服务SLS的更多相关文章
- 消费阿里云日志服务SLS
此文档只关心消费接入,不关心日志接入,只关心消费如何接入,可直接跳转到[sdk消费接入] SLS简介 日志服务: 日志服务(Log Service,简称 LOG)是针对日志类数据的一站式服务,在阿里巴 ...
- ACK容器服务虚拟节点使用阿里云日志服务来收集业务容器日志
按照这篇博文的介绍,可以在ACK集群上通过Helm的方式部署虚拟节点,提升集群的弹性能力.现在,通过虚拟节点部署的ECI弹性容器实例也支持将stdout输出.日志文件同步到阿里云日志服务(SLS)进行 ...
- 自建k8s集群日志采集到阿里云日志服务
自建k8s集群 的master 节点安装 logtail 采集工具 wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.c ...
- 阿里云日志服务 ilogtail 卸载方法
之前使用阿里云日志服务,按照文档安装了ilogtail.后面不需要了,却找不到卸载文档.仔细查看ilogtail的安装脚本后,发现里面有卸载方法. wget http://logtail-releas ...
- 阿里云日志服务采集自建Kubernetes日志(标准输出日志)
日志服务支持通过Logtail采集Kubernetes集群日志,并支持CRD(CustomResourceDefinition)进行采集配置管理.本文主要介绍如何安装并使用Logtail采集Kuber ...
- 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
摘要: 全球开源区块链领域影响最为广泛的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性.性能与扩展性等方面的显著提升.阿里云容器服务区块链解决 ...
- Knative 应用在阿里云容器服务上的最佳实践
作者|元毅 阿里云智能事业群高级开发工程师 相信通过前面几个章节的内容,大家对 Knative 有了初步的体感,那么在云原生时代如何在云上玩转 Knative?本篇内容就给你带来了 Knative 应 ...
- 利用阿里云容器服务打通TensorFlow持续训练链路
本系列将利用Docker和阿里云容器服务,帮助您上手TensorFlow的机器学习方案 第一篇:打造TensorFlow的实验环境 第二篇:轻松搭建TensorFlow Serving集群 第三篇:打 ...
- 【阿里云产品公测】简单日志服务SLS使用评测 + 教程
[阿里云产品公测]简单日志服务SLS使用评测 + 教程 评测介绍 被测产品: 简单日志服务SLS 评测环境: 阿里云基础ECS x2(1核, 512M, 1M) 操作系统: CentOS 6.5 x6 ...
随机推荐
- 【Python学习笔记七】从配置文件中读取参数
将一些需要更改或者固定的内容存放在配置文件中,通过读取配置文件来获取参数,这样修改以及使用起来比较方便 1.首先是配置文件的写法如下一个environment.ini文件: 里面“[]”存放的是sec ...
- 通过Vue实现的todolist
和接口对接的todolist因为有后台的存在,todolist获取的数据会一直存在不丢失(不管你如何刷新页面),思路如下: 首先得先搞到接口: 通过这个接口地址可以获取整段的数据,成功err为0. 于 ...
- css选择器大全
1.元素选择器 这是最基本的CSS选择器,HTML文档中的元素本身就是一个选择器: p {line-height:1.5em; margin-bottom:1em;} //设置p元素行高1.5em,距 ...
- 题解 CF613D 【Kingdom and its Cities】
考虑树形\(DP\),设\(num_x\)记录的为当\(1\)为根时,以\(x\)为子树中重要城市的个数. 那么进行分类讨论: ① 当\(num_x≠0\)时,则需将其所有满足\(num_y≠0\)的 ...
- 任务调度中心xxl-job对外接口使用
xxl-job主要分为调度中心和执行器提供了图像化界面,操作简单上手快,基本实现定时任务自动执行,同时可以针对任务日志进行查看.具体xxl-job可以再github上下载:https://github ...
- vue学习(五) 访问vue内部元素或者方法
//html <div id="app"> <input type="button" value="ok" v-bind: ...
- 为什么不应该使用goroutine id?
Goroutine id 的获取方式 之前做的项目中,会使用 goroutine-id(以下简称 goid) 作为日志中的一个标识参数.而 goroutine 的相关信息是不对外暴露的.想要获取 go ...
- 查询MySQL数据库中表结构
什么是表结构?表结构就是定义数据表文件名,确定数据表包含哪些字段,各字段的字段名.字段类型.及宽度,并将这些数据输入到计算机当中. 查询方法:以表‘employees’为例子 1.describe(d ...
- pycharm 退出虚拟环境
pycharm 内置虚拟环境 venv 如果要退出就直接 deactivate 命令就行 运行的话直接在命令行输python3 文件名
- #define IOFFSETOF(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#include <iostream> #define IOFFSETOF(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) usi ...