Kaptain.
Telegram /
LinkedIn /
Email /
GIT /
RSS /
GPG /
Заказ печатных плат

№ 8580 В разделах:
Programming
Sysadmin
от December 24th, 2017,
В подшивках: Nginx, Python
Один из проектов, который я веду вырос довольно геморройным и требовательным к производительности. Программа должна прочитать специально разогретый и смазанный лог нгинкса, извлечь всю необходимую мне информацию и отправить полученные данные в zabbix чтобы было видно здоровье фермы. В эту же программу вкорячил и вывод полной статистики по логу, а не только по конкретным кодам + добавил с какого времени начинать и заканчивать обработку. Больше всего боли приносят конвертации даты и времени при чтении лога. 6 секунд без указания времени против 40 секунд с точкой отсчета.
Пример обрабатываемого лога:
"172.31.30.163","23/Dec/2017:15:38:08 +0000","200","GET /grabit/script.php HTTP/1.1"; "172.31.30.163","23/Dec/2017:15:38:08 +0000","200","GET /grabit/script.php HTTP/1.1"; "172.31.30.163","23/Dec/2017:15:38:08 +0000","200","GET /grabit/script-min.js HTTP/1.1"; "172.31.30.163","23/Dec/2017:15:38:08 +0000","302","GET /grabit/pixel.php HTTP/1.1"; "172.31.30.163","23/Dec/2017:15:38:08 +0000","200","GET /grabit/script.php HTTP/1.1"; "172.31.9.241","23/Dec/2017:15:38:08 +0000","200","GET /grabit/script.php HTTP/1.1"; "172.31.9.241","23/Dec/2017:15:38:08 +0000","200","GET /grabit/script-min.js HTTP/1.1";
Пример вывода:
$ python ./nginx-analyzer.py -h
usage: nginx-analyzer.py [-h] --log logfile [--code HTTP_CODE] [--time]
[--totime] [--summ]
Get statistics from nginx special format log file
optional arguments:
-h, --help show this help message and exit
--log logfile Of course, you need to parse something
--code HTTP_CODE Show only response code
--time Start counting from timestamp DD-MM-YYYY HH:MM:SS
--totime Stop counting from timestamp DD-MM-YYYY HH:MM:SS
--summ Display fancy summary
$ time python ./nginx-analyzer.py --log nginx/http.access.log --summ --time "23-12-2017 15:37:00"
HTTP codes | Type | Count
------------+---------------+-----------
All | | 3,593,692
20x | Success | 3,188,176
30x | Redirection | 395,021
40x | Client errors | 86
500 | Server errors | 5,855
502 | Server errors | 56
50x | Server errors | 5,911
real 0m39,535s
user 0m39,398s
sys 0m0,136s
$ time python ./nginx-analyzer.py --log nginx/http.access.log --code 404
83
real 0m5,790s
user 0m5,702s
sys 0m0,088s
Fortune cookie: Of course, you UNDERSTAND about the PLAIDS in the SPIN CYCLE --
Leave a Reply