Python3 采集 GoBeansproxy 日志路由数据(SET/DELETE)存储到 MySQL

目录

写在最前:

一、Python3采集GoBeansproxy日志SET路由数据存储到MySQL

二、Python3 MySQL 数据库连接 - PyMySQL 驱动模块

三、MySQL 建表语句

四、GoBeansproxy测试日志(为方便测试改变了原 SET 的 key 值)


写在最前:

进一步保障 GoBeansDB 集群内副本数据NWR中的 N。

一、Python3采集GoBeansproxy日志SET路由数据存储到MySQL

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

'''=====================================================================
@Project -> File   :GoBeansDB -> gobeansproxy_log_analysis.py
@IDE    :PyCharm
@Author :Mr. Wufei
@Date   :2019/10/23 21:00
@Desc   :Python3采集GoBeansproxy日志SET路由数据存储到MySQL,并清理历史日志
======================================================================'''

import re
import time
import datetime
import socket
import struct
import mysqlconn
from os import stat

class LogAnalysis(object):

    def __init__(self, mysql_conn_dict, logsize_limit, logsize_days, logfile_path):
        """
        :param mysql_conn_dict: 一个包含 MySQL 连接所需信息的字典(格式:{'host': '127.0.0.1', 'port': 3306, 'user': 'test', 'passwd': 'test', 'db': 'test'})
        :param logsize_limit: 日志限制大小,单位:M
        :param logsize_days: 删除指定日期以前的日志记录,大于等于 1
        :param logfile_path: 日志文件路径
        """
        self.__mysql_conn_dict = mysql_conn_dict
        self.__in_logfile = logfile_path
        self.__out_logdata = ''
        self.__logsize_limit = logsize_limit
        self.__logsize_days = logsize_days

    def __getYesterday(self):
        """
        :return: 昨天日期
        """
        today = datetime.date.today()
        oneday = datetime.timedelta(days = 1)
        yesterday = today - oneday
        yesterday = yesterday.strftime("%Y/%m/%d")
        return yesterday

    def __getNearlydate(self, n):
        """
        :param n: 天数:近几天
        :return:一个近 n 天的日期列表,格式为:['2019/10/23', '2019/10/22', '2019/10/21']
        """
        nearlydate_list = []
        today = datetime.date.today()
        for i in range(n):
            numday = datetime.timedelta(days = i)
            nearlyday = today - numday
            nearlyday = nearlyday.strftime("%Y/%m/%d")
            nearlydate_list += [nearlyday]
        return nearlydate_list

    def __parseTime(self, log_date, log_time):
        """
        :param log_date: 日志日期,格式为:"2019/09/12"
        :param log_time: 日志时间,格式为:"12:29:29.081609"
        :return: 10 位的日期时间戳(int类型) + 6 位毫秒(字符串)
        """
        date_time = '%s %s' %(log_date, log_time)
        data_time, microsecond = date_time.split('.')
        data_time = time.strptime(data_time, "%Y/%m/%d %H:%M:%S")
        timestamp = int(time.mktime(data_time))
        return timestamp, microsecond

    def __parseIpport(self, ipport):
        """
        解析 IP、PORT,将 IP 、PORT 处理为 int 类型,并返回一个二维列表
        :param ipport: 日志 IP、port 字符串,格式为:"xx.xx.3.36:7980,xx.xx.3.36:7981"
        :return: 一个二维列表,格式为:[[xx.xx.3.36, 7980], [xx.xx.3.36, 7981]]
        """
        gobeans_list = []
        for item in str(ipport).split(','):
            gobeans_ip, gobeans_port = item.split(':')
            int_ip, int_port = struct.unpack('!I', socket.inet_aton(gobeans_ip))[0], int(gobeans_port)
            gobeans_list += [[int_ip, int_port]]
        return gobeans_list

    def __mysqlOperations(self, mysql_conn_dict, sql_cnki, sql_insert):
        """
        MySQL 操作
        :param mysql_conn_dict: 一个包含 MySQL 连接所需信息的字典
        :param sql_cnki: 一条标准查重 SQL 语句,防止插入重复数据或重复执行
        :param sql_insert: 一条标准插入 SQL 语句
        :return:
        """
        with mysqlconn.MySqlDB(host = mysql_conn_dict['host'], port = mysql_conn_dict['port'], user=mysql_conn_dict['user'], passwd=mysql_conn_dict['passwd'], db=mysql_conn_dict['db']) as db:
            db.execute(sql_cnki)
            cnki_dict = db.fetchone()
            cnki_v = list(cnki_dict.items())[0][1]
            if cnki_v == 0:
                db.execute(sql_insert)
                return 'Data inserted successfully'
            else:
                return 'Data already exists'

    def __processLine(self, line):
        """
        解析日志,日志格式:2019/10/21 09:40:55.721872 V1 xx.xx.3.36:60895 SET SUCC 8 xx.xx.3.36:7980,xx.xx.3.36:7981 213626 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
        对应数据名称:log_date, log_time, log_v, proxy_ip_port, method_set, method_status, unknown_first, gobeans_ip_port, unknown_second, request_key
        解析每一行数据,生成 SQL 语句
        :param line: 如上格式的一行数据
        :return:
        """
        try:
            (
                log_date,
                log_time,
                _,
                proxy_ip_port,
                method_type,
                method_status,
                _,
                gobeans_ip_port,
                _,
                request_key
            ) = line.split( )
        except Exception:
            return False
        timestamp, microsecond = self.__parseTime(log_date, log_time)
        proxy_ip, _ = str(proxy_ip_port).split(':')
        proxy_ip = struct.unpack('!I', socket.inet_aton(proxy_ip))[0]
        gobeans_list = self.__parseIpport(gobeans_ip_port)
        # print(timestamp, microsecond, proxy_ip, method_status, gobeans_list, request_key)
        # 判断操作类型
        if method_type == 'SET':
            m_type = 1
        elif method_type == 'DELETE':
            m_type = 2
        elif method_type == 'GETM':
            m_type = 3
        elif method_type == 'GET':
            m_type = 4
        else:
            m_type = 0
        # 判断操作状态
        if method_status == 'SUCC':
            m_status = 1
        else:
            m_status = 0
        for item in gobeans_list:
            gobeansdb_ip, gobeansdb_port = item
            # print(timestamp, microsecond, proxy_ip, m_type, m_status, gobeansdb_ip, gobeansdb_port, request_key)
            # 查重 SQL
            sql_cnki = '''
                select 
                    count(1) as sql_cnki 
                from gobeansproxy_record 
                where timestamp_int = %d 
                and microsecond = "%s"
                and method_type = %d
                and method_status = %d
                and gobeansdb_ip = %d 
                and gobeansdb_port = %d
            ''' %(timestamp, microsecond, m_type, m_status, gobeansdb_ip, gobeansdb_port)
            # 插入 SQL
            sql_insert = '''
                insert into 
                    gobeansproxy_record(timestamp_int, microsecond, proxy_ip, method_type, method_status, gobeansdb_ip, gobeansdb_port, request_key) 
                values(%d, "%s", %d, %d, %d, %d, %d, "%s")
            ''' %(timestamp, microsecond, proxy_ip, m_type, m_status, gobeansdb_ip, gobeansdb_port, request_key)
            self.__mysqlOperations(self.__mysql_conn_dict, sql_cnki, sql_insert)

    def __processSize(self, m, n):
        """
        判断文件大小及确定删除日志天数
        :param m: 日志限制大小,单位:M
        :param n: 删除日志天数,大于等于 1
        :return: 递归,最终返回一个 float 型的当前日志大小,单位:M
        """
        statinfo = stat(self.__in_logfile)
        logfile_size = statinfo.st_size
        if logfile_size >= (m * 1024 * 1024) and n >= 1:
            # 递归删除指定日期(n)以前的日志记录
            self.__writeLine(self.__out_logdata, n)
            return self.__processSize(m ,n - 1)
        else:
            return ('%.3f'%(statinfo.st_size/1024/1024))

    def __writeLine(self, log_datas, days):
        """
        删除指定日期以前的数据
        :param log_datas: 所有行的日志数据列表
        :param days: 删除日志天数,大于等于 1
        :return:
        """
        # 获取近几日日期列表(天数由参赛 days 指定)
        nearlydate_list = self.__getNearlydate(days)
        # 按条件清理历史数据
        with open(self.__in_logfile, 'w') as logfile_write:
            for line in log_datas:
                # line = line.strip()
                for nearlyday in nearlydate_list:
                    line_date = re.match(nearlyday, line)
                    if not line_date:
                        continue
                    else:
                        logfile_write.write(line)

    def process(self):
        """
        :return:
        """
        # 获取昨天日期
        yesterday = self.__getYesterday()
        # 解析日志文件
        with open(self.__in_logfile, 'r') as logfile:
            self.__out_logdata = logfile.readlines()
            for line in self.__out_logdata:
                line = line.strip()
                line_get = re.search(r'GET', line)
                line_date = re.match(yesterday, line)
                # 判断是否为昨天,并且是否为 SET 记录
                if not line_date or line_get:
                    continue
                else:
                    self.__processLine(line)

        # 判断文件大小,限制为指定 M 大小,递归删除指定日期以前的日志记录
        self.__processSize(self.__logsize_limit, self.__logsize_days)

