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

№ 8577 В разделах:
Programming
Sysadmin
от December 24th, 2017,
В подшивках: Python
На днях понадобилось красиво вывести статистику по логам nginx и тут пришел на помощь python с его горой всевозможных библиотечек и прочих рюшечек. Я использовал библиотеку terminaltables. Установить ее в отдельное окружение или в систему это на ваше усмотрение, ну а я предпочитаю котлеты отдельно, мухи отдельно.
Просто оставляю вам пример, который вы легко адаптируете под себя.
import csv
from terminaltables import AsciiTable
successCounter = 0
redirectCounter = 0
clientErrorCounter = 0
serverErrorCounter = 0
serverErrorCounter500 = 0
serverErrorCounter502 = 0
pathPrefix = './' #local
# pathPrefix = '/var/log/' #server
with open(pathPrefix+'nginx/http.access.log') as nginxLogFile:
logStringsIterable = csv.reader(nginxLogFile, delimiter=",", quotechar='"', lineterminator=";")
for logString in logStringsIterable:
# custom nginx log file:
# log_format compression '"$remote_addr","$time_local","$status","$request";';
# Position | Description
# 0 | IP address
# 1 | Time stamp
# 2 | Response code
# 3 | Request [type url protocol]
if '20' in logString[2]: successCounter += 1
if '30' in logString[2]: redirectCounter += 1
if '40' in logString[2]: clientErrorCounter += 1
if '500' in logString[2]: serverErrorCounter500 += 1
if '502' in logString[2]: serverErrorCounter502 += 1
if '50' in logString[2]: serverErrorCounter += 1
# summary
tableData = [
['HTTP codes', 'Type', 'Count'],
['20x', 'Success', "{:,}".format(successCounter)],
['30x', 'Redirection', "{:,}".format(redirectCounter)],
['40x', 'Client errors', "{:,}".format(clientErrorCounter)],
['500', 'Server errors', "{:,}".format(serverErrorCounter500)],
['502', 'Server errors', "{:,}".format(serverErrorCounter502)],
['50x', 'Server errors', "{:,}".format(serverErrorCounter)]
]
resultTable = AsciiTable(tableData)
resultTable.inner_heading_row_border = True
resultTable.outer_border = False
resultTable.inner_row_border = False
print(resultTable.table)
Fortune cookie: 'Tis a custom in Castellamare To fuck in the back of a lorry. The chassis and springs Are like woodwinds and strings In the midst of a musical soiree.
Leave a Reply