След като инфраструктурата на базата ви данни стартира и работи, ще трябва да следите какво се случва. Наблюдението е задължително, ако искате да сте сигурни, че всичко върви добре или ако може да се наложи да промените нещо.
За всяка технология на базата данни има няколко неща за наблюдение. Някои от тях са специфични за базата данни, доставчика или дори конкретната версия, която използвате.
В този блог ще разгледаме какво трябва да наблюдавате в PostgreSQL среда.
Какво да наблюдавате в PostgreSQL
Когато наблюдавате клъстер или възел на база данни, има две основни неща, които трябва да вземете предвид:операционната система и самата база данни. Ще трябва да дефинирате кои показатели ще наблюдавате от двете страни и как ще го направите. Трябва да наблюдавате метриката винаги в контекста на вашата система и трябва да търсите промени в модела на поведение.
В повечето случаи ще трябва да използвате няколко инструмента (тъй като е почти невъзможно да намерите такъв, който да покрива всички желани показатели.)
Имайте предвид, че когато един от вашите показатели е засегнат, това може да засегне и други, което прави отстраняването на проблема по-сложно. Наличието на добра система за наблюдение и предупреждение е важно, за да направите тази задача възможно най-проста.
Наблюдение на операционната система
Едно важно нещо (което е общо за всички машини за бази данни и дори за всички системи) е да наблюдава поведението на операционната система. Ето някои точки, които да проверите тук.
Използване на процесора
Прекомерният процент използване на процесора може да е проблем, ако не е обичайно поведение. В този случай е важно да се идентифицират процеса/процесите, които генерират този проблем. Ако проблемът е в процеса на база данни, ще трябва да проверите какво се случва в базата данни.
Използване на RAM памет или SWAP
Ако виждате висока стойност за този показател и нищо не се е променило във вашата система, вероятно трябва да проверите конфигурацията на базата данни. Параметри като shared_buffers и work_mem могат да повлияят пряко на това, тъй като определят количеството памет, което да може да се използва за базата данни PostgreSQL.
Използване на диск
Ненормалното увеличаване на използването на дисково пространство или прекомерната консумация на достъп до диска са важни неща, които трябва да наблюдавате, тъй като може да имате голям брой грешки, регистрирани в регистрационния файл на PostgreSQL или лоша конфигурация на кеша, които биха могли генерира важно потребление на достъп до диск, вместо да използва памет за обработка на заявките.
Средно зареждане
Това е свързано с трите точки, споменати по-горе. Високо средно натоварване може да бъде генерирано от прекомерно използване на процесора, RAM или диска.
Мрежа
Проблем с мрежата може да засегне всички системи, тъй като приложението не може да се свърже (или да свърже губещи пакети) към базата данни, така че това наистина е важен показател за наблюдение. Можете да наблюдавате забавянето или загубата на пакети, като основният проблем може да бъде насищане на мрежата, хардуерен проблем или просто лоша конфигурация на мрежата.
Наблюдение на PostgreSQL база данни
Наблюдението на вашата PostgreSQL база данни е важно не само, за да видите дали имате проблем, но и да знаете дали трябва да промените нещо, за да подобрите производителността на вашата база данни, това вероятно е едно от най-важните неща за наблюдение в база данни. Нека видим някои показатели, които са важни за това.
Наблюдение на заявки
По подразбиране PostgreSQL е конфигуриран с оглед на съвместимостта и стабилността, така че трябва да знаете своите заявки и неговия модел и да конфигурирате базите си в зависимост от трафика, който имате. Тук можете да използвате командата EXPLAIN, за да проверите плана на заявката за конкретна заявка, както и да наблюдавате количеството на SELECT, INSERT, UPDATE или DELETE на всеки възел. Ако имате дълга заявка или голям брой заявки, изпълнявани едновременно, това може да е проблем за всички системи.
Наблюдение на активни сесии
Трябва също да наблюдавате броя на активните сесии. Ако сте близо до лимита, трябва да проверите дали нещо не е наред или просто трябва да увеличите стойността на max_connections. Разликата в броя може да бъде увеличаване или намаляване на връзките. Лошото използване на пул на връзки, проблем със заключване или мрежа са най-честите проблеми, свързани с броя на връзките.
Заключване на базата данни
Ако имате заявка, която чака друга заявка, трябва да проверите дали тази друга заявка е нормален процес или нещо ново. В някои случаи, ако някой прави актуализация на голяма маса, например, това действие може да повлияе на нормалното поведение на вашата база данни, генерирайки голям брой заключвания.
Наблюдение на репликацията
Ключовите показатели за наблюдение за репликация са изоставането и състоянието на репликация. Най-честите проблеми са проблеми с мрежата, проблеми с хардуерните ресурси или проблеми с оразмеряването. Ако сте изправени пред проблем с репликацията, ще трябва да знаете това възможно най-скоро, тъй като ще трябва да го поправите, за да осигурите среда с висока наличност.
Наблюдение на резервните копия
Избягването на загуба на данни е една от основните задачи на DBA, така че не е нужно само да правите резервно копие, трябва да знаете дали архивирането е завършено и дали е използваемо. Обикновено тази последна точка не се взема предвид, но това е може би най-важната проверка в процеса на архивиране.
Наблюдение на регистрационните файлове на базата данни
Трябва да наблюдавате регистрационния файл на вашата база данни за грешки като FATAL или безизходица, или дори за често срещани грешки като проблеми с удостоверяването или продължителни заявки. Повечето от грешките са записани в регистрационния файл с подробна полезна информация за отстраняването им.
Влияние на наблюдението върху производителността на базата данни PostgreSQL
Макар че наблюдението е задължително, обикновено не е безплатно. Винаги има цена за производителността на базата данни, в зависимост от това колко наблюдавате, така че трябва да избягвате да наблюдавате неща, които няма да използвате.
Като цяло има два начина за наблюдение на вашите бази данни, от регистрационните файлове или от страната на базата данни чрез заявка.
В случай на регистрационни файлове, за да можете да ги използвате, трябва да имате високо ниво на регистриране, което генерира висок достъп до диск и може да повлияе на производителността на вашата база данни.
За режима на заявка всяка връзка с базата данни използва ресурси, така че в зависимост от активността на вашата база данни и присвоените ресурси, това може да повлияе и на производителността.
Инструменти за наблюдение на PostgreSQL
Има няколко опции за инструменти за наблюдение на вашата база данни. Това може да бъде вграден PostgreSQL инструмент, като разширения или някакъв външен инструмент. Нека видим някои примери за тези инструменти.
Разширения
- Pg_stat_statements :Това разширение ще ви помогне да разберете профила на заявката на вашата база данни. Той проследява всички заявки, които се изпълняват, и съхранява много полезна информация в таблица, наречена pg_stat_statements. Чрез заявка към тази таблица можете да получите какви заявки се изпълняват в системата, колко пъти са се изпълнявали и колко време са изразходвали, наред с друга информация.
- Pgbadger :Това е софтуер, който извършва анализ на регистрационните файлове на PostgreSQL и ги показва в HTML файл. Помага ви да разберете поведението на вашата база данни и да определите кои заявки трябва да бъдат оптимизирани.
- Pgstattuple :Може да генерира статистически данни за таблици и индекси, показващи колко пространство, използвано от всяка таблица и индекс, се консумира от живи кортежи, изтрити кортежи или колко неизползвано пространство е налично във всяка релация.
- Pg_buffercache :С това можете да проверите какво се случва в споделения буферен кеш в реално време, показвайки колко страници в момента се съхраняват в кеша.
Инструменти за външен мониторинг
- ClusterControl :Това е система за управление и наблюдение, която помага за внедряване, управление, наблюдение и мащабиране на вашите бази данни от приятелски интерфейс. ClusterControl поддържа най-добрите технологии за бази данни с отворен код и можете да автоматизирате много от задачите на базата данни, които трябва да изпълнявате редовно, като добавяне и мащабиране на нови възли, стартиране на архивиране и възстановяване и др.
- Нагиос :Това е система с отворен код и приложение за наблюдение на мрежата. Той наблюдава хостове или услуги и управлява сигнали за различни състояния. С този инструмент можете да наблюдавате мрежови услуги, хост ресурси и други. За наблюдение на PostgreSQL можете да използвате някакъв плъгин или да създадете свой собствен скрипт, за да проверите вашата база данни.
- Zabbix :Това е софтуер, който може да наблюдава както мрежи, така и сървъри. Той използва гъвкав механизъм за уведомяване, който позволява на потребителите да конфигурират сигнали по имейл. Той също така предлага отчети и визуализация на данни въз основа на съхранените данни. Всички отчети и статистически данни на Zabbix, както и параметри за конфигурация, се осъществяват чрез уеб интерфейс.
Табла за управление
Видимостта е полезна за бързо откриване на проблеми. Определено е по-отнемаща време задача да четете изход на команда, отколкото просто да гледате графика. Така че използването на табло за управление може да бъде разликата между откриването на проблем сега или в следващите 15 минути, най-сигурно, че времето може да бъде наистина важно за компанията. За тази задача инструменти като PMM или Vividcortex, наред с други, биха могли да бъдат ключът към добавяне на видимост към вашата система за наблюдение на база данни.
Наблюдение и управление на Percona (PMM): Това е платформа с отворен код за управление и наблюдение на ефективността на вашата база данни. Той предоставя задълбочен анализ, базиран на време за сървърите MySQL, MariaDB, MongoDB и PostgreSQL, за да гарантира, че вашите данни работят възможно най-ефективно.
VividCortex: Това е хоствана в облак платформа, която осигурява задълбочен мониторинг на производителността на базата данни. Той предлага пълна видимост във водещи бази данни с отворен код, включително MySQL, PostgreSQL, AWS Aurora, MongoDB и Redis.
Сигнал
Простото наблюдение на система няма смисъл, ако не получавате известие за всеки проблем. Без система за предупреждение трябва да отидете до инструмента за наблюдение, за да видите дали всичко е наред и е възможно да имате голям проблем от преди много часове. Тази задача за известяване може да бъде извършена чрез използване на имейл сигнали, текстови сигнали или други интегрирани инструменти като slack.
Наистина е трудно да се намерят някои инструменти за наблюдение на всички необходими показатели за PostgreSQL, като цяло ще трябва да използвате повече от един и дори ще трябва да се направят някои скриптове. Един от начините за централизиране на задачата за наблюдение и предупреждение е чрез използване на ClusterControl, който ви предоставя функции като управление на архивиране, наблюдение и предупреждение, внедряване и мащабиране, автоматично възстановяване и по-важни функции, които да ви помогнат да управлявате вашите бази данни. Всички тези функции в една и съща система.
Наблюдение на вашата PostgreSQL база данни с ClusterControl
ClusterControl ви позволява да наблюдавате сървърите си в реално време. Той има предварително дефиниран набор от табла за управление за вас, за да анализирате някои от най-често срещаните показатели.
Позволява ви да персонализирате наличните графики в клъстера и можете позволи на базирания на агент мониторинг да генерира по-подробни табла за управление.
Можете също да създавате сигнали, които ви информират за събития във вашия клъстер, или интегрирайте с различни услуги като PagerDuty или Slack.
Освен това можете да проверите секцията за монитор на заявки, където можете да намерите топ заявки, изпълняваните заявки, отклонения на заявките и статистика на заявките.
С тези функции можете да видите как върви вашата база данни PostgreSQL.
За управление на архивиране ClusterControl го централизира, за да защитава, защитава и възстановява вашите данни, а с функцията за архивиране за проверка можете да потвърдите дали архивирането е готово.
Това задание за архивиране на проверка ще възстанови архива в отделен самостоятелен хост, така че можете да се уверите, че архивирането работи.
Мониторинг с командния ред на ClusterControl
За скриптове и автоматизиране на задачи или дори ако предпочитате просто командния ред, ClusterControl разполага с инструмента s9s. Това е инструмент от командния ред за управление на вашия клъстер от база данни.
Списък с клъстери
Списък с възли
Можете да изпълнявате всички задачи (и дори повече) от потребителския интерфейс на ClusterControl , и можете да интегрирате тази функция с някои външни инструменти като slack, за да я управлявате от там.
Заключение
В този блог споменахме някои важни показатели за наблюдение във вашата PostgreSQL среда и някои инструменти, които да улеснят живота ви, като контролирате системите си. Можете също да видите как да използвате ClusterControl за тази задача.
Както можете да видите, наблюдението е абсолютно необходимо и най-добрият начин за това как да го направите зависи от инфраструктурата и самата система. Трябва да постигнете баланс между това, което трябва да наблюдавате и как това се отразява на производителността на вашата база данни.