"""
if __name__ == "__main__":
    mysql_higo_gobeansdb_dict = {'host': 'xx.xx.4.181', 'port': 3701, 'user': 'xxxx_test', 'passwd': 'xxxxtest', 'db': 'xxxx_gobeansdb'}
    gobeansproxy = LogAnalysis(mysql_xxxx_gobeansdb_dict, 10, 7, './gobeansdb/log/proxy-access.log')
    gobeansproxy.process()
"""

二、Python3 MySQL 数据库连接 - PyMySQL 驱动模块

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

'''=================================================
@Project -> File   :GoBeansDB -> mysqlconn.py
@IDE    :PyCharm
@Author :Mr. Wufei
@Date   :2019/10/23 21:00
@Desc   :Python3 MySQL 数据库连接 - PyMySQL 驱动模块
=================================================='''

import pymysql

class MySqlDB(object):

    def __init__(self,host = 'localhost', port = 3306, user = 'root', passwd = 'root', db = '', charset = 'utf8'):
        # 建立连接
        self.conn = pymysql.connect(host = host, port = port, user = user, passwd = passwd, db = db, charset = charset)
        # 创建游标,操作设置为字典类型
        self.cur = self.conn.cursor(cursor = pymysql.cursors.DictCursor)

    def __enter__(self):
        # 返回游标
        return self.cur

    def __exit__(self, exc_type, exc_val, exc_tb):
        # 提交数据库并执行
        self.conn.commit()
        # 关闭游标
        self.cur.close()
        # 关闭数据库连接
        self.conn.close()

