分析nginx access.log统计日业务接口访问量

声明

以下数据为单节点NGINX的访问日志,所有数据均取自生产环境(x.x.x.x)

分析策略及数据采集

  • 分析nginx的access.log,获取各个接口uri、访问量

  • 随机在12月取三天的日各业务量统计,三天取平均

[root@VM_0_999_centos logs]# ls 2021*log -alh
-rw-r--r-- 1 root root 3.3M Dec 27 17:14 20211207.log
-rw-r--r-- 1 root root 4.1M Dec 27 17:02 20211215.log
-rw-r--r-- 1 root root 3.7M Dec 27 16:58 20211223.log

样本1是2021年12月23号(星期四)

20211223.log

样本2是2021年12月15号(星期三)

20211215.log

样本3是2021年12月7号(星期二)

20211207.log

汇总后的log

huizong.log

日志形态

{ "time_local": "07/Dec/2021:06:41:06 +0800", "remote_addr": "1.2.3.4", "referer": "https://aaa.bbb.com/", "USER_CODE": "-", "request": "POST /api/aaa/bbb/cccc HTTP/1.1", "status": 200, "bytes": 42634, "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36", "x_forwarded": "-", "up_addr": "5.6.7.8:90","up_host": "-","upstream_time": "0.021","request_time": "0.022" }

实现代码

__author__ = 'kangpc'
__date__ = '2021-12-28 17:25'

import os,json
import pandas as pd


'''
全局参数
'''

# 日志文件存放目录
logDir = "D:\\性能测试\\"
# 源日志文件,3天汇总
logFile="D:\\性能测试\\huizong.log"
# 清洗完的文件绝对路径
target = os.path.join(logDir,"target.txt")

print (
    '''
    数据预处理
    '''
)

# 定义过滤函数,过滤掉无效uri
filt = ['.js','css','images','static']
def filter_invalid_str(s,filt):
    if s.isdigit() or s == '/' or s =='/null':
        return 0
    for i in filt:
        if i in s:
            return 0
    else:
        return 1

print(
    '''
    数据分析
    '''
)


# 统计各个uri的访问量,算出日业务量,过滤掉请求次数为0的uri
def uri_statistics():
    result = {}
    with open(logFile, 'r',encoding="utf-8") as fr:
        for i in fr:
            line = json.loads(i)
            k = str(line['request'].split()[1])
            if filter_invalid_str(k,filt):
                if k not in result.keys():
                    result[k] = 1
                elif k in result.keys():
                    result[k] += 1
                else:
                    print("%s 存入字典时,key没有找到!"%k)
    # print(result,len(result))
    new_result = {}
    for k,v in result.items():
        if v >= 3:
            new_result[k] = v // 3
    # 将清洗完的接口统计数据写入目标文件
    for k,v in new_result.items():
        data = ''.join([k,'\t',str(v),'\n'])
        with open(target,'a',encoding='utf-8') as fw:
            fw.write(data)
    return target

print(
    '''
    通过pandas处理到excel
    '''
)

def pandas_to_excel(f):
    reader = pd.read_table(f,sep='\t',engine='python',names=["interface","total"] ,header=None,iterator=True,encoding='utf-8')
    loop = True
    chunksize = 10000000
    chunks = []
    while loop:
        try:
            chunk = reader.get_chunk(chunksize)
            chunks.append(chunk)
        except StopIteration:
            loop = False
            print ("Iteration is stopped.")

    # 重新拼接成DataFrame
    df = pd.concat(chunks)

    df.to_excel(logDir+"result.xlsx")


if __name__ == '__main__':
    f = uri_statistics()
    pandas_to_excel(f)

统计结果部分截图

image

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: NGINX 配置文件 (nginx.conf) 是一个用来配置 NGINX Web 服务器的文本文件。它包含了 NGINX 服务器的全局配置、虚拟主机配置、路由规则以及其他参数。 文件中的每一行代表一个配置项,格式通常是: ``` directive value; ``` 其中 `directive` 是配置项的名称,`value` 是对应的值。配置项可以包含子配置项,这些子配置项通过大括号 ( {} ) 来分组。 常用的配置项有: - `worker_processes`:指定 NGINX 进程数。 - `events`:配置 NGINX 事件处理机制。 - `http`:定义全局 HTTP 配置,包括访问志、MIME 类型等。 - `server`:定义一个虚拟主机,包括该主机的域名、监听端口、路由规则等。 有关 NGINX 配置文件的详细说明,请参考 NGINX 官方文档:https://nginx.org/en/docs/ ### 回答2: nginx.conf是Nginx服务器的主配置文件,用于设置Nginx服务器的行为和功能。 nginx.conf文件内容包括以下几个部分的配置: 1. 全局配置:包括worker_processes(工作进程数)、error_log(错误志路径)、pid(进程PID文件路径)等。这些配置项是全局生效的,影响整个Nginx服务器的运行。 2. Events配置:设置Nginx服务器与操作系统的交互。其中包括worker_connections(每个工作进程可处理的连接数)、multi_accept(是否接受多个连接)、use(选择事件驱动模型)等。 3. HTTP配置:用于配置HTTP服务相关的设置,比如监听的端口、默认文件路径、访问志、反向代理等。常见的配置项有listen(监听地址和端口)、server_name(域名)、access_log(访问志路径)、location(URL路径匹配规则)等。 4. Mail配置:用于配置Nginx提供的邮件代理服务器。可以设置监听端口、服务器域名、邮箱过滤规则等。 5. Stream配置:用于配置Nginx提供的TCP和UDP流代理服务。可以设置监听端口、协议、反向代理等。 以上就是nginx.conf文件的主要内容解释。通过编辑nginx.conf文件,我们可以灵活地配置和控制Nginx服务器的行为,如监听的端口,反向代理的规则等。这使得Nginx可以根据不同的需求和业务进行灵活的配置和扩展,满足各种场景下的服务器部署需求。 ### 回答3: nginx.conf是Nginx的主配置文件,它负责配置Nginx的全局设置和各个虚拟主机的设置。下面是对nginx.conf文件中常见内容的解释: 1. user:指定Nginx运行的用户和用户组。该用户应具备适当的权限,以避免安全风险。 2. worker_processes:定义Nginx服务器的工作进程数。通常将其设置为CPU核心数的2倍,以充分利用计算资源。 3. events:配置请求处理模型。包括事件驱动模型和IO复用模型。 4. http:定义HTTP服务的全局设置。包括志格式、文件上传最大大小、mime类型、默认文件等。 5. server:定义一个虚拟主机。其中包括监听的IP地址和端口、服务器名、志文件路径、访问限制、SSL等。 6. location:定义URL的匹配规则和对应的处理方式。可以指定反向代理、HTTP转发、静态文件访问、缓存设置等。 7. include:引入其他配置文件。可以将常见的配置项提取到单独的文件中,以便于管理和维护。 8. upstream:定义Nginx的上游服务器,用于负载均衡和反向代理。可以配置多个服务器和对应的权重。 9. error_log:定义错误志文件路径。可以将错误信息记录到指定文件中,方便故障排查和分析nginx.conf文件的内容非常灵活和可配置,可以根据实际需求对Nginx进行个性化设置,例如处理大量并发请求、缓存静态文件、负载均衡等。合理配置nginx.conf文件可以提高Nginx的性能和安全性,并满足不同场景的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一言

让我看看你的头像

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值