tencent cloud

日志服务

动态与公告
产品动态
公告
新手指引
产品简介
产品概述
产品优势
地域和访问域名
规格与限制
基本概念
购买指南
计费概述
产品定价
按量计费(后付费)
欠费说明
清理日志服务资源
成本优化
常见问题
快速入门
一分钟入门指南
入门指南
使用 Demo 日志快速体验 CLS
操作指南
资源管理
权限管理
日志采集
指标采集
日志存储
指标存储
检索分析(日志主题)
检索分析(指标主题)
仪表盘
数据处理
投递与消费
监控告警
云产品中心
DataSight 独立控制台
历史文档
实践教程
日志采集
检索分析
仪表盘
监控告警
投递和消费
成本优化
开发者指南
通过 iframe 内嵌 CLS(旧方案)
通过 Grafana 使用 CLS
API 文档
History
Introduction
API Category
Making API Requests
Topic Management APIs
Log Set Management APIs
Index APIs
Topic Partition APIs
Machine Group APIs
Collection Configuration APIs
Log APIs
Metric APIs
Alarm Policy APIs
Data Processing APIs
Kafka Protocol Consumption APIs
CKafka Shipping Task APIs
Kafka Data Subscription APIs
COS Shipping Task APIs
SCF Delivery Task APIs
Scheduled SQL Analysis APIs
COS Data Import Task APIs
Data Types
Error Codes
常见问题
健康监测问题解释
采集相关
检索分析相关
其他问题
服务等级协议
CLS 政策
隐私协议
数据处理和安全协议
联系我们
词汇表

Nginx 访问日志分析

PDF
聚焦模式
字号
最后更新时间: 2024-01-20 17:28:40

概述

Nginx 是一个高性能的 HTTP 和反向代理 Web 服务器,透过 Nginx 日志可以挖掘非常大的价值,例如诊断调优网站,监控网站稳定性,运营数据统计等。本文介绍如何通过日志服务(Cloud Log Service,CLS)对 Nginx 进行全方位日志数据挖掘。

前提条件

已将 Nginx 日志采集至 CLS,详见 操作指南
本文采取标准 Nginx 日志配置:
log_format main '$server_name $remote_addr - $remote_user [$time_local] "$request" '
'$status $uptream_status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" ';

场景示例

诊断调优

需求场景

针对访问延时大的页面进行调优,优化用户体验。

解决方案

计算每5分钟请求的平均延时和最大延时,从整体了解延时情况。
* | select time_series(__TIMESTAMP__, '5m', '%Y-%m-%d %H:%i:%s', '0') as time, avg(request_time) as avg_latency ,max(request_time) as max_latency group by time order by time limit 1000
统计最大延时对应的请求页面,进一步优化页面响应。
* | select time_series(__TIMESTAMP__, '5m', '%Y-%m-%d %H:%i:%s', '0') as time, max_by(request_uri,request_time) group by time order by time limit 1000
对延时最大的页面进行调优。 例如 /4nm8c.html 页面的访问延时最大,需要对 /4nm8c.html 页面进行调优,则需计算 /4nm8c.html 页面的访问 PV、UV、各种请求方法次数、各种请求状态次数、各种浏览器次数、平均延时和最大延时。
request_uri:"/4nm8c.html*" | select count(1) as pv,
approx_distinct(remote_addr) as uv,
histogram(method) as method_pv,
histogram(status) as status_pv,
histogram(user_agent) as user_agent_pv,
avg(request_time) as avg_latency,
max(request_time) as max_latency

监控网站稳定性问题

需求场景

针对性能问题、网站错误、流量急跌或暴涨等情况,根据日志监控阈值,一旦触发阈值告警,先于用户发现问题。

解决方案

使用数学统计中的百分数(例如99%最大延时)来作为告警触发条件较为准确,使用平均值,个体值触发告警会造成一些个体请求延时被平均,无法反映真实情况。例如使用如下查询分析语句计算一天窗口(1440分钟)内各分钟的平均延时大小、50%分位的延时大小和90%分位的延时大小。
* | select avg(request_time) as l, approx_percentile(request_time, 0.5) as p50, approx_percentile(request_time, 0.99) as p99, time_series(__TIMESTAMP__, '5m', '%Y-%m-%d %H:%i:%s', '0') as time group by time order by time desc limit 1440
针对99%分位的延时大于100ms告警,并且在告警信息中直接展示受影响的 url,用户,快速判断出错情况。
* | select approx_percentile(request_time, 0.99) as p99
接收告警信息,根据受影响的 top url 及用户信息,进行针对性的告警恢复决策。

分析网站访问情况

利用 CLS,用户可以搭建运营数据大盘,全方位展示网站访问情况。访问 PV/UV 统计、访问地理信息统计,前十访问来源、访问前十地址和等信息均可快速分析。
统计最近一天访问 IP 地址的来源情况。
* | select count(1) as c, ip_to_province(remote_addr) as address group by address limit 100
展示最近一天 PV 数最多的前十个访问来源页面,获取热门页面。
* | select count(1) as pv , http_referer group by http_referer order by pv desc limit 10

image-20210823212306355


展示最近一天内的 PV 数和 UV 数。
*| select approx_distinct(remote_addr) as uv ,count(1) as pv , time_series(__TIMESTAMP__, '5m', '%Y-%m-%d %H:%i:%s', '0') as time group by time order by time limit 1000


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