"""
if __name__ == '__main__':
    with MySqlDB(host = 'xx.xx.4.181', port = 3701, user = 'xxxx_test', passwd = 'xxxxtest', db = 'xxxx_gobeansdb') as db:
        sql = '''select 
            timestamp_int, 
            microsecond, 
            proxy_ip, 
            method_type
            method_status, 
            gobeansdb_ip, 
            gobeansdb_port, 
            request_key 
        from gobeansproxy_record
        '''
        sql = '''select 
            concat_ws(".", from_unixtime(timestamp_int), microsecond) as log_time, 
            inet_ntoa(proxy_ip) as proxy_ip, 
            if(method_type = 1, 'SET', 'DELETE') as type,
            if(method_status = 1, "SUCC", "FAILED") as status, 
            inet_ntoa(gobeansdb_ip) as gobeansdb_ip, 
            gobeansdb_port, 
            request_key 
        from gobeansproxy_record
        '''
        db.execute(sql)
        for i in db:
            print(i)
"""

Python3 MySQL 数据库连接测试结果打印:

.GoBeansDB/gobeansproxy/mysqlconn.py


{'log_time': '2019-10-31 09:40:55.721872', 'proxy_ip': 'xx.xx.3.36', 'type': 'SET', 'status': 'SUCC', 'gobeansdb_ip': 'xx.xx.3.36', 'gobeansdb_port': 7980, 'request_key': 'show31'}
{'log_time': '2019-10-31 09:40:55.721872', 'proxy_ip': 'xx.xx.3.36', 'type': 'SET', 'status': 'SUCC', 'gobeansdb_ip': 'xx.xx.3.36', 'gobeansdb_port': 7981, 'request_key': 'show31'}
{'log_time': '2019-10-31 12:29:29.081609', 'proxy_ip': 'xx.xx.3.36', 'type': 'DELETE', 'status': 'SUCC', 'gobeansdb_ip': 'xx.xx.3.36', 'gobeansdb_port': 7980, 'request_key': 'wufei31'}
{'log_time': '2019-10-31 12:29:29.081609', 'proxy_ip': 'xx.xx.3.36', 'type': 'DELETE', 'status': 'SUCC', 'gobeansdb_ip': 'xx.xx.3.36', 'gobeansdb_port': 7982, 'request_key': 'wufei31'}
{'log_time': '2019-10-31 12:29:29.081609', 'proxy_ip': 'xx.xx.3.36', 'type': 'SET', 'status': 'SUCC', 'gobeansdb_ip': 'xx.xx.3.36', 'gobeansdb_port': 7980, 'request_key': 'wufei31'}
{'log_time': '2019-10-31 12:29:29.081609', 'proxy_ip': 'xx.xx.3.36', 'type': 'SET', 'status': 'SUCC', 'gobeansdb_ip': 'xx.xx.3.36', 'gobeansdb_port': 7982, 'request_key': 'wufei31'}

 

