Понякога журналите са последните неща, които се проверяват, когато нещата се объркат, но обикновено те са първите неща, които крещят за помощ, когато нещо се случи. Ръчното разглеждане на регистрационните файлове за проблеми помага, но защо да не използвате анализатори на регистрационни файлове за автоматично генериране на отчети, за да предоставите информация за базата данни, преди нещо да се обърка?
Анализаторът на регистрационни файлове на PostgreSQL „pgBadger“ е програма с отворен код „бърз отчет за анализ на регистрационни файлове на PostgreSQL“, написана на Perl, която взема изхода на журнала от работещ екземпляр на PostgreSQL и го обработва в HTML файл. Отчетът, който генерира, показва цялата информация, намерена в приятен и лесен за четене формат на отчет. Тези отчети могат да помогнат да се хвърли светлина върху грешките, случващи се в системата, поведението на контролните точки, поведението на вакуума, тенденциите и друга основна, но важна информация за PostgreSQL система.
Настройка за регистриране на PostgreSQL
За да използвате pgBadger ефективно, влизането в PostgreSQL трябва да бъде настроено, за да предостави на pgBadger възможно най-много информация. Няколко опции могат да бъдат настроени, за да позволят на системата на базата данни да регистрира полезна информация за pgBadger за генериране на полезни отчети. Пълната документация за конфигурацията на PostgreSQL може да бъде намерена на pgBadger github страницата, но основна информация е по-долу.
Когато се стартира, pgBadger ще обработва регистрационните файлове от PostgreSQL, независимо дали са syslog, stderr или csvlog, стига самите редове на регистрационни файлове да имат достатъчно информация в префикса.
Примерни стойности на log_line_prefix:
Ако log_destination =‘syslog’
log_line_prefix = 'user=%u,db=%d,app=%aclient=%h '
Ако log_destination =‘stderr’
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
Основни настройки за конфигурация, които да зададете в postgresql.conf:
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
log_error_verbosity = default
log_statement = off
lc_messages='C'
Log_min_duration_statement = (see below)
Една от по-полезните части на отчетите на pgBadger е отчетът за бавни заявки, който разчита на заявките за регистриране на базата данни, които надвишават стойността на log_min_duration_statement. Тази стойност е представена в милисекунди и всяка заявка, която завърши с време, по-голямо от това, ще бъде регистрирано и след това отчети, генерирани от pgBadger. Това е полезно за намиране и анализиране на заявки, които отнемат повече време от желаното.
Въпреки че задаване на тази стойност на 0 за регистриране на всички заявки ще осигури най-много информация, това може лесно да доведе до генериране на регистрационни файлове, които са твърде големи и ще повлияят на производителността на самата база данни поради постоянното писане на регистрационни файлове. По-разумната стойност няма да осигури перфектен брой заявки, но все пак ще фокусира отчетите върху бавно изпълняваните заявки като цяло. Ако заявките, които се изпълняват няколко минути, се считат за „бавни“, задаване на стойност на една минута би било добре. Ако заявките, изпълнявани за повече от няколко секунди, се считат за „бавни“, тогава задаване на стойност на нещо като 5 секунди също ще работи добре.
Генериране на регистрационни файлове
Генерирането на регистрационни файлове се извършва чрез командния ред с помощта на изпълнимия файл pgBadger. Има множество опции, но най-основната настройка е да предоставите префикса на регистрационния ред, който базата данни използва, регистрационния файл и изходния html файл.
./pgbadger --prefix '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h ' postgresql.log -o postgresql.html
[========================>] Parsed 560607407 bytes of 560607407 (100.00%), queries: 2929645, events: 5
За повече информация относно различните опции за pgBadger вижте документацията или изпълнете двоичния файл с входния параметър --help.
Разширено генериране на журнали
Тъй като генерирането на отчети за регистрационни файлове е просто изпълнение на командния ред, персонализираните скриптове и програми могат да бъдат настроени да генерират автоматично отчети, да се поставят на уеб сървъри, да се изпращат по имейл или да се архивират в дългосрочно съхранение. Разгледайте различните налични опции за генериране на отчети и бъдете креативни с автоматизиращите системи за генериране и доставка на отчети.
Преглед на регистрационните файлове
Прегледът на регистрационните файлове е мястото, където идва забавлението. Генерираният отчет вече може да се отвори в уеб браузър и да се прегледа.
Глобална статистика
Секцията за глобални статистики съдържа основна информация, която се намира в дневника на PostgreSQL, включително:
- Заявки:Броят намерени заявки, продължителност, брой нормализирани заявки и т.н.
- Събития:Общ брой събития, нормализирани събития и т.н.
- Прахосмукачки:Общият брой намерени автоматични прахосмукачки и автоматични анализи.
- Временни файлове:Общият брой намерени временни файлове, максимален размер и среден размер.
- Сесия:Общ брой сесии, пиково време на сесиите, обща продължителност на сесиите, средна продължителност на сесиите, средно намерени заявки за сесия, средна продължителност на заявките на сесия.
- Връзки:Общ брой връзки, пикови връзки и общ брой свързани бази данни.
Забележка: Резултатите, включващи заявки, брой заявки или продължителност на заявката, ще бъдат неточни със стойности на log_min_duration_statement по-големи от 0.
Пример:
pgBadger Global Stats ПримерВръзки
Страницата за връзки показва графики с подробна информация за връзката, намерена в регистрационните файлове. Докато log_connections и log_disconnections са включени, стойностите тук ще бъдат точни. Наличните диаграми са:
- Установени връзки:Показване на максимален, минимален и среден брой връзки във времето.
- Връзки за база данни:кръгова диаграма и изглед на таблица, показващи броя на връзките за всяка намерена база данни.
- Връзки на потребител:кръгова диаграма и табличен изглед, показващи броя на връзките за всеки намерен потребител.
- Връзки на хост:кръгова диаграма и табличен изглед, показващи броя на връзките за всеки намерен изходен хост.
Пример:
pgBadger Connections пример за кръгова диаграмаСесии
Страницата за сесии е подобна на страницата за връзки, но съдържа още информация, отнасяща се до самите сесии.
- Едновременни сесии:линейна диаграма, показваща броя на сесиите във времето.
- Хистограма на времената на сесиите:стълбовидна диаграма и таблица, показващи времената на сесиите.
- Сесии на база данни:кръгова диаграма и изглед на таблица, показващи броя на сесиите за всяка намерена база данни.
- Сесии на потребител:кръгова диаграма и табличен изглед, показващи броя на сесиите за всеки намерен потребител.
- Сесии на хост:кръгова диаграма и табличен изглед, показващи броя на сесиите за всеки намерен изходен хост.
- Сесии на приложение:Броят на свързаните сесии на приложение.
Контрольни точки
Страницата за контролни точки предоставя информация за процеса на контролния указател, включително броя на записаните буфери, WAL файлове и друга обща информация.
- Буфери на контролната точка:Линейна диаграма, показваща количеството буфери, записани от процеса на контролна точка във времето.
- WAL файлове за контролни точки:Линейна диаграма, показваща броя на WAL файловете, добавени, премахнати или рециклирани от контролния указател с течение на времето.
- Разстояние до контролно-пропускателния пункт:линейна диаграма, показваща разстоянието и оценката за контролните точки.
- Дейност на контролните точки:Таблица, показваща предишните четири точки от данни под формата на таблица.
Временни файлове
Страницата с временни файлове съдържа информация за временни файлове, които се създават, когато заявката свърши работа от work_mem и трябва да използва диска за сортиране или филтриране на резултатите, преди да ги върне на приложенията. Тези файлове се изтриват автоматично, когато заявката завърши и познаването на активността на временния файл помага на администратора да настрои параметъра work_mem.
- Размер на временните файлове:линейна диаграма, показваща пространството, използвано от временните файлове във времето.
- Брой временни файлове:линейна диаграма, показваща броя на временните файлове, използвани във времето.
- Дейност на временните файлове:Таблица, показваща информацията, предоставена в предишните диаграми, но под формата на таблица.
Прахосмукачки
Тази страница показва информация за ВАКУУМИ и АНАЛИЗИ, които се срещат в базата данни. Тази информация е полезна, за да разберете дали процесът на автоматично вакуумиране върши работата си достатъчно добре, или е затънал и се нуждае от повече ресурси.
- Разпределение на вакуумите/анализите:линейна диаграма, показваща ВАКУУМИ и АНАЛИЗИ във времето, както и информация в таблицата, която консумира най-много процесорна мощност на процесора.
- Анализ на таблица:кръгова диаграма и таблица, показващи таблиците с най-много анализи, което предполага, че тези таблици са в състояние на висока промяна.
- Вакууми на таблица:кръгова диаграма и таблица, показващи таблиците с най-много вакууми, което предполага, че тези таблици са в състояние на висока промяна.
- Отстранени кортежи на таблица:кръгова диаграма и таблица, показващи броя на кортежи и страници, премахнати при вакуумни процеси за таблици.
- Премахнати страници за таблица:Кръгова диаграма и таблица, показващи броя на страниците и кортежите, отстранени при вакуумни процеси за таблици.
- Автовакуумна активност:Таблица, показваща ВАКУУМИТЕ и АНАЛИЗИТЕ във времето на час.
Ключи
Страницата за заключване съдържа само няколко части от данни, но е полезна информация, за да знаете кога има процеси, които може да задържат други заявки за продължителни периоди от време.
- Заключване по типове
- Най-често чакащи заявки:Списък със заявки, за които е установено, че чакат, класирани от най-често до най-малко.
- Заявки, които са чакали най-много:Списък със заявки и колко време са чакали, подредени от най-дългата към най-кратката.
Запитвания
Страницата със заявки понякога е най-вълнуващата, тъй като показва информация за видовете заявки, които идват от приложенията и потребителите. Тази информация може да ви помогне да разберете повече за това какъв вид изхвърляне на база данни дадено приложение или потребител поставя в системата на базата данни, което може да помогне за бъдеща настройка. Както преди, точността на тези числа зависи от стойността на log_min_duration_statement, тъй като всяка стойност над 0 няма да регистрира заявки.
- Заявки по тип:кръгова диаграма и таблица, показващи броя на различните типове заявки, като INSERT, UPDATE, DELETE, SELECT и др.
- Заявки по база данни:кръгова диаграма и таблица, показващи броя на заявките, намерени на база данни.
- Заявки по приложение:кръгова диаграма и таблица, показващи броя на заявките, открити за приложение.
- Брой анулирани заявки:Информация за всички заявки, които са били анулирани.
Отгоре
Най-горната страница има информация за времето на заявки, най-бавните заявки като цяло, честотата на заявките и др. Конкретни проблемни заявки вероятно ще бъдат намерени тук:
- Хистограма на времената на заявки:Хистограма, представяща колко заявки попадат във всяка група от времеви интервали.
- Най-бавните отделни заявки:Списък с най-бавните намерени заявки, подреден по най-дългата към най-кратката.
- Отнемащи време заявки:Списък с нормализирани заявки и тяхната обща продължителност, подредени по най-голямо изразходвано време до най-малко.
- Най-честите заявки:Списък с нормализирани заявки и колко пъти са били изпълнени, подредени от най-малко към най-малко.
- Нормализирани най-бавни заявки:Списък с нормализирани заявки и тяхната средна продължителност, подредени от най-дългата към най-кратката.
Събития
Последната страница са събития, които съдържат информация за самите регистрационни файлове и всичко, което не е заявка, вакуум или контролна точка.
- Нива на регистрационни файлове:Различните нива на регистрационни файлове се появяват по ред, като КОНТЕКСТ, Дневник, ИЗЯВЛЕНИЕ, СЪВЕТИ, ПРЕДУПРЕЖДЕНИЯ и други.
- Разпределение на събитията:линейна графика на събитията във времето за ПАНИКА, ФАТАЛНО, ГРЕШКА и ПРЕДУПРЕЖДЕНИЕ.
- Най-често срещани грешки/събития:Списък на СЪБИТИЯ и тяхната честота, подредени от най-често срещаните към най-малкото.
Принос
Проектът pgBadger е безплатен и съществува под лиценза на PostgreSQL. В момента е добре поддържан и актуализиран, за да работи с по-нови версии на PostgreSQL, докато е разработен. Имате идеи за подобряване на pgBadger? Разклонете проекта и покажете на общността вашите подобрения.
За да изпратите грешки, посетете страницата с проблеми на github.