Nginx之12火眼金睛 - (状态监控 & 日志分析)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Nginx从入门到深入之状态监控与日志分析

什么是Nginx状态监控

当Nginx在线上运行时,我们想监控Nginx整理的访问及性能情况,但需要用ssh登陆到该主机中进行使用命令进行查看,这种操作无疑是比较繁琐的,但Nginx提供了一个内置的状态信息监控页面可用于监控Nginx的整体访问情况,这个功能由ngx_http_stub_status_module模块进行实现。

如何启用监控模块

使用nginx -V命令检查编译的参数,如果有--with-http_stub_status_module此模块的,就代码已经启用了status功能,如果没有可以在编译时加上此编译的参数。

在 http段中,我们加入server段监听主机为本地及端口为80的配置,并在location段中指定访问的uri为status时匹配到我们配置的nginx status页面。

server {
    listen 80;
    server_name localhost;
    location /status {
       stub_status on;
    }
}

查看状态监控信息

image

#信息详解
active connections:当前的客户端活动连接数(包含正在等待的客户端连接),相当于TCP连接状态处于Established和SYN_ACK

server accepts handled requests:
accepts: 已接受的客户端连接总数,即已被worker进程接收的连接
handled: 已被处理的连接总数
requests: 客户端的http请求总数

reading: 当前正在读取的http请求数(读取到http请求首部)
writing:当前准备响应的连接数(写入到http响应首部)
waiting: 当前处于等待的空闲客户端请求数, 等待的时间为Reading和Writing之间的间隔

什么是访问日志

访问日志是记录Nginx接受用户请求及处理过程中一系列的日志记录,可以通过这些日志分析到用户IP、位置、在什么时间访问、使用什么操作系统、使用什么浏览器访问了什么页面等,从进行我们一系列的分析。

首先我们了解一下日志定义格式及日志详解

#日志定义格式
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                               '$status $body_bytes_sent "$http_referer" '
                               '"$http_user_agent" "$http_x_forwarded_for"';
#日志字段详解
$remote_addr: 客户端的ip地址
$remote_user: 用于记录远程客户端的用户名称
$time_local: 用于记录访问时间和时区
$request: 用于记录请求的url以及请求方法
$status: 响应状态码
$body_bytes_sent: 给客户端发送的文件主体内容字节数
$http_referer: 可以记录用户是从哪个链接访问过来的
$http_user_agent: 用户所使用的浏览器信息
$http_x_forwarded_for: 可以记录客户端IP,通过代理服务器来记录客户端的ip地址

如何进行分析

在以上了解了日志中每一个字段的定义,可以根据日志做出一些类似以下的分析:
1.根据访问IP统计UV
cat /usr/local/nginx/logs/access.log |awk '{print $1}' |sort |uniq -c |wc -l

2.统计访问URL统计PV
cat /usr/local/nginx/logs/access.log |awk '{print $7}' |wc -l

3.查询访问最频繁的IP(前10)
cat /usr/local/nginx/logs/access.log |awk '{print $1}' |sort | uniq -c |sort -n -k 1 -r |head -n10

4.查询访问最频繁的URL(前10)
cat /usr/local/nginx/logs/access.log |awk '{print $7}' |sort | uniq -c |sort -n -k 1 -r| head -n10

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
18天前
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
|
2月前
|
存储 监控 固态存储
如何监控和优化 WAL 日志文件的存储空间使用?
如何监控和优化 WAL 日志文件的存储空间使用?
|
2月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
3月前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
382 0
|
4月前
|
SQL 数据库 Java
Hibernate 日志记录竟藏着这些秘密?快来一探究竟,解锁调试与监控最佳实践
【8月更文挑战第31天】在软件开发中,日志记录对调试和监控至关重要。使用持久化框架 Hibernate 时,合理配置日志可帮助理解其内部机制并优化性能。首先,需选择合适的日志框架,如 Log4j 或 Logback,并配置日志级别;理解 Hibernate 的多级日志,如 DEBUG 和 ERROR,以适应不同开发阶段需求;利用 Hibernate 统计功能监测数据库交互情况;记录自定义日志以跟踪业务逻辑;定期审查和清理日志避免占用过多磁盘空间。综上,有效日志记录能显著提升 Hibernate 应用的性能和稳定性。
54 0
|
4月前
|
开发者 前端开发 编解码
Vaadin解锁移动适配新境界:一招制胜,让你的应用征服所有屏幕!
【8月更文挑战第31天】在移动互联网时代,跨平台应用开发备受青睐。作为一款基于Java的Web应用框架,Vaadin凭借其组件化设计和强大的服务器端渲染能力,助力开发者轻松构建多设备适应的Web应用。本文探讨Vaadin与移动设备的适配策略,包括响应式布局、CSS媒体查询、TouchKit插件及服务器端优化,帮助开发者打造美观且实用的移动端体验。通过这些工具和策略的应用,可有效应对屏幕尺寸、分辨率及操作系统的多样性挑战,满足广大移动用户的使用需求。
69 0
|
4月前
|
存储 运维 监控
Entity Framework Core 实现审计日志记录超棒!多种方法助你跟踪数据变化、监控操作,超实用!
【8月更文挑战第31天】在软件开发中,审计日志记录对于跟踪数据变化、监控用户操作及故障排查至关重要。Entity Framework Core (EF Core) 作为强大的对象关系映射框架,提供了多种实现审计日志记录的方法。例如,可以使用 EF Core 的拦截器在数据库操作前后执行自定义逻辑,记录操作类型、时间和执行用户等信息。此外,也可通过在实体类中添加审计属性(如 `CreatedBy`、`CreatedDate` 等),并在保存实体时更新这些属性来记录审计信息。这两种方法都能有效帮助我们追踪数据变更并满足合规性和安全性需求。
114 0
|
4月前
|
存储 JSON 监控
FastAPI日志之谜:如何揭开Web应用监控与调试的面纱?
【8月更文挑战第31天】在现代Web开发中,日志记录对于监控应用状态、诊断问题和了解用户行为至关重要。FastAPI框架提供了强大的日志功能,使开发者能轻松集成日志记录。本文将详细介绍如何在FastAPI中设置和利用日志,包括基础配置、请求响应日志、错误处理和结构化日志等内容,帮助提升应用的可维护性和性能。
183 0
|
4月前
|
消息中间件 Prometheus 监控
Producer的监控与日志记录最佳实践
【8月更文第29天】在分布式系统中,消息队列作为关键组件之一,其稳定性和性能至关重要。生产者(Producer)负责生成并发送消息到消息队列中,因此确保生产者的健康运行是非常重要的。本文将探讨如何为生产者设置监控和日志记录,以跟踪其健康状况和性能指标。
75 0
|
4月前
|
Prometheus 监控 Cloud Native
Web服务器的日志分析与监控
【8月更文第28天】Web服务器日志提供了关于服务器活动的重要信息,包括访问记录、错误报告以及性能数据。有效地分析这些日志可以帮助我们了解用户行为、诊断问题、优化网站性能,并确保服务的高可用性。本文将介绍如何使用日志分析和实时监控工具来监测Web服务器的状态和性能指标,并提供具体的代码示例。
524 0
下一篇
DataWorks