Process finished with exit code 0

 

三、MySQL 建表语句

mysql> select record_id, timestamp_int, microsecond, proxy_ip, method_type, method_status, gobeansdb_ip, gobeansdb_port, request_key from gobeansproxy_record;

测试数据演示:

mysql> select record_id, timestamp_int, microsecond, proxy_ip, set_status, gobeansdb_ip, gobeansdb_port, request_key from gobeansproxy_record;

+-----------+---------------+-------------+-----------+-------------+---------------+--------------+----------------+-------------+
| record_id | timestamp_int | microsecond | proxy_ip  | method_type | method_status | gobeansdb_ip | gobeansdb_port | request_key |
+-----------+---------------+-------------+-----------+-------------+---------------+--------------+----------------+-------------+
|         1 |    1572486055 | 721872      | 169083684 |           1 |             1 |    169083684 |           7980 | show31      |
|         2 |    1572486055 | 721872      | 169083684 |           1 |             1 |    169083684 |           7981 | show31      |
|         3 |    1572496169 | 081609      | 169083684 |           2 |             1 |    169083684 |           7980 | wufei31     |
|         4 |    1572496169 | 081609      | 169083684 |           2 |             1 |    169083684 |           7982 | wufei31     |
|         5 |    1572496169 | 081609      | 169083684 |           1 |             1 |    169083684 |           7980 | wufei31     |
|         6 |    1572496169 | 081609      | 169083684 |           1 |             1 |    169083684 |           7982 | wufei31     |
+-----------+---------------+-------------+-----------+-------------+---------------+--------------+----------------+-------------+

mysql> select concat_ws(".", from_unixtime(timestamp_int), microsecond) as log_time, inet_ntoa(proxy_ip) as proxy_ip, if(method_type = 1, 'SET', 'DELETE') as type, if(method_status = 1, "SUCC", "FAILED") as status, inet_ntoa(gobeansdb_ip) as gobeansdb_ip, gobeansdb_port, request_key from gobeansproxy_record;

