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

简介: 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日志并进行多维度分析。
目录
相关文章
|
23天前
|
监控 关系型数据库 MySQL
《MySQL 简易速速上手小册》第7章:MySQL监控和日志分析(2024 最新版)
《MySQL 简易速速上手小册》第7章:MySQL监控和日志分析(2024 最新版)
41 3
|
1月前
|
运维 监控 应用服务中间件
LNMP详解(十五)——Nginx日志分析实战
LNMP详解(十五)——Nginx日志分析实战
34 0
|
14天前
|
弹性计算 应用服务中间件 Shell
切割 Nginx 日志文件
【4月更文挑战第28天】
21 0
|
5天前
|
存储 运维 监控
【Docker专栏】Docker日志管理与监控的最佳方法
【5月更文挑战第7天】本文探讨了Docker容器的日志管理与监控,强调其在运维中的重要性。Docker默认使用`json-file`日志驱动,可通过`docker logs`命令查看。建议选择合适日志驱动,配置日志选项,并集成ELK Stack等工具进行高级分析。实时监控、设置警报、分析数据和审计日志是实践关键。最佳实践包括日志数据与容器数据分离、使用日志代理、保护敏感信息及遵守法规。关注新技术以提升系统稳定性和安全性。
【Docker专栏】Docker日志管理与监控的最佳方法
|
6天前
|
监控 安全 数据可视化
中间件应用日志记录和监控
中间件应用日志记录和监控
20 3
|
12天前
|
Prometheus 监控 Cloud Native
【Go语言专栏】Go语言中的日志记录与监控
【4月更文挑战第30天】Go语言在软件开发和运维中扮演重要角色,提供灵活的日志记录机制和与多种监控工具的集成。内置`log`包支持基本日志记录,而第三方库如`zap`、`zerolog`和`logrus`则扩展了更多功能。监控方面,Go应用可与Prometheus、Grafana、Jaeger等工具配合,实现系统指标收集、可视化和分布式追踪。健康检查通过HTTP端点确保服务可用性。结合日志和监控,能有效提升Go应用的稳定性和性能。
|
12天前
|
存储 监控 关系型数据库
PHP编写的电脑监控软件:用户登录日志记录与分析
使用PHP编写简单但功能强大的电脑监控软件,记录用户登录日志并进行分析。代码示例展示了如何获取并存储用户IP地址和登录时间到数据库,然后进行登录数据的分析,如计算登录频率和常见登录时间。此外,还介绍了如何通过定时任务自动将监控数据提交到网站,以便实时监控用户活动,提升系统安全性和稳定性。
38 0
|
12天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理策略
【4月更文挑战第30天】 在微服务架构日益普及的当下,容器化技术与编排工具如Kubernetes成为了运维领域的重要话题。有效的监控和日志管理对于保障系统的高可用性和故障快速定位至关重要。本文将探讨在Kubernetes环境中实施监控和日志管理的最佳实践,包括选用合适的工具、部署策略以及如何整合这些工具来提供端到端的可见性。我们将重点讨论Prometheus监控解决方案和EFK(Elasticsearch, Fluentd, Kibana)日志管理堆栈,分析其在Kubernetes集群中的应用,并给出优化建议。
|
13天前
|
弹性计算 应用服务中间件 Shell
切割Nginx 日志文件
【4月更文挑战第29天】
21 1
|
26天前
|
存储 Prometheus 监控
Flask监控与日志记录:掌握应用运行状况
【4月更文挑战第16天】本文介绍了在Flask应用中实现监控和日志记录的方法,以确保应用稳定性和问题排查。推荐使用Prometheus、Grafana、New Relic或Flask-MonitoringDashboard等工具进行监控,并通过Python的logging模块记录日志。监控集成涉及安装配置工具、添加监控代码,而日志管理则需要集中存储和使用分析工具。安全是关键,要防止未授权访问和数据泄露,避免记录敏感信息。监控和日志记录有助于提升应用性能和用户体验。