# -*- coding: utf-8 -*-
# Description: web log netdata python.d module
# Author: l2isbad
# SPDX-License-Identifier: GPL-3.0-or-later
import bisect
import re
import os
from collections import namedtuple, defaultdict
from copy import deepcopy
try:
from itertools import filterfalse
except ImportError:
from itertools import ifilter as filter
from itertools import ifilterfalse as filterfalse
try:
from sys import maxint
except ImportError:
from sys import maxsize as maxint
from bases.collection import read_last_line
from bases.FrameworkServices.LogService import LogService
ORDER_APACHE_CACHE = [
'apache_cache',
]
ORDER_WEB = [
'response_statuses',
'response_codes',
'bandwidth',
'response_time',
'response_time_hist',
'response_time_upstream',
'response_time_upstream_hist',
'requests_per_url',
'requests_per_user_defined',
'http_method',
'vhost',
'port',
'http_version',
'requests_per_ipproto',
'clients',
'clients_all'
]
ORDER_SQUID = [
'squid_response_statuses',
'squid_response_codes',
'squid_detailed_response_codes',
'squid_method',
'squid_mime_type',
'squid_hier_code',
'squid_transport_methods',
'squid_transport_errors',
'squid_code',
'squid_handling_opts',
'squid_object_types',
'squid_cache_events',
'squid_bytes',
'squid_duration',
'squid_clients',
'squid_clients_all'
]
CHARTS_WEB = {
'response_codes': {
'options': [None, 'Response Codes', 'requests/s', 'responses', 'web_log.response_codes', 'stacked'],
'lines': [
['2xx', None, 'incremental'],
['5xx', None, 'incremental'],
['3xx', None, 'incremental'],
['4xx', None, 'incremental'],
['1xx', None, 'incremental'],
['0xx', 'other', 'incremental'],
['unmatched', None, 'incremental']
]
},
'bandwidth': {
'options': [None, 'Bandwidth', 'kilobits/s', 'bandwidth', 'web_log.bandwidth', 'area'],
'lines': [
['resp_length', 'received', 'incremental', 8, 1000],
['bytes_sent', 'sent', 'incremental', -8, 1000]
]
},
'response_time': {
'options': [None, 'Processing Time', 'milliseconds', 'timings', 'web_log.response_time', 'area'],
'lines': [
['resp_time_min', 'min', 'incremental', 1, 1000],
['resp_time_max', 'max', 'incremental', 1, 1000],
['resp_time_avg', 'avg', 'incremental', 1, 1000]
]
},
'response_time_hist': {
'options': [None, 'Processing Time Histogram', 'requests/s', 'timings', 'web_log.response_time_hist', 'line'],
'lines': []
},
'response_time_upstream': {
'options': [None, 'Processing Time Upstream', 'milliseconds', 'timings',
'web_log.response_time_upstream', 'area'