+----------------------------+------------+--------+--------+--------------+----------------+-------------+
| log_time                   | proxy_ip   | type   | status | gobeansdb_ip | gobeansdb_port | request_key |
+----------------------------+------------+--------+--------+--------------+----------------+-------------+
| 2019-10-31 09:40:55.721872 | xx.xx.3.36 | SET    | SUCC   | 10.20.3.36   |           7980 | show31      |
| 2019-10-31 09:40:55.721872 | xx.xx.3.36 | SET    | SUCC   | 10.20.3.36   |           7981 | show31      |
| 2019-10-31 12:29:29.081609 | xx.xx.3.36 | DELETE | SUCC   | 10.20.3.36   |           7980 | wufei31     |
| 2019-10-31 12:29:29.081609 | xx.xx.3.36 | DELETE | SUCC   | 10.20.3.36   |           7982 | wufei31     |
| 2019-10-31 12:29:29.081609 | xx.xx.3.36 | SET    | SUCC   | 10.20.3.36   |           7980 | wufei31     |
| 2019-10-31 12:29:29.081609 | xx.xx.3.36 | SET    | SUCC   | 10.20.3.36   |           7982 | wufei31     |
+----------------------------+------------+--------+--------+--------------+----------------+-------------+

四、GoBeansproxy测试日志(为方便测试改变了原 key 值)

