日志服务-15分钟搞定Nginx访问日志分析

服务器
日志服务11月份发布数据接入向导功能,如果平均一首歌的时间按3分钟计算,那么给我们5首歌的时间,我们一起来通过日志服务的数据接入向导快速玩转NGINX访问日志分析~

15分钟能做什么?

可能一本书只能看一个章节,慢慢品一杯咖啡才喝了一半,或许玩一把炉石传说。

日志服务11月份发布数据接入向导功能,如果平均一首歌的时间按3分钟计算,那么给我们5首歌的时间,我们一起来通过日志服务的数据接入向导快速玩转NGINX访问日志分析~

数据接入向导(Wizard)

[[217262]]

一. 概述

日志服务在12月份推出了数据接入向导(Wizard)功能,快速完成数据的采集、存储、分析、离线投递, 降低用户使用日志服务门槛,目前支持的数据源以及支持配置如下:

二. 使用指引

如果你还没有使用过阿里云日志服务功能,可以参考五分钟快速入门

我们先以最常见的NGINX访问日志分析开头,来一起试一试如何快速接入该类数据源。

首先可以采用如下两种方式进入数据接入向导。

  • 新建项目在创建项目和创建日志库后点击数据接入向导

  • 已存在Logstore点击列表中数据接入向导图标进入

1. 选择数据类型

选择 自建软件 > NGINX。

2. 数据源设置

a.按照实际情况填写配置名称和日志路径,填写实际的log_format信息到NGINX日志格式中。

日志服务会自动提取出相应的键名称。

注意:其中$request会被提取为request_method和request_uri两个键。

b.应用到机器组

如果您之前没有创建过机器组,请先根据页面提示创建机器组。

注意:Logtail配置推送生效时间最长需要3分钟,请耐心等待

3. 查询分析 & 可视化

确保日志机器组心跳正常的情况下,可以通过点击右侧预览按钮获取到采集上来的数据

日志服务提供预设的数据键名称以便分析使用,可以选择实际数据键名称(根据预览数据生成)和默认数据键名称形成映射关系,nginx访问日志提供的预设数据键如下:

  1. body_bytes_sent 
  2. bytes_sent 
  3. connection 
  4. connection_requests 
  5. msec 
  6. status 
  7. time_iso8601 
  8. time_local 
  9. content_length 
  10. content_type 
  11. host 
  12. hostname 
  13. remote_addr 
  14. remote_port 
  15. remote_user 
  16. request_length 
  17. request_method 
  18. request_time 
  19. upstream_response_time 
  20. request_uri 
  21. scheme 
  22. server_addr 
  23. server_name 
  24. server_port 
  25. server_protocol 
  26. http_user_agent 
  27. http_referer 

各数据键释义可参考NGINX相关文档

点击下一步,日志服务会为您设置好索引属性并创建nginx-dashboard仪表盘以供分析使用。

3.1 分析访问日志

建立好仪表盘之后我们就可以快速分析访问日志了,可以通过左侧导航仪表盘进入分析页面。

  • PV/UV统计(pv_uv)

统计最近一天的PV数和UV数。

统计语句:

  1. * | select approx_distinct(remote_addr) as uv , 
  2.         count(1) as pv ,  
  3.         date_format(date_trunc('hour', __time__), '%m-%d %H:%i')  as time 
  4.         group by date_format(date_trunc('hour', __time__), '%m-%d %H:%i'
  5.         order by time 
  6.         limit 1000 
  • 热点访问页面统计(top_page)

统计最近一天访问最多的20个页面。

统计语句:

  1. * | select count(1) as pv, 
  2.         split_part(request_uri,'?',1) as path 
  3.         group by split_part(request_uri,'?',1)  
  4.         order by pv desc  
  5.         limit 20 
  • 请求方法统计(http_method_percentage)

统计最近一天各种请求方法的占比。

统计语句:

  1. * | select count(1) as pv, 
  2.         request_method 
  3.         group by request_method 
  • http状态码统计(http_status_percentage)

统计最近一天各种http状态码的占比。

统计语句:

  1. * | select count(1) as pv, 
  2.         status 
  3.         group by status 
  • 客户端类型统计(user_agent)

统计最近一天各种浏览器的占比。

统计语句:

  1. * | select count(1) as pv, 
  2.     case when http_user_agent like '%Android%' then 'Android'  
  3.     when http_user_agent like '%iPhone%' then 'iOS' else 'unKnown' end as http_user_agent 
  4.     group by case when http_user_agent like '%Android%' then 'Android'  
  5.     when http_user_agent like '%iPhone%' then 'iOS' else 'unKnown' end    
  6.     order by pv desc 
  7.     limit 10 
  • 来源页面统计(top_10_referer)

统计最近一天referer来源于不同域名前十的占比。

统计语句:

  1. * | select count(1) as pv, 
  2.         http_referer 
  3.         group by http_referer 
  4.         order by pv desc 

4. 投递 & ETL

除此之外还提供投递到MaxCompute(原ODPS)、OSS以及ETL服务,有兴趣的同学可参考对应帮助链接

总结

日志服务数据接入向导(Wizard)志在帮助用户快速接入各种日志场景,NGINX访问日志只是其中很小的一部分,各类数据源的接入也在不断更新,请拭目以待把~ 

责任编辑:武晓燕 来源: 云栖社区
相关推荐

2017-12-20 09:42:39

PythonNginx日志

2023-12-13 13:26:41

2009-11-26 11:19:52

NIS服务器

2015-04-21 17:35:29

代码

2013-06-27 09:41:19

LuaLua语言Lua语言快速入门

2022-06-17 08:05:28

Grafana监控仪表盘系统

2011-05-26 09:03:17

JSONjavascript

2022-04-08 08:40:36

Nginx日志服务器

2019-03-04 15:36:18

Nginx版本运维

2021-12-01 06:50:50

Docker底层原理

2013-06-24 15:32:41

JPush极光推送Android Pus移动开发

2017-09-27 11:00:50

LinuxBash使用技巧

2011-02-21 17:48:35

vsFTPd

2023-04-12 11:18:51

甘特图前端

2014-04-22 09:42:12

Bash脚本教程

2010-03-05 17:28:08

2020-10-19 18:07:00

云计算技术应用

2009-11-05 16:04:19

Oracle用户表

2015-12-03 14:10:26

systemd容器Linux

2020-02-21 19:54:09

HTTPS 配置手把手教
点赞
收藏

51CTO技术栈公众号