阿里云日志服务SLS

时间:2024-01-21 15:25:45

前言:

  刚入职实习了几天,我发现我的任务就是学习阿里云日志服务这块业务内容,这个功能和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
)

阿里云日志服务SLS

2、访问前十地址。

* |
select
count(1) as pv,
split_part(request_uri, '?', 1) as path
group by
path
order by
pv desc
limit
10

阿里云日志服务SLS

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
)
)

阿里云日志服务SLS

                         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的理解有稍微的加深,我觉得这可以当作一门语言来学。。。