2019/xx.xx 09:31:22.432885 V1 xx.xx.3.36:60868 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 928 xxx/_x/d8/ad/871bbca674f4a9042206c26623c3_780_780.cz.jpg
2019/xx.xx 09:40:55.721872 V1 xx.xx.3.36:60895 SET SUCC 8 xx.xx.3.36:7980,xx.xx.3.36:7981 213626 show20
2019/xx.xx 09:40:55.722992 V1 xx.xx.3.36:60895 GET SUCC 8 xx.xx.3.36:7980 808 show20
2019/xx.xx 09:41:39.121972 V1 xx.xx.3.36:60896 GET SUCC 8 xx.xx.3.36:7980 407 show20
2019/xx.xx 10:04:41.128664 V1 xx.xx.3.36:60933 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 834 xxx/_x/da/a9/cea75563ccab60f8cd79e904ab30_790_790.cz.jpg
2019/xx.xx 10:06:39.114136 V1 xx.xx.3.36:60955 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 939 xxx/_x/77/93/af24e3759011e25ffa0de66e4acc_720_1280.cz.jpg
2019/xx.xx 11:09:22.416221 V1 xx.xx.3.36:32811 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 714 /xxx/_x/77/93/af24e3759011e25ffa0de66e4acc_720_1280.cz.jpg
2019/xx.xx 11:29:35.771199 V1 xx.xx.3.36:32856 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 839 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/xx.xx 11:32:56.790596 V1 xx.xx.3.36:32857 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 719 /xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/xx.xx 11:52:43.724210 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 792 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/xx.xx 11:53:48.533971 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 943 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/xx.xx 11:55:00.942678 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 924 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/xx.xx 11:58:45.771280 V1 xx.xx.3.36:32904 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 862 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/xx.xx 12:26:10.934321 V1 xx.xx.3.36:32904 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 903 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/xx.xx 12:29:29.081609 V1 xx.xx.3.36:32950 SET SUCC 8 xx.xx.3.36:7980,xx.xx.3.36:7982 213626 wufei20
2019/10/21 09:31:22.432885 V1 xx.xx.3.36:60868 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 928 xxx/_x/d8/ad/871bbca674f4a9042206c26623c3_780_780.cz.jpg
2019/10/21 09:40:55.721872 V1 xx.xx.3.36:60895 SET SUCC 8 xx.xx.3.36:7980,xx.xx.3.36:7981 213626 show21
2019/10/21 09:40:55.722992 V1 xx.xx.3.36:60895 GET SUCC 8 xx.xx.3.36:7980 808 show21
2019/10/21 09:41:39.121972 V1 xx.xx.3.36:60896 GET SUCC 8 xx.xx.3.36:7980 407 show21
2019/10/21 10:04:41.128664 V1 xx.xx.3.36:60933 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 834 xxx/_x/da/a9/cea75563ccab60f8cd79e904ab30_790_790.cz.jpg
2019/10/21 10:06:39.114136 V1 xx.xx.3.36:60955 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 939 xxx/_x/77/93/af24e3759011e25ffa0de66e4acc_720_1280.cz.jpg
2019/10/21 11:09:22.416221 V1 xx.xx.3.36:32811 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 714 /xxx/_x/77/93/af24e3759011e25ffa0de66e4acc_720_1280.cz.jpg
2019/10/21 11:29:35.771199 V1 xx.xx.3.36:32856 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 839 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/21 11:32:56.790596 V1 xx.xx.3.36:32857 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 719 /xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/21 11:52:43.724210 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 792 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/21 11:53:48.533971 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 943 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/21 11:55:00.942678 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 924 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/21 11:58:45.771280 V1 xx.xx.3.36:32904 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 862 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/21 12:26:10.934321 V1 xx.xx.3.36:32904 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 903 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/21 12:29:29.081609 V1 xx.xx.3.36:32950 SET SUCC 8 xx.xx.3.36:7980,xx.xx.3.36:7982 213626 wufei21
2019/10/22 09:31:22.432885 V1 xx.xx.3.36:60868 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 928 xxx/_x/d8/ad/871bbca674f4a9042206c26623c3_780_780.cz.jpg
2019/10/22 09:40:55.721872 V1 xx.xx.3.36:60895 SET SUCC 8 xx.xx.3.36:7980,xx.xx.3.36:7981 213626 show22
2019/10/22 09:40:55.722992 V1 xx.xx.3.36:60895 GET SUCC 8 xx.xx.3.36:7980 808 show22
2019/10/22 09:41:39.121972 V1 xx.xx.3.36:60896 GET SUCC 8 xx.xx.3.36:7980 407 show22
2019/10/22 10:04:41.128664 V1 xx.xx.3.36:60933 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 834 xxx/_x/da/a9/cea75563ccab60f8cd79e904ab30_790_790.cz.jpg
2019/10/22 10:06:39.114136 V1 xx.xx.3.36:60955 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 939 xxx/_x/77/93/af24e3759011e25ffa0de66e4acc_720_1280.cz.jpg
2019/10/22 11:09:22.416221 V1 xx.xx.3.36:32811 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 714 /xxx/_x/77/93/af24e3759011e25ffa0de66e4acc_720_1280.cz.jpg
2019/10/22 11:29:35.771199 V1 xx.xx.3.36:32856 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 839 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/22 11:32:56.790596 V1 xx.xx.3.36:32857 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 719 /xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/22 11:52:43.724210 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 792 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/22 11:53:48.533971 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 943 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/22 11:55:00.942678 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 924 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/22 11:58:45.771280 V1 xx.xx.3.36:32904 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 862 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/22 12:26:10.934321 V1 xx.xx.3.36:32904 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 903 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/22 12:29:29.081609 V1 xx.xx.3.36:32950 SET SUCC 8 xx.xx.3.36:7980,xx.xx.3.36:7982 213626 wufei22
2019/10/23 09:31:22.432885 V1 xx.xx.3.36:60868 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 928 xxx/_x/d8/ad/871bbca674f4a9042206c26623c3_780_780.cz.jpg
2019/10/23 09:40:55.721872 V1 xx.xx.3.36:60895 SET SUCC 8 xx.xx.3.36:7980,xx.xx.3.36:7981 213626 show23
2019/10/23 09:40:55.722992 V1 xx.xx.3.36:60895 GET SUCC 8 xx.xx.3.36:7980 808 show23
2019/10/23 09:41:39.121972 V1 xx.xx.3.36:60896 GET SUCC 8 xx.xx.3.36:7980 407 show23
2019/10/23 10:04:41.128664 V1 xx.xx.3.36:60933 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 834 xxx/_x/da/a9/cea75563ccab60f8cd79e904ab30_790_790.cz.jpg
2019/10/23 10:06:39.114136 V1 xx.xx.3.36:60955 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 939 xxx/_x/77/93/af24e3759011e25ffa0de66e4acc_720_1280.cz.jpg
2019/10/23 11:09:22.416221 V1 xx.xx.3.36:32811 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 714 /xxx/_x/77/93/af24e3759011e25ffa0de66e4acc_720_1280.cz.jpg
2019/10/23 11:29:35.771199 V1 xx.xx.3.36:32856 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 839 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/23 11:32:56.790596 V1 xx.xx.3.36:32857 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 719 /xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/23 11:52:43.724210 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 792 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/23 11:53:48.533971 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 943 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/23 11:55:00.942678 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 924 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/23 11:58:45.771280 V1 xx.xx.3.36:32904 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 862 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/23 12:26:10.934321 V1 xx.xx.3.36:32904 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 903 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/23 12:29:29.081609 V1 xx.xx.3.36:32950 SET SUCC 8 xx.xx.3.36:7980,xx.xx.3.36:7982 213626 wufei23
2019/10/31 09:31:22.432885 V1 xx.xx.3.36:60868 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 928 xxx/_x/d8/ad/871bbca674f4a9042206c26623c3_780_780.cz.jpg
2019/10/31 09:40:55.721872 V1 xx.xx.3.36:60895 SET SUCC 8 xx.xx.3.36:7980,xx.xx.3.36:7981 213626 show31
2019/10/31 09:40:55.722992 V1 xx.xx.3.36:60895 GET SUCC 8 xx.xx.3.36:7980 808 show31
2019/10/31 09:41:39.121972 V1 xx.xx.3.36:60896 GET SUCC 8 xx.xx.3.36:7980 407 show31
2019/10/31 12:29:29.081609 V1 xx.xx.3.36:32950 DELETE SUCC 8 xx.xx.3.36:7980,xx.xx.3.36:7982 213626 wufei31
2019/10/31 10:04:41.128664 V1 xx.xx.3.36:60933 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 834 xxx/_x/da/a9/cea75563ccab60f8cd79e904ab30_790_790.cz.jpg
2019/10/31 10:06:39.114136 V1 xx.xx.3.36:60955 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 939 xxx/_x/77/93/af24e3759011e25ffa0de66e4acc_720_1280.cz.jpg
2019/10/31 11:09:22.416221 V1 xx.xx.3.36:32811 GET FAILED 0 xx.xx.3.36:7982,xx.xx.3.36:7980 714 /xxx/_x/77/93/af24e3759011e25ffa0de66e4acc_720_1280.cz.jpg
2019/10/31 11:29:35.771199 V1 xx.xx.3.36:32856 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 839 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/31 11:32:56.790596 V1 xx.xx.3.36:32857 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 719 /xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/31 11:52:43.724210 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 792 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/31 11:53:48.533971 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 943 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/31 11:55:00.942678 V1 xx.xx.3.36:32880 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 924 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/31 11:58:45.771280 V1 xx.xx.3.36:32904 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 862 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/31 12:26:10.934321 V1 xx.xx.3.36:32904 GET FAILED 0 xx.xx.3.36:7981,xx.xx.3.36:7980 903 xxx/_x/5d/32/c1926b02ec076353c44743f27a78_852_1280.cz.jpg
2019/10/31 12:29:29.081609 V1 xx.xx.3.36:32950 SET SUCC 8 xx.xx.3.36:7980,xx.xx.3.36:7982 213626 wufei31
2019/10/31 12:29:29.081609 V1 xx.xx.3.36:32950 GETM SUCC 8 xx.xx.3.36:7980,xx.xx.3.36:7982 213626 feifei01 feifei02 feifei03

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值