№ 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: Spam del giorno: E`bay Membro
Leave a Reply