{"id":486902,"date":"2026-07-10T11:46:56","date_gmt":"2026-07-10T11:46:56","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=486902"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=486902","title":{"rendered":"\u041a\u0442\u043e \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u043b \u043f\u043b\u0430\u0442\u0435\u0436\u0438, \u0438\u043b\u0438 \u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0430 \u043d\u0430 \u0430\u0443\u0434\u0438\u0442\u0435 \u0432 Postgres Pro Enterprise"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0421\u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u0437\u0430 \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442, \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u0418\u0411 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043a\u0442\u043e \u0447\u0438\u0442\u0430\u043b \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439, \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u043b\u00bb? \u0415\u0441\u043b\u0438 \u0432\u0430\u0448 PostgreSQL \u043d\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u2014 \u043d\u0435\u0442. \u0418 \u0434\u0435\u043b\u043e \u043d\u0435 \u0432 \u043b\u0435\u043d\u0438 \u0430\u0434\u043c\u0438\u043d\u0430, \u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e \u0430\u0443\u0434\u0438\u0442\u0430 \u0432 PostgreSQL \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a, \u0438 \u043a\u0430\u043a \u044d\u0442\u0443 \u0434\u044b\u0440\u0443 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 Postgres Pro Enterprise.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/45d\/77c\/ad7\/45d77cad713cd5e645565a0b28601a8b.png\" width=\"3250\" height=\"1834\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/45d\/77c\/ad7\/45d77cad713cd5e645565a0b28601a8b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/45d\/77c\/ad7\/45d77cad713cd5e645565a0b28601a8b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h2>\u0417\u0430\u0432\u044f\u0437\u043a\u0430, \u0438\u043b\u0438 \u0418\u043d\u0441\u0430\u0439\u0434\u0435\u0440 \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u043b \u043f\u043b\u0430\u0442\u0435\u0436\u0438<\/h2>\n<p>\u041f\u044f\u0442\u043d\u0438\u0446\u0430, \u0432\u0435\u0447\u0435\u0440. \u0412 \u043e\u0431\u0449\u0438\u0439 \u0447\u0430\u0442 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435: <\/p>\n<blockquote>\n<p>\u043a\u0445\u0435-\u043a\u0445\u0435, \u0432 \u043e\u0431\u0449\u0435\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0430\u043d\u043e\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0430\u0447\u043e\u043a \u0447\u0442\u0435\u043d\u0438\u044f \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439&#8230; \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0430\u0443\u0434\u0438\u0442, \u043d\u0435\u0442 \u043b\u0438 \u0442\u0430\u043c \u0443\u0442\u0435\u0447\u043a\u0438. \u041d\u0430\u0434\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0442\u043e, \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0447\u043d\u043e \u0441\u0442\u0440\u043e\u043a \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043e.<\/p>\n<\/blockquote>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u0439 \u0438 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 PostgreSQL, \u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u044b, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u0435. \u0418 \u0432\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443.<\/p>\n<h3>\u0411\u043e\u043b\u044c \u0430\u0443\u0434\u0438\u0442\u0430 \u0432 PostgreSQL<\/h3>\n<p>\u0412 \u0447\u0438\u0441\u0442\u043e\u043c PostgreSQL \u0430\u0443\u0434\u0438\u0442\u0430 \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0435\u0442. \u041d\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u0443\u0441\u043e\u0447\u043a\u0438, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u0430\u0443\u0434\u0438\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>log_statement = all \u2014 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u043e\u0431\u0449\u0438\u0439 \u043b\u043e\u0433 \u0421\u0423\u0411\u0414. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u0430\u0443\u0434\u0438\u0442, \u0430 \u0441\u0432\u0430\u043b\u043a\u0430 \u2014 \u0432\u043f\u0435\u0440\u0435\u043c\u0435\u0448\u043a\u0443 \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0431\u0435\u0437 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u00ab\u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438\u00bb, \u0431\u0435\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0431\u0435\u0437 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430 \u00ab\u0443\u0441\u043f\u0435\u0445\/\u043e\u0442\u043a\u0430\u0437\u00bb. \u041d\u0430\u0439\u0442\u0438 \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435 \u043e\u0434\u0438\u043d SELECT \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0440\u043e\u043b\u044c\u044e \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e IP, \u2014 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u0432\u0435\u0441\u0442 \u0441 grep.<\/p>\n<\/li>\n<li>\n<p>log_line_prefix \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043b\u043e\u0433\u0430: \u0441\u044e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, IP \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (%h), \u0438\u043c\u044f \u0440\u043e\u043b\u0438, \u0431\u0430\u0437\u044b, PID \u0438 \u043c\u043d\u043e\u0433\u043e \u0447\u0435\u0433\u043e \u0435\u0449\u0451. \u041d\u043e \u044d\u0442\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u043a \u0442\u0435\u043c \u0436\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u0441\u0442\u0440\u043e\u043a\u0430\u043c, \u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u0449\u0438 \u0442\u0430\u043c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>pgaudit \u2014 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e: \u0443\u043c\u0435\u0435\u0442 \u0438 \u0441\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0439 \u0430\u0443\u0434\u0438\u0442 \u043f\u043e \u043a\u043b\u0430\u0441\u0441\u0430\u043c \u043a\u043e\u043c\u0430\u043d\u0434 (READ\/WRITE\/DDL\/ROLE\/\u2026), \u0438 \u043f\u043e\u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0439 \u0430\u0443\u0434\u0438\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b (\u0447\u0435\u0440\u0435\u0437 \u0440\u043e\u043b\u044c \u0438 GRANT), \u0438 \u0434\u0430\u0436\u0435 \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0440\u043e\u043a (pgaudit.log_rows). \u041d\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0444\u043e\u0440\u043c\u0435: \u0430\u0443\u0434\u0438\u0442-\u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u043d \u043f\u0438\u0448\u0435\u0442 \u0432 \u043e\u0431\u0449\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u043b\u043e\u0433 \u0432\u043f\u0435\u0440\u0435\u043c\u0435\u0448\u043a\u0443 \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0441\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0434\u0440\u0435\u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 log_line_prefix, \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0440\u043e\u043a \u0438 \u043f\u0440\u043e\u0447\u0435\u0435 \u2014 \u0434\u043e\u0431\u0430\u0432\u043a\u0430\u043c\u0438 \u043a \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0434\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u044c. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0435\u0434\u0438\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u00ab\u043e\u0434\u043d\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u2014 \u0432\u0441\u0435 \u043f\u043e\u043b\u044f\u00bb, \u043d\u0435\u0442 \u0430\u0443\u0434\u0438\u0442\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438\/\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u0438 \u043e\u0442\u043a\u0430\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 (permission denied) \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0430\u0443\u0434\u0438\u0442-\u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c \u043d\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f. \u0410\u0445 \u0434\u0430 \u0438 \u0432\u0438\u0448\u0435\u043d\u043a\u0430 \u043d\u0430 \u0442\u043e\u0440\u0442\u0435: It is not possible to reliably audit superusers with pgAudit (\u0441).<\/p>\n<\/li>\n<li>\n<p>\u0422\u0440\u0438\u0433\u0433\u0435\u0440\u044b \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u2014 \u0443\u0432\u044b, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e DML \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0435\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445, \u0433\u0434\u0435 \u0438\u0445 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0432\u0435\u0441\u0438\u043b\u0438. SELECT-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u043c \u043d\u0435 \u043f\u043e\u0439\u043c\u0430\u0442\u044c \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 (\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u044d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0443\u0442\u0435\u0447\u043a\u0438).<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435? \u041d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a \u0418\u0411 \u00ab\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0430\u0443\u0434\u0438\u0442, \u043d\u0435\u0442 \u043b\u0438 \u0442\u0430\u043c \u0443\u0442\u0435\u0447\u043a\u0438\u00bb \u0441\u043e \u0448\u0442\u0430\u0442\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 PostgreSQL \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0430 \u0441 \u0442\u0435\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0447\u0442\u043e \u0435\u0441\u0442\u044c, \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e. \u0427\u0442\u0435\u043d\u0438\u044f \u043d\u0435 \u043b\u043e\u0433\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438\u0446\u0435\u043b\u044c\u043d\u043e, \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0438\u043b\u0438 \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u0430\u043d\u0430 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043b\u043e\u0433\u0430, \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441\u043e\u0431\u044b\u0442\u0438\u0439.<\/p>\n<p>\u0412 Postgres Pro Enterprise \u044d\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c\u00a0<code>pg_proaudit<\/code>.<\/p>\n<h3>\u041e\u00a0pg_proaudit\u00a0\u0438\u00a0pgpro-otel-collector<\/h3>\n<p>pg_proaudit\u00a0\u2014 \u044d\u0442\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0432 Postgres Pro Enterprise \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u0443\u0434\u0438\u0442\u0430: \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 (\u0447\u0442\u043e \u0438 \u0434\u043b\u044f \u043a\u043e\u0433\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c), \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 CSV-\u0436\u0443\u0440\u043d\u0430\u043b \u0441 \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 (\u0440\u043e\u043b\u044c, IP \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0442\u0438\u043f \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043e\u0431\u044a\u0435\u043a\u0442, \u0441\u0442\u0430\u0442\u0443\u0441, \u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044b\u0445 \u0441\u0442\u0440\u043e\u043a), \u043f\u0440\u0438\u0446\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\/\u0440\u043e\u043b\u044f\u043c \u0438 \u0430\u0443\u0434\u0438\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u2014 \u0432<a href=\"https:\/\/postgrespro.ru\/docs\/enterprise\/current\/pg-proaudit\">\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 pg_proaudit<\/a>\u00a0\u0438 \u0432 \u043e\u0431\u0437\u043e\u0440\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435:<a href=\"https:\/\/habr.com\/ru\/companies\/postgrespro\/articles\/910494\">\u00a0\u00abpg_proaudit: \u0430\u0443\u0434\u0438\u0442 \u0432 Postgres Pro Enterprise\u00bb<\/a>.<\/p>\n<p>pgpro-otel-collector\u00a0\u2014 \u044d\u0442\u043e\u00a0\u0441\u0431\u043e\u0440\u043a\u0430\u00a0OpenTelemetry Collector \u043e\u0442 Postgres Pro, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u044c Postgres. \u0423 otel-\u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440\u0430 \u0440\u0435\u043f\u0443\u0442\u0430\u0446\u0438\u044f \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043c\u0435\u0442\u0440\u0438\u043a: \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0421\u0423\u0411\u0414, \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f, \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u0432 \u2014 \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u0435\u0440\u043d\u043e, \u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043b\u0438\u0448\u044c \u0447\u0430\u0441\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u044b.<\/p>\n<p>OpenTelemetry Collector \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u2014 \u044d\u0442\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0434\u043b\u044f \u0442\u0440\u0451\u0445 \u0442\u0438\u043f\u043e\u0432 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432: \u043c\u0435\u0442\u0440\u0438\u043a\u0438,\u00a0\u043b\u043e\u0433\u0438\u00a0\u0438 \u0442\u0440\u0435\u0439\u0441\u044b. \u041e\u0434\u0438\u043d \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a, \u0447\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u0443\u043c\u0435\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438 \u043b\u043e\u0433\u0438: \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a\u00a0file_log\u00a0\u0447\u0438\u0442\u0430\u0435\u0442 \u0444\u0430\u0439\u043b\u044b, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u0430 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0451\u0440\u00a0otlp_http\u00a0(\u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439) \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u0422\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440 \u2014 \u044d\u0442\u043e \u0435\u0449\u0451 \u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043b\u043e\u0433\u043e\u0432, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u0440\u0438\u043a.<\/p>\n<p>\u041d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u043e\u0433\u0438 \u0421\u0423\u0411\u0414 \u044d\u0442\u043e \u0441\u043a\u0443\u0447\u043d\u043e: \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0443\u043c\u0435\u0435\u0442 \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u0430\u0433\u0435\u043d\u0442\u043e\u0432. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435, \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043b\u043e\u0433 \u043a\u0430\u043a \u043d\u0430\u00a0<strong>\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438<\/strong>: \u043a\u0442\u043e, \u0447\u0442\u043e, \u043d\u0430\u0434 \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430, \u0443\u0441\u043f\u0435\u0445 \u0438\u043b\u0438 \u043e\u0442\u043a\u0430\u0437, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a. \u0420\u043e\u0432\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u0434\u0430\u0451\u0442\u00a0pg_proaudit, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0441\u0442\u044b\u043a\u0435 \u00ab\u0430\u0443\u0434\u0438\u0442 Enterprise + \u0441\u0431\u043e\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440\u043e\u043c\u00bb \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0440\u0430\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u0432\u0432\u044f\u0437\u0430\u043b\u0441\u044f \u0432 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 (\u0434\u0430 \u0435\u0449\u0451 \u0438 \u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439!).<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e otel-\u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u0430\u043a \u043b\u043e\u0433-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440: \u0447\u0438\u0442\u0430\u0435\u0442 CSV-\u0436\u0443\u0440\u043d\u0430\u043b \u0430\u0443\u0434\u0438\u0442\u0430, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 20 \u043f\u043e\u043b\u0435\u0439 \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0441 \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u043f\u043e\u0438\u0441\u043a\u043e\u043c.<\/p>\n<h3>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u0431\u043e\u0440\u0430<\/h3>\n<p>\u0416\u0443\u0440\u043d\u0430\u043b \u0430\u0443\u0434\u0438\u0442\u0430 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u2014 \u044d\u0442\u043e CSV-\u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u044b, \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0441 \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u043f\u043e\u0438\u0441\u043a\u043e\u043c. \u041d\u0430\u0448 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432:<\/p>\n<ul>\n<li>\n<p><code>pg_proaudit<\/code>\u00a0\u043f\u0438\u0448\u0435\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0442 PGDATA, \u2014\u00a0<code>\/var\/log\/pg_proaudit\/<\/code>, \u0444\u0430\u0439\u043b\u044b \u2014\u00a0<code>pg_proaudit-*.log<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>pgpro-otel-collector<\/code>\u00a0\u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0445 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a\u043e\u043c\u00a0<code>file_log<\/code>, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 CSV \u0432 20 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439, \u043d\u0430\u0432\u0435\u0448\u0438\u0432\u0430\u0435\u0442 resource-\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0432 VictoriaLogs \u043f\u043e OTLP HTTP.<\/p>\n<\/li>\n<li>\n<p><code>Victorialogs<\/code>\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c, \u0432 \u043d\u0435\u043c \u043c\u044b \u0438 \u0432\u0435\u0434\u0451\u043c \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435\u00a0<strong>LogsQL<\/strong>.<\/p>\n<\/li>\n<li>\n<p><code>Grafana<\/code>\u00a0\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u00a0\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0432 \u0432\u0438\u0434\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0447\u0443\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440.<\/p>\n<h3>\u041f\u043e\u0448\u0430\u0433\u043e\u0432\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/h3>\n<p>\u0418\u0434\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f PostgreSQL \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0430\u0443\u0434\u0438\u0442\u0430, \u0437\u0430\u0442\u0435\u043c otel-\u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440 \u2014 \u0441\u0431\u043e\u0440 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0430\u0443\u0434\u0438\u0442-\u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 VictoriaLogs \u0438 Grafana \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0451\u043c \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<h3>1. GUC-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b<\/h3>\n<p><code>pg_proaudit<\/code>\u00a0\u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437\u00a0<code>shared_preload_libraries<\/code>, \u0436\u0443\u0440\u043d\u0430\u043b \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 CSV \u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u043f\u043e\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:<\/p>\n<pre><code class=\"elixir\"># \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u0430\u0443\u0434\u0438\u0442\u0430 pg_proaudit: CSV (\u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 csvlog\/ceflog\/syslog\/cefsyslog). \u0421\u0430\u043c 20-\u043f\u043e\u043b\u044c\u043d\u044b\u0439 \u0430\u0443\u0434\u0438\u0442-CSV \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 pg_proaudit, \u0430 \u043d\u0435 PostgreSQL-csvlog.pg_proaudit.log_destination = 'csvlog'# \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0430\u0443\u0434\u0438\u0442\u0430pg_proaudit.log_directory = '\/var\/log\/pg_proaudit'# \u0448\u0430\u0431\u043b\u043e\u043d \u0444\u0430\u0439\u043b\u043e\u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0430\u0443\u0434\u0438\u0442\u0430 pg_proaudit.log_filename = 'pg_proaudit-%Y-%m-%d_%H%M%S.log'# \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043f\u043e\u043b\u0435 query_textpg_proaudit.log_command_text = on# \u043f\u0438\u0441\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u0432 \u043f\u043e\u043b\u0435 rows \u2014 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0434\u0435\u0442\u0435\u043a\u0442\u0430 \u044d\u043a\u0441\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438pg_proaudit.log_rows = on# \u0430\u0443\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443pg_proaudit.log_catalog_access = on# \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b\u044b \u0436\u0443\u0440\u043d\u0430\u043b\u0430: \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446+\u0433\u0440\u0443\u043f\u043f\u0430 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435, \u043c\u0438\u0440\u0443 \u2014 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043epg_proaudit.log_file_mode = 0640<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>log_rows = on<\/code>\u00a0\u2014 \u044d\u0442\u043e \u0442\u043e, \u0447\u0435\u0433\u043e \u043d\u0435\u0442 \u0432 \u0448\u0442\u0430\u0442\u043d\u043e\u043c PostgreSQL \u0438 \u0447\u0442\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u043b\u0438. \u041f\u043e\u00a0<code>log_file_mode = 0640<\/code>\u00a0\u043f\u0440\u043e\u043b\u0435\u0433\u0430\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430: \u043a \u0436\u0443\u0440\u043d\u0430\u043b\u0443 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d otel-\u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440. \u0418 \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 postgres \u043b\u0438\u0431\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0435\u0433\u043e \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 postgres. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0438 \u0433\u0440\u0443\u043f\u043f\u043e\u0439, \u043e\u0442\u0441\u044e\u0434\u0430 \u0438 \u043f\u0440\u0430\u0432\u0430 0640.<\/p>\n<h3>2. \u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0430\u0443\u0434\u0438\u0442\u0430<\/h3>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u044f\u0432\u043d\u043e (\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430, \u043d\u043e extension \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c), \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0441 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439:<\/p>\n<pre><code>pg_proaudit_set_rule(db_name, event_type, object_type, object_name, role_name [, comment])<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0441\u0442\u0435\u043d\u0434\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430\u00a0\u0432\u044b\u0431\u043e\u0440\u043e\u0447\u043d\u0430\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u043f\u043e\u0434\u0440\u044f\u0434 \u0434\u043e\u0440\u043e\u0433\u043e (\u043f\u043e\u0434\u043d\u0438\u043c\u0438\u0442\u0435 \u0440\u0443\u043a\u0443 \u0442\u0435, \u043a\u0442\u043e \u043b\u044e\u0431\u0438\u0442 capacity planning \u0441 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u043e\u043c \u0432 2-5 \u043b\u0435\u0442) \u2014 \u0438 \u043f\u043e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u0438 \u043f\u043e \u043e\u0431\u044a\u0451\u043c\u0443 \u0436\u0443\u0440\u043d\u0430\u043b\u0430:<\/p>\n<pre><code class=\"sql\">CREATE EXTENSION IF NOT EXISTS pg_proaudit;-- DML \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 (\u0412\u0410\u0416\u041d\u041e: object_name \u041e\u0411\u042f\u0417\u0410\u041d \u0431\u044b\u0442\u044c schema-qualified)SELECT pg_proaudit_set_rule(current_database(), 'ALL_DML', 'TABLE', 'public.payments', NULL);-- \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e: \u043d\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 DDL, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u043e\u043b\u044f\u043c\u0438, \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044fSELECT pg_proaudit_set_rule(current_database(), 'ALL_DDL_NONTEMP', NULL, NULL, NULL);SELECT pg_proaudit_set_rule(current_database(), 'ALL_ROLE',        NULL, NULL, NULL);SELECT pg_proaudit_set_rule(current_database(), 'AUTHENTICATE',    NULL, NULL, NULL);SELECT pg_proaudit_set_rule(current_database(), 'DISCONNECT',      NULL, NULL, NULL);-- \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u0430\u0443\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 DML-\u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043c\u0430\u0442\u0447\u0438\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430.-- \u041f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0435 \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0440\u043e\u043b\u0438 insider, \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0451 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a pg_catalog \u0432\u0438\u0434\u0438\u043c\u044b\u043c\u0438,-- \u041d\u0415 \u0437\u0430\u0448\u0443\u043c\u043b\u044f\u044f \u0436\u0443\u0440\u043d\u0430\u043b \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u043c\u0438 \u0447\u0442\u0435\u043d\u0438\u044f\u043c\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u043c\u0438 \u0440\u043e\u043b\u044f\u043c\u0438.SELECT pg_proaudit_set_rule(current_database(), 'ALL_DML', NULL, NULL, 'insider');-- \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430SELECT pg_proaudit_save();SELECT pg_proaudit_reload();<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0443 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043f\u043e\u0442\u043a\u043d\u0443\u0442\u044c\u0441\u044f:\u00a0<code><strong>object_name<\/strong><\/code><strong>\u00a0\u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c schema-qualified.<\/strong>\u00a0\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0430\u00a0<code>payments<\/code>\u00a0(\u0431\u0435\u0437 \u0441\u0445\u0435\u043c\u044b) \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f, \u043d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u043c\u0430\u0442\u0447\u0438\u0442\u0441\u044f \u2014 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 DML \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u0422\u043e\u043b\u044c\u043a\u043e\u00a0<code>public.payments<\/code>.<\/p>\n<h3>3. \u041a\u043e\u043d\u0444\u0438\u0433 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440\u0430<\/h3>\n<p>\u041a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440 \u0447\u0438\u0442\u0430\u0435\u0442 \u0436\u0443\u0440\u043d\u0430\u043b\u044b \u0440\u0435\u0441\u0438\u0432\u0435\u0440\u043e\u043c\u00a0<code>file_log<\/code>, \u043f\u0430\u0440\u0441\u0438\u0442 20 \u043f\u043e\u043b\u0435\u0439 \u0438 \u0448\u043b\u0451\u0442 \u0432 VictoriaLogs \u0447\u0435\u0440\u0435\u0437 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0451\u0440\u00a0<code>otlp_http<\/code>:<\/p>\n<pre><code class=\"yaml\">receivers:  file_log:    # \u043c\u0430\u0441\u043a\u0430 (\u043d\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0438\u043c\u044f) \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u043e\u0442\u0430\u0446\u0438\u044e \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 pg_proaudit    include: [ \/var\/log\/pg_proaudit\/*.log ]    # \u0447\u0438\u0442\u0430\u0442\u044c \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u2014 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0434\u043e \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440\u0430, \u043d\u0435 \u0442\u0435\u0440\u044f\u044e\u0442\u0441\u044f    start_at: beginning    multiline:      line_start_pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}    operators:      - type: csv_parser        # 20 \u043f\u043e\u043b\u0435\u0439 pg_proaudit CSV \u0432 \u0442\u043e\u0447\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 (\u0438\u043c\u0435\u043d\u0430 \u2014 \u043f\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438),        # \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435\u043c user_ip        header: log_time,role_name,database_name,pid,severity,command_line_num,subcommand_line_num,event_type,object_type,object_name,status,error_message,query_text,query_args,session_user,uuid,xid,vxid,rows,user_ip        timestamp:          parse_from: attributes.log_time          layout_type: strptime          layout: '%Y-%m-%d %H:%M:%S.%L %Z'        # \u043f\u043e\u043b\u043d\u044b\u0439 severity-\u043c\u0430\u043f\u043f\u0438\u043d\u0433 (\u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e INFO\/ERROR \u2014 \u0438\u043d\u0430\u0447\u0435 \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u0430)        severity:          parse_from: attributes.severity          mapping:            debug: [ DEBUG ]            info:  [ INFO, NOTICE, LOG ]            warn:  [ WARNING ]            error: [ ERROR ]            fatal: [ FATAL, PANIC ]      - type: remove        id: remove_log_time        field: attributes.log_time      - type: remove        id: remove_severity        field: attributes.severityprocessors:  resource:    attributes:      - key: service.name        action: upsert        value: pg_proaudit      - key: service.instance.id        action: upsert        value: postgres:5432exporters:  otlp_http:    endpoint: http:\/\/victorialogs:9428\/insert\/opentelemetry    encoding: proto    compression: gzip    retry_on_failure:      enabled: true      initial_interval: 1s      max_interval: 30s      max_elapsed_time: 5mservice:  pipelines:    logs:      receivers:  [ file_log ]      processors: [ resource ]      exporters:  [ otlp_http ]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0420\u043e\u0432\u043d\u043e\u00a0<strong>20 \u043f\u043e\u043b\u0435\u0439<\/strong>\u00a0CSV, \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043d\u0430\u00a0<code>user_ip<\/code>\u00a0\u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043d\u0430\u0431\u043e\u0440, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c. \u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0434\u043b\u044f \u043d\u0430\u0441:\u00a0<code>role_name<\/code>,\u00a0<code>user_ip<\/code>,\u00a0<code>event_type<\/code>,\u00a0<code>object_type<\/code>,\u00a0<code>object_name<\/code>,\u00a0<code>status<\/code>,\u00a0<code>query_text<\/code>,\u00a0<code>rows<\/code>.<\/p>\n<p>\u041e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0441 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439 pg_proaudit \u0435\u0441\u0442\u044c \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 pgpro-otel-collector.<\/p>\n<h3>\u041f\u044f\u0442\u044c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u2014 \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 LogsQL<\/h3>\n<p>\u0410 \u0432\u043e\u0442 \u0438 \u0433\u043b\u0430\u0432\u043d\u043e\u0435. \u0423\u0447\u0438\u043c\u0441\u044f\u00a0<strong>\u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b \u043d\u0430 LogsQL<\/strong>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0418\u0411. \u041d\u0430 \u0441\u0442\u0435\u043d\u0434\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u043e \u043f\u044f\u0442\u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u043b\u044e\u0441 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0439 \u0444\u043e\u043d \u043e\u0442\u00a0<code>app_user<\/code>\/<code>analyst<\/code>. \u041d\u0430\u0448 \u0438\u043d\u0441\u0430\u0439\u0434\u0435\u0440 (<code>insider<\/code>) \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u0430\u0434\u0440\u0435\u0441\u0430\u00a0<code>user_ip<\/code>\u00a0<code>172.24.0.5<\/code>, \u0441 \u0442\u043e\u0433\u043e \u0436\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043e\u0442\u043a\u0443\u0434\u0430 \u0438\u0434\u0451\u0442 \u0438 \u0444\u043e\u043d\u043e\u0432\u0430\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a \u043d\u0430\u0432\u0430\u0439\u0431\u043a\u043e\u0434\u0438\u043b \u043a\u0430\u0440\u043c\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0438 \u043d\u0435 \u043e\u0437\u0430\u0431\u043e\u0442\u0438\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0431\u0435\u0440\u0451\u043c \u0444\u0430\u043a\u0442\u0443\u0440\u0443, \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0439\u0434\u0451\u043c \u0441 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043a \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443.<\/p>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432 VictoriaLogs (UI \u043d\u0430\u00a0<a href=\"http:\/\/127.0.0.1:9428\"><code>http:\/\/127.0.0.1:9428<\/code><\/a>\u00a0\u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437\u00a0<code>\/select\/logsql\/query<\/code>).<\/p>\n<h3>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 1 \u2014 Data Access: \u043a\u0442\u043e \u0447\u0438\u0442\u0430\u043b \u043f\u043b\u0430\u0442\u0435\u0436\u0438<\/h3>\n<p>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u0443. \u0412\u0441\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439:<\/p>\n<pre><code>object_name:payments<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e word-match-\u043f\u043e\u0438\u0441\u043a LogsQL \u0438 \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442 public.payments.\u00a0\u0412 \u0432\u044b\u0434\u0430\u0447\u0435 \u2014 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0441 \u043f\u043e\u043b\u044f\u043c\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0430\u0443\u0434\u0438\u0442\u0430:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>role_name<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>insider<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>user_ip<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>172.24.0.5<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>event_type<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>SELECT<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>object_name<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>public.payments<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>rows<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>5000<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>status<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>SUCCESS<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>query_text<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>SELECT * FROM payments<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/138\/504\/692\/138504692127ee8729041d4e3791b01a.png\" width=\"7015\" height=\"2356\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/138\/504\/692\/138504692127ee8729041d4e3791b01a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/138\/504\/692\/138504692127ee8729041d4e3791b01a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u043e\u0442 \u0438 \u043e\u0442\u0432\u0435\u0442 \u0418\u0411 \u0437\u0430 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441: \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0435\u00a0<code>app_user<\/code>\/<code>analyst<\/code>\u00a0\u0447\u0438\u0442\u0430\u044e\u0442\u00a0<code>payments<\/code>\u00a0\u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c\u0438 \u043f\u043e\u0440\u0446\u0438\u044f\u043c\u0438 (<code>count(*)<\/code>,\u00a0<code>LIMIT 50<\/code>), \u0430\u00a0<code>insider<\/code>\u00a0\u0441\u0434\u0435\u043b\u0430\u043b\u00a0<strong>\u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043a\u0430\u043d \u0431\u0435\u0437 LIMIT \u043d\u0430 5000 \u0441\u0442\u0440\u043e\u043a<\/strong>. \u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00a0<code>rows<\/code>\u00a0\u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u044d\u043a\u0441\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u043b\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0430\u0434\u043c\u0438\u043d\u0430 \u0432 \u043e\u0431\u0449\u0435\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0435.<\/p>\n<p>\u041e\u0433\u043e\u0432\u043e\u0440\u043a\u0430 \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435: \u043f\u0440\u0438\u0451\u043c \u00ab\u0431\u043e\u043b\u044c\u0448\u043e\u0435\u00a0<code>rows<\/code>\u00bb \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0437\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u2014 \u043c\u0435\u043b\u043a\u0438\u0435 \u043f\u043e\u0440\u0446\u0438\u0438 (<code>count(*)<\/code>,\u00a0<code>LIMIT<\/code>), \u043d\u0430 \u0444\u043e\u043d\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b\u0431\u0440\u043e\u0441 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u043c\u0435\u0442\u0435\u043d. \u0412 \u043f\u0440\u043e\u0434\u0435 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c (baseline) \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d, \u0435\u0433\u043e \u0441\u0442\u0440\u043e\u044f\u0442 \u0438\u0437 \u0441\u0430\u043c\u043e\u0433\u043e \u0436\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0430\u0443\u0434\u0438\u0442\u0430: \u0437\u0430 \u0440\u0435\u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u0443\u044e\u0442 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u043e\u0431\u044a\u0451\u043c\u044b \u0447\u0442\u0435\u043d\u0438\u044f \u043f\u043e \u0440\u043e\u043b\u044f\u043c \u0438 \u0430\u0434\u0440\u0435\u0441\u0430\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u00a0<code>object_name:payments | stats by (role_name, user_ip) max(rows), count()<\/code>) \u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0438\u0445 \u0437\u0430 \u043d\u043e\u0440\u043c\u0443. \u0422\u043e\u0433\u0434\u0430 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044f \u2014 \u044d\u0442\u043e \u0447\u0442\u0435\u043d\u0438\u0435 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430 \u0438\u043b\u0438 \u0441 \u043d\u043e\u0432\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430, \u0438\u043b\u0438 \u043d\u0435\u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u043e\u0433\u043e \u044e\u0437\u0435\u0440\u0430, \u0430 \u043d\u0435 \u00ab\u043b\u044e\u0431\u043e\u0439\u00a0<code>SELECT<\/code>\u00a0\u043d\u0430 5000 \u0441\u0442\u0440\u043e\u043a\u00bb.<\/p>\n<p>\u0423\u0442\u043e\u0447\u043d\u044f\u0435\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0443\u0442\u0435\u0447\u043a\u0438 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u043c \u00ab\u043a\u0442\u043e \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e\u00bb:<\/p>\n<pre><code>object_name:payments AND event_type:SELECT | stats by (role_name, user_ip) max(rows), sum(rows)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430, \u043a\u0442\u043e (<code>role_name=insider<\/code>), \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 (<code>user_ip<\/code>), \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a (<code>rows=5000<\/code>), \u043f\u043e\u043b\u0443\u0447\u0435\u043d. \u0414\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u043c\u0435\u0436\u043d\u044b\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0441\u043e\u0431\u044b\u0442\u0438\u0439.<\/p>\n<h3>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 2 \u2014 Access Control: \u044d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439<\/h3>\n<p>\u0412\u0441\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u043e\u043b\u044f\u043c\u0438 \u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\/\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u043e\u043b\u0435\u0439, \u0432\u044b\u0434\u0430\u0447\u0430 \u0447\u043b\u0435\u043d\u0441\u0442\u0432\u0430, GRANT):<\/p>\n<pre><code>event_type:~\"(?i)role|grant\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0438\u0434\u043d\u043e, \u043a\u0442\u043e \u043a\u043e\u043c\u0443 \u0432\u044b\u0434\u0430\u0432\u0430\u043b \u043f\u0440\u0430\u0432\u0430. \u0412 \u0441\u0442\u0435\u043d\u0434\u0435\u00a0<code>dba<\/code>\u00a0\u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0440\u043e\u043b\u0438, \u0432\u044b\u0434\u0430\u0451\u0442 \u0447\u043b\u0435\u043d\u0441\u0442\u0432\u043e, \u043c\u0435\u043d\u044f\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u2014 \u0432\u0441\u0451 \u044d\u0442\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u043e\u043c\u00a0<code>ALL_ROLE<\/code>. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043b\u043e\u0432\u0438\u0442\u0441\u044f\u00a0<strong>\u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u044b\u0434\u0430\u0442\u044c\u00a0<\/strong><code><strong>SUPERUSER<\/strong><\/code>:\u00a0<code>dba<\/code>\u00a0\u043d\u0435 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442\u0441\u044f, \u0438 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0441\u043e\u00a0<code>status=FAILURE<\/code>\u00a0\u2014 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u044d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u0438.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1e0\/1a1\/312\/1e01a1312789988e97e37a17aa175b20.png\" width=\"7028\" height=\"2929\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1e0\/1a1\/312\/1e01a1312789988e97e37a17aa175b20.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1e0\/1a1\/312\/1e01a1312789988e97e37a17aa175b20.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h3>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 3 \u2014 Schema Changes: \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u044b\u0439 DDL<\/h3>\n<p>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0445\u0435\u043c\u044b \u2014 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432:<\/p>\n<pre><code>event_type:~\"(?i)create|alter|drop\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u043e\u00a0<code>ALL_DDL_NONTEMP<\/code>\u00a0\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 DDL (\u043a\u0440\u043e\u043c\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432). \u0412\u0438\u0434\u043d\u043e, \u043a\u0430\u043a\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u043a\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b\/\u0443\u0434\u0430\u043b\u0435\u043d\u044b:\u00a0<code>DROP TABLE, ALTER TABLE<\/code>\u00a0\u0438 \u0442.\u043f. \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c\u00a0<code>role_name<\/code>\u00a0\u0438\u00a0<code>object_name<\/code>.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e7e\/77e\/439\/e7e77e439b59d6e30866559c13a08e61.png\" width=\"6989\" height=\"2732\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e7e\/77e\/439\/e7e77e439b59d6e30866559c13a08e61.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e7e\/77e\/439\/e7e77e439b59d6e30866559c13a08e61.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h3>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 4 \u2014 Sessions &amp; Auth: \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0438 \u043f\u043e\u0434\u0431\u043e\u0440 \u043f\u0430\u0440\u043e\u043b\u044f<\/h3>\n<p>\u0412\u0445\u043e\u0434\u044b \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0435:<\/p>\n<pre><code>event_type:~\"(?i)authenticate|disconnect\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u0430\u00a0<code>AUTHENTICATE<\/code>\/<code>DISCONNECT<\/code>\u00a0\u0434\u0430\u044e\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u0445\u043e\u0434\u0430\/\u0432\u044b\u0445\u043e\u0434\u0430. \u0421\u0442\u0435\u043d\u0434 \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u0434\u0431\u043e\u0440 \u043f\u0430\u0440\u043e\u043b\u044f: \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439\u00a0<code>insider<\/code>\u00a0\u0441 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u0434\u0430\u044e\u0442 \u0441\u0435\u0440\u0438\u044e \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0441\u043e\u00a0<code>status=FAILURE<\/code>. \u0412\u0441\u043f\u043b\u0435\u0441\u043a \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043e\u0432 \u2014 \u043f\u043e\u0432\u043e\u0434 \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c\u0441\u044f.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1a5\/f8b\/123\/1a5f8b123f9d409bc69620e9710f4f43.png\" width=\"6897\" height=\"2460\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1a5\/f8b\/123\/1a5f8b123f9d409bc69620e9710f4f43.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1a5\/f8b\/123\/1a5f8b123f9d409bc69620e9710f4f43.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h3>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 5 \u2014 Catalog Recon: \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0430 \u043f\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443<\/h3>\n<p>\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c \u2014 \u043a\u0442\u043e \u00ab\u0448\u0430\u0440\u0438\u043b\u00bb \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446, \u0440\u043e\u043b\u0435\u0439, \u0444\u0443\u043d\u043a\u0446\u0438\u0439:<\/p>\n<pre><code>object_type:~\"(?i)catalog\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0420\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u2014\u00a0<code>object_type='CATALOG RELATION'<\/code>. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f\u00a0<code>pg_proaudit.log_catalog_access = on<\/code>\u00a0\u0438 role-scoped \u043f\u0440\u0430\u0432\u0438\u043b\u0443 \u043d\u0430\u00a0<code>insider<\/code>\u00a0\u0435\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f\u00a0<code>pg_class<\/code>\/<code>pg_attribute<\/code>\/<code>pg_namespace<\/code>\/<code>pg_proc<\/code>\/<code>pg_roles<\/code>\/<code>pg_database<\/code>\u00a0\u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0442 \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u2014\u00a0<strong>\u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u0430\u00a0<\/strong><code><strong>pg_authid<\/strong><\/code>\u00a0(\u0445\u044d\u0448\u0438 \u043f\u0430\u0440\u043e\u043b\u0435\u0439): \u0434\u043e\u0441\u0442\u0443\u043f \u043e\u0442\u043a\u043b\u043e\u043d\u0451\u043d, \u043d\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0441\u043e\u00a0<code>status=FAILURE<\/code>\u00a0\u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u00ab\u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 \u0430\u0442\u0430\u043a\u043e\u0439\u00bb, \u0442\u043e\u0442 \u0436\u0435\u00a0<code>insider<\/code>.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c9d\/f8c\/ee4\/c9df8cee404ee58f55055e8f8bb6435a.png\" width=\"6933\" height=\"2610\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c9d\/f8c\/ee4\/c9df8cee404ee58f55055e8f8bb6435a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c9d\/f8c\/ee4\/c9df8cee404ee58f55055e8f8bb6435a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h3>\u0421\u0448\u0438\u0432\u0430\u0435\u043c \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u0437\u043d\u0430\u044f \u0432\u0438\u043d\u043e\u0432\u043d\u0438\u043a\u0430 \u043f\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044e 1, \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u0432\u0435\u0441\u044c \u0435\u0433\u043e \u0441\u043b\u0435\u0434 \u043e\u0434\u043d\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u043f\u043e\u00a0<code>user_ip<\/code>\u00a0\u0438 \u0438\u043c\u0435\u043d\u0435\u043c\u00a0<code>insider<\/code>:<\/p>\n<pre><code>user_ip:\"172.24.0.5\" AND role_name:\"insider\" | stats by (event_type) count()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u0441\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0441\u0430\u0439\u0434\u0435\u0440\u0430 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u2014 \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0430 \u043f\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443, \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u044b \u0438 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \u2014 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0435\u0434\u0438\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0430. \u0420\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u043e:\u00a0<strong>\u043a\u0442\u043e<\/strong>\u00a0(<code>insider<\/code>),\u00a0<strong>\u043e\u0442\u043a\u0443\u0434\u0430<\/strong>\u00a0(<code>user_ip<\/code>),\u00a0<strong>\u0441\u043a\u043e\u043b\u044c\u043a\u043e<\/strong>\u00a0(<code>rows=5000<\/code>) \u0438\u00a0<strong>\u0447\u0442\u043e \u0435\u0449\u0451<\/strong>\u00a0\u043e\u043d \u0434\u0435\u043b\u0430\u043b.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/91f\/6fd\/bfe\/91f6fdbfe0f18d8742089202740e7a52.png\" width=\"6928\" height=\"2537\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/91f\/6fd\/bfe\/91f6fdbfe0f18d8742089202740e7a52.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/91f\/6fd\/bfe\/91f6fdbfe0f18d8742089202740e7a52.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h4>Grafana-\u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u2014 \u0432\u0438\u0434 \u0441\u0432\u0435\u0440\u0445\u0443<\/h4>\n<p>LogsQL \u0445\u043e\u0440\u043e\u0448 \u0434\u043b\u044f \u0442\u043e\u0447\u0435\u0447\u043d\u044b\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0442\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u0438\u0441\u043a\u0430\u0442\u044c. \u041d\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u043e\u0437\u043d\u0438\u043a, \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044e \u043d\u0430\u0434\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0440\u0445 \u0442\u043e\u0433\u043e \u0436\u0435 \u043f\u043e\u0442\u043e\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0441\u043e\u0431\u0440\u0430\u043d \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0432 Grafana: \u043e\u043d \u0434\u0430\u0451\u0442 \u00ab\u0432\u0438\u0434 \u0441\u0432\u0435\u0440\u0445\u0443\u00bb \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u0434\u0435\u0436\u0443\u0440\u043d\u043e\u0433\u043e \u2014 \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 \u0431\u0440\u043e\u0441\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u043b\u0430\u0437\u0430 \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u043a\u0442\u043e-\u0442\u043e \u043f\u0440\u0438\u0431\u0435\u0436\u0438\u0442 \u0441 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u0432 \u0447\u0430\u0442 \u0418\u0411.<\/p>\n<p>\u041d\u0430\u0432\u0435\u0440\u0445\u0443 \u2014 \u0440\u044f\u0434 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439. \u041e\u0441\u0435\u0432\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u2014\u00a0<strong>\u0434\u043e\u043b\u044f\u00a0<\/strong><code><strong>status=FAILURE<\/strong><\/code>: \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u00ab\u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e\u00bb \u0441\u0435\u0439\u0447\u0430\u0441 \u0438\u043b\u0438 \u00ab\u0433\u043e\u0440\u0438\u0442\u00bb. \u0420\u044f\u0434\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430: \u043e\u0431\u0449\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0447\u0438\u0441\u043b\u043e \u043e\u0442\u043a\u0430\u0437\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0446\u0435\u043d\u0442, \u043d\u043e \u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442 \u0437\u0430 \u043d\u0438\u043c. \u0414\u0430\u043b\u044c\u0448\u0435 \u2014\u00a0<strong>Max rows read<\/strong>, \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0441\u0442\u0440\u043e\u043a, \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c: \u043f\u0440\u044f\u043c\u043e\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u044d\u043a\u0441\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u043f\u0440\u044f\u0447\u0435\u0448\u044c \u0437\u0430 \u0441\u0440\u0435\u0434\u043d\u0438\u043c\u0438. \u0418 \u043f\u0430\u0440\u0430 \u00ab\u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445\u00bb \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u043e\u0432: \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u043e\u043b\u0435\u0439 \u0438 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0437\u0430\u0441\u0432\u0435\u0442\u0438\u043b\u043e\u0441\u044c \u0437\u0430 \u043f\u0435\u0440\u0438\u043e\u0434. \u0423 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043f\u043b\u0438\u0442\u043e\u043a \u043f\u043e\u0434 \u0447\u0438\u0441\u043b\u043e\u043c \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043d \u0441\u043f\u0430\u0440\u043a\u043b\u0430\u0439\u043d \u2014 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0433\u0440\u0430\u0444\u0438\u043a \u0442\u0440\u0435\u043d\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u0441 \u0445\u043e\u0434\u0443 \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u00ab\u0442\u0430\u043a \u0431\u044b\u043b\u043e \u0432\u0441\u0435\u0433\u0434\u0430\u00bb \u043e\u0442 \u00ab\u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043a\u0430\u043a\u043d\u0443\u043b\u043e\u00bb.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bb7\/b08\/24e\/bb7b0824ea96b4a751da4ec884006c89.png\" width=\"6900\" height=\"3998\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/bb7\/b08\/24e\/bb7b0824ea96b4a751da4ec884006c89.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bb7\/b08\/24e\/bb7b0824ea96b4a751da4ec884006c89.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0438\u0436\u0435 \u2014 \u043e\u0431\u0437\u043e\u0440\u043d\u044b\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438: \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043f\u043e \u0442\u0438\u043f\u0430\u043c \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 \u043d\u0430 \u0443\u0441\u043f\u0435\u0445\u0438, \u043e\u0442\u043a\u0430\u0437\u044b \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u2014 \u043f\u0438\u043a\u0438\u00a0<code>rows<\/code>\u00a0(\u0442\u0435 \u0441\u0430\u043c\u044b\u0435 \u0432\u0441\u043f\u043b\u0435\u0441\u043a\u0438 \u0447\u0442\u0435\u043d\u0438\u044f). \u0412\u0441\u0435 \u043e\u043d\u0438 \u0441\u0442\u043e\u043b\u0431\u0447\u0430\u0442\u044b\u0435, \u0441 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0435\u0439 \u043f\u043e 5-\u043c\u0438\u043d\u0443\u0442\u043d\u044b\u043c \u043e\u043a\u043d\u0430\u043c: \u0442\u0430\u043a \u0432\u0438\u0434\u0435\u043d \u043e\u0431\u0449\u0438\u0439 \u0440\u0438\u0442\u043c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0430 \u043d\u0435 \u043c\u0435\u043b\u044c\u0442\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439.<\/p>\n<p>\u0415\u0449\u0451 \u043d\u0438\u0436\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0435 \u043f\u044f\u0442\u044c \u0433\u0440\u0443\u043f\u043f: Data Access, Access Control, Schema Changes, Sessions &amp; Auth, Catalog Recon. \u0412 \u043a\u0430\u0436\u0434\u043e\u0439 \u0440\u044f\u0434\u043e\u043c \u0441\u0442\u043e\u044f\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438 \u0433\u0440\u0430\u0444\u0438\u043a \u0438\u0445 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0438. \u042d\u0442\u043e \u0443\u0440\u043e\u0432\u0435\u043d\u044c drill-down: \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044e \u043d\u0430\u0432\u0435\u0440\u0445\u0443 \u2014 \u0441\u043f\u0443\u0441\u043a\u0430\u0435\u0448\u044c\u0441\u044f \u0432 \u043d\u0443\u0436\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u0437\u0430 \u0434\u0435\u0442\u0430\u043b\u044f\u043c\u0438, \u0430 \u043e\u0442\u0442\u0443\u0434\u0430 \u0443\u0436\u0435 \u0443\u0445\u043e\u0434\u0438\u0448\u044c \u0432 LogsQL \u0437\u0430 \u0442\u043e\u0447\u043d\u044b\u043c \u043e\u0442\u0432\u0435\u0442\u043e\u043c. \u041b\u043e\u0433\u0438\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f:\u00a0<strong>\u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, LogsQL \u2014 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f.<\/strong><\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/802\/883\/8b1\/8028838b1a85ce22bd3aa06f9b9e26c9.png\" width=\"6827\" height=\"1477\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/802\/883\/8b1\/8028838b1a85ce22bd3aa06f9b9e26c9.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/802\/883\/8b1\/8028838b1a85ce22bd3aa06f9b9e26c9.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412 \u0441\u0435\u043a\u0446\u0438\u0438 Data Access \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u043e\u0439 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u00a0<code>rows<\/code>, \u0438 \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u0447\u0442\u0435\u043d\u0438\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0444\u043e\u043d\u0435 \u043c\u0435\u043b\u043a\u0438\u0445 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u0445 \u2014 \u0442\u0430 \u0441\u0430\u043c\u0430\u044f \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0448\u0435\u0433\u043e baseline, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0441\u0451 \u0438 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c.<\/p>\n<h4>\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435<\/h4>\n<p>\u041c\u044b \u043f\u0440\u043e\u0448\u043b\u0438 \u043f\u0443\u0442\u044c \u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u00ab\u043a\u0442\u043e \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u043b \u043f\u043b\u0430\u0442\u0435\u0436\u0438?\u00bb \u0434\u043e \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430,\u00a0<strong>\u043a\u0442\u043e<\/strong>\u00a0(<code>insider<\/code>),\u00a0<strong>\u0441 \u043a\u0430\u043a\u043e\u0433\u043e\u00a0<\/strong><code><strong>user_ip<\/strong><\/code>\u00a0\u0438\u00a0<strong>\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a<\/strong>\u00a0(<code>rows=5000<\/code>) \u2014 \u043d\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u0430\u0443\u0434\u0438\u0442\u0435 Postgres Pro Enterprise, \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430 \u0438 \u0431\u0435\u0437\u00a0<code>grep<\/code>\u00a0\u043f\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u043c\u0443 \u043b\u043e\u0433\u0443. \u041d\u0430\u043c \u043f\u043e\u043c\u043e\u0433\u043b\u0438 \u043f\u0440\u0438\u0446\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u00a0<code>pg_proaudit<\/code>, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 CSV \u0441 \u043f\u043e\u043b\u044f\u043c\u0438\u00a0<code>role_name<\/code>\/<code>user_ip<\/code>\/<code>rows<\/code>\/<code>status<\/code>, \u0441\u0431\u043e\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440\u043e\u043c\u00a0<code>pgpro-otel-collector<\/code>\u00a0\u0432 VictoriaLogs \u0438 \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 LogsQL.<\/p>\n<ul>\n<li>\n<p><strong>\u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c Postgres Pro Enterprise (\u0442\u0440\u0438\u0430\u043b):<\/strong>\u00a0<a href=\"https:\/\/postgrespro.ru\/products\/download\">https:\/\/postgrespro.ru\/products\/download<\/a><\/p>\n<\/li>\n<li>\n<p><strong>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u00a0<\/strong><code><strong>pg_proaudit<\/strong><\/code><strong>:<\/strong>\u00a0<a href=\"https:\/\/postgrespro.ru\/docs\/enterprise\/current\/pg-proaudit\">https:\/\/postgrespro.ru\/docs\/enterprise\/current\/pg-proaudit<\/a><\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0431\u0437\u043e\u0440\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0425\u0430\u0431\u0440\u0435:<\/strong>\u00a0<a href=\"https:\/\/habr.com\/ru\/companies\/postgrespro\/articles\/910494\">pg_proaudit: \u0430\u0443\u0434\u0438\u0442 \u0432 Postgres Pro Enterprise<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432 \u043f\u0440\u043e\u0434\u0435 PostgreSQL \u0438 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0418\u0411, \u043a\u0442\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u043b, \u0432\u044b \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435, \u2014 \u0443 Enterprise \u044d\u0442\u043e \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043e. \u0412\u043e\u0437\u044c\u043c\u0438\u0442\u0435 \u0442\u0440\u0438\u0430\u043b \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u0435.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1057898\/\">https:\/\/habr.com\/ru\/articles\/1057898\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u0437\u0430 \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442, \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u0418\u0411 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043a\u0442\u043e \u0447\u0438\u0442\u0430\u043b \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439, \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u043b\u00bb? \u0415\u0441\u043b\u0438 \u0432\u0430\u0448 PostgreSQL \u043d\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u2014 \u043d\u0435\u0442. \u0418 \u0434\u0435\u043b\u043e \u043d\u0435 \u0432 \u043b\u0435\u043d\u0438 \u0430\u0434\u043c\u0438\u043d\u0430, \u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e \u0430\u0443\u0434\u0438\u0442\u0430 \u0432 PostgreSQL \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a, \u0438 \u043a\u0430\u043a \u044d\u0442\u0443 \u0434\u044b\u0440\u0443 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 Postgres Pro Enterprise.\u0417\u0430\u0432\u044f\u0437\u043a\u0430, \u0438\u043b\u0438 \u0418\u043d\u0441\u0430\u0439\u0434\u0435\u0440 \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u043b \u043f\u043b\u0430\u0442\u0435\u0436\u0438\u041f\u044f\u0442\u043d\u0438\u0446\u0430, \u0432\u0435\u0447\u0435\u0440. \u0412 \u043e\u0431\u0449\u0438\u0439 \u0447\u0430\u0442 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435: \u043a\u0445\u0435-\u043a\u0445\u0435, \u0432 \u043e\u0431\u0449\u0435\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0430\u043d\u043e\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0430\u0447\u043e\u043a \u0447\u0442\u0435\u043d\u0438\u044f \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439&#8230; \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0430\u0443\u0434\u0438\u0442, \u043d\u0435\u0442 \u043b\u0438 \u0442\u0430\u043c \u0443\u0442\u0435\u0447\u043a\u0438. \u041d\u0430\u0434\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0442\u043e, \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0447\u043d\u043e \u0441\u0442\u0440\u043e\u043a \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043e.\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u0439 \u0438 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 PostgreSQL, \u0442\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432\u044b, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0435 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u0435. \u0418 \u0432\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443.\u0411\u043e\u043b\u044c \u0430\u0443\u0434\u0438\u0442\u0430 \u0432 PostgreSQL\u0412 \u0447\u0438\u0441\u0442\u043e\u043c PostgreSQL \u0430\u0443\u0434\u0438\u0442\u0430 \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0435\u0442. \u041d\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u0443\u0441\u043e\u0447\u043a\u0438, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u0430\u0443\u0434\u0438\u0442\u0430:log_statement = all \u2014 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u0441\u0435\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u043e\u0431\u0449\u0438\u0439 \u043b\u043e\u0433 \u0421\u0423\u0411\u0414. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u0430\u0443\u0434\u0438\u0442, \u0430 \u0441\u0432\u0430\u043b\u043a\u0430 \u2014 \u0432\u043f\u0435\u0440\u0435\u043c\u0435\u0448\u043a\u0443 \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0431\u0435\u0437 \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u00ab\u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438\u00bb, \u0431\u0435\u0437 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0431\u0435\u0437 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430 \u00ab\u0443\u0441\u043f\u0435\u0445\/\u043e\u0442\u043a\u0430\u0437\u00bb. \u041d\u0430\u0439\u0442\u0438 \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435 \u043e\u0434\u0438\u043d SELECT \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0440\u043e\u043b\u044c\u044e \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e IP, \u2014 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u0432\u0435\u0441\u0442 \u0441 grep.log_line_prefix \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043b\u043e\u0433\u0430: \u0441\u044e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, IP \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (%h), \u0438\u043c\u044f \u0440\u043e\u043b\u0438, \u0431\u0430\u0437\u044b, PID \u0438 \u043c\u043d\u043e\u0433\u043e \u0447\u0435\u0433\u043e \u0435\u0449\u0451. \u041d\u043e \u044d\u0442\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u043a \u0442\u0435\u043c \u0436\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u0441\u0442\u0440\u043e\u043a\u0430\u043c, \u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u0449\u0438 \u0442\u0430\u043c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b.pgaudit \u2014 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e: \u0443\u043c\u0435\u0435\u0442 \u0438 \u0441\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0439 \u0430\u0443\u0434\u0438\u0442 \u043f\u043e \u043a\u043b\u0430\u0441\u0441\u0430\u043c \u043a\u043e\u043c\u0430\u043d\u0434 (READ\/WRITE\/DDL\/ROLE\/\u2026), \u0438 \u043f\u043e\u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0439 \u0430\u0443\u0434\u0438\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b (\u0447\u0435\u0440\u0435\u0437 \u0440\u043e\u043b\u044c \u0438 GRANT), \u0438 \u0434\u0430\u0436\u0435 \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0440\u043e\u043a (pgaudit.log_rows). \u041d\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0444\u043e\u0440\u043c\u0435: \u0430\u0443\u0434\u0438\u0442-\u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u043d \u043f\u0438\u0448\u0435\u0442 \u0432 \u043e\u0431\u0449\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u043b\u043e\u0433 \u0432\u043f\u0435\u0440\u0435\u043c\u0435\u0448\u043a\u0443 \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0441\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0434\u0440\u0435\u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 log_line_prefix, \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0440\u043e\u043a \u0438 \u043f\u0440\u043e\u0447\u0435\u0435 \u2014 \u0434\u043e\u0431\u0430\u0432\u043a\u0430\u043c\u0438 \u043a \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0434\u043e \u043f\u0430\u0440\u0441\u0438\u0442\u044c. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0435\u0434\u0438\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u00ab\u043e\u0434\u043d\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u2014 \u0432\u0441\u0435 \u043f\u043e\u043b\u044f\u00bb, \u043d\u0435\u0442 \u0430\u0443\u0434\u0438\u0442\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438\/\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u0438 \u043e\u0442\u043a\u0430\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 (permission denied) \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0430\u0443\u0434\u0438\u0442-\u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c \u043d\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f. \u0410\u0445 \u0434\u0430 \u0438 \u0432\u0438\u0448\u0435\u043d\u043a\u0430 \u043d\u0430 \u0442\u043e\u0440\u0442\u0435: It is not possible to reliably audit superusers with pgAudit (\u0441).\u0422\u0440\u0438\u0433\u0433\u0435\u0440\u044b \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u2014 \u0443\u0432\u044b, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e DML \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0435\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445, \u0433\u0434\u0435 \u0438\u0445 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0432\u0435\u0441\u0438\u043b\u0438. SELECT-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u043c \u043d\u0435 \u043f\u043e\u0439\u043c\u0430\u0442\u044c \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 (\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u044d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0443\u0442\u0435\u0447\u043a\u0438).\u0427\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435? \u041d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a \u0418\u0411 \u00ab\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u0430\u0443\u0434\u0438\u0442, \u043d\u0435\u0442 \u043b\u0438 \u0442\u0430\u043c \u0443\u0442\u0435\u0447\u043a\u0438\u00bb \u0441\u043e \u0448\u0442\u0430\u0442\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 PostgreSQL \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0430 \u0441 \u0442\u0435\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0447\u0442\u043e \u0435\u0441\u0442\u044c, \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e. \u0427\u0442\u0435\u043d\u0438\u044f \u043d\u0435 \u043b\u043e\u0433\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438\u0446\u0435\u043b\u044c\u043d\u043e, \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0438\u043b\u0438 \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u0430\u043d\u0430 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043b\u043e\u0433\u0430, \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441\u043e\u0431\u044b\u0442\u0438\u0439.\u0412 Postgres Pro Enterprise \u044d\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c\u00a0pg_proaudit.\u041e\u00a0pg_proaudit\u00a0\u0438\u00a0pgpro-otel-collectorpg_proaudit\u00a0\u2014 \u044d\u0442\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0432 Postgres Pro Enterprise \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u0443\u0434\u0438\u0442\u0430: \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 (\u0447\u0442\u043e \u0438 \u0434\u043b\u044f \u043a\u043e\u0433\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c), \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 CSV-\u0436\u0443\u0440\u043d\u0430\u043b \u0441 \u0433\u043e\u0442\u043e\u0432\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 (\u0440\u043e\u043b\u044c, IP \u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u0442\u0438\u043f \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043e\u0431\u044a\u0435\u043a\u0442, \u0441\u0442\u0430\u0442\u0443\u0441, \u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044b\u0445 \u0441\u0442\u0440\u043e\u043a), \u043f\u0440\u0438\u0446\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\/\u0440\u043e\u043b\u044f\u043c \u0438 \u0430\u0443\u0434\u0438\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u2014 \u0432\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 pg_proaudit\u00a0\u0438 \u0432 \u043e\u0431\u0437\u043e\u0440\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435:\u00a0\u00abpg_proaudit: \u0430\u0443\u0434\u0438\u0442 \u0432 Postgres Pro Enterprise\u00bb.pgpro-otel-collector\u00a0\u2014 \u044d\u0442\u043e\u00a0\u0441\u0431\u043e\u0440\u043a\u0430\u00a0OpenTelemetry Collector \u043e\u0442 Postgres Pro, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434 \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u043e\u0441\u0442\u044c Postgres. \u0423 otel-\u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440\u0430 \u0440\u0435\u043f\u0443\u0442\u0430\u0446\u0438\u044f \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043c\u0435\u0442\u0440\u0438\u043a: \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0421\u0423\u0411\u0414, \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f, \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u0432 \u2014 \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u0435\u0440\u043d\u043e, \u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043b\u0438\u0448\u044c \u0447\u0430\u0441\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u044b.OpenTelemetry Collector \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u2014 \u044d\u0442\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0434\u043b\u044f \u0442\u0440\u0451\u0445 \u0442\u0438\u043f\u043e\u0432 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432: \u043c\u0435\u0442\u0440\u0438\u043a\u0438,\u00a0\u043b\u043e\u0433\u0438\u00a0\u0438 \u0442\u0440\u0435\u0439\u0441\u044b. \u041e\u0434\u0438\u043d \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a, \u0447\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u0443\u043c\u0435\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438 \u043b\u043e\u0433\u0438: \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a\u00a0file_log\u00a0\u0447\u0438\u0442\u0430\u0435\u0442 \u0444\u0430\u0439\u043b\u044b, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u0430 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0451\u0440\u00a0otlp_http\u00a0(\u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439) \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u0422\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440 \u2014 \u044d\u0442\u043e \u0435\u0449\u0451 \u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043b\u043e\u0433\u043e\u0432, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u0440\u0438\u043a.\u041d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u043e\u0433\u0438 \u0421\u0423\u0411\u0414 \u044d\u0442\u043e \u0441\u043a\u0443\u0447\u043d\u043e: \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0443\u043c\u0435\u0435\u0442 \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u0430\u0433\u0435\u043d\u0442\u043e\u0432. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435, \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043b\u043e\u0433 \u043a\u0430\u043a \u043d\u0430\u00a0\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438: \u043a\u0442\u043e, \u0447\u0442\u043e, \u043d\u0430\u0434 \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u0441 \u043a\u0430\u043a\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430, \u0443\u0441\u043f\u0435\u0445 \u0438\u043b\u0438 \u043e\u0442\u043a\u0430\u0437, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a. \u0420\u043e\u0432\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u0434\u0430\u0451\u0442\u00a0pg_proaudit, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u0441\u0442\u044b\u043a\u0435 \u00ab\u0430\u0443\u0434\u0438\u0442 Enterprise + \u0441\u0431\u043e\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440\u043e\u043c\u00bb \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0440\u0430\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u0432\u0432\u044f\u0437\u0430\u043b\u0441\u044f \u0432 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 (\u0434\u0430 \u0435\u0449\u0451 \u0438 \u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439!).\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e otel-\u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u043a\u0430\u043a \u043b\u043e\u0433-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440: \u0447\u0438\u0442\u0430\u0435\u0442 CSV-\u0436\u0443\u0440\u043d\u0430\u043b \u0430\u0443\u0434\u0438\u0442\u0430, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 20 \u043f\u043e\u043b\u0435\u0439 \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0441 \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u043f\u043e\u0438\u0441\u043a\u043e\u043c.\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u0431\u043e\u0440\u0430\u0416\u0443\u0440\u043d\u0430\u043b \u0430\u0443\u0434\u0438\u0442\u0430 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u2014 \u044d\u0442\u043e CSV-\u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u044b, \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0441 \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u043f\u043e\u0438\u0441\u043a\u043e\u043c. \u041d\u0430\u0448 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432:pg_proaudit\u00a0\u043f\u0438\u0448\u0435\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0442 PGDATA, \u2014\u00a0\/var\/log\/pg_proaudit\/, \u0444\u0430\u0439\u043b\u044b \u2014\u00a0pg_proaudit-*.log.pgpro-otel-collector\u00a0\u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u0445 \u043f\u0440\u0438\u0451\u043c\u043d\u0438\u043a\u043e\u043c\u00a0file_log, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 CSV \u0432 20 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439, \u043d\u0430\u0432\u0435\u0448\u0438\u0432\u0430\u0435\u0442 resource-\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0432 VictoriaLogs \u043f\u043e OTLP HTTP.Victorialogs\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c, \u0432 \u043d\u0435\u043c \u043c\u044b \u0438 \u0432\u0435\u0434\u0451\u043c \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435\u00a0LogsQL.Grafana\u00a0\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u00a0\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0432 \u0432\u0438\u0434\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430.\u0414\u0430\u043b\u044c\u0448\u0435 \u0447\u0443\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440.\u041f\u043e\u0448\u0430\u0433\u043e\u0432\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0418\u0434\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f PostgreSQL \u2014 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0430\u0443\u0434\u0438\u0442\u0430, \u0437\u0430\u0442\u0435\u043c otel-\u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440 \u2014 \u0441\u0431\u043e\u0440 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0430\u0443\u0434\u0438\u0442-\u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 VictoriaLogs \u0438 Grafana \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0440\u0430\u0437\u0434\u0443\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0451\u043c \u0441\u0442\u0430\u0442\u044c\u0438.1. GUC-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044bpg_proaudit\u00a0\u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437\u00a0shared_preload_libraries, \u0436\u0443\u0440\u043d\u0430\u043b \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 CSV \u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u043f\u043e\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430:# \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u0430\u0443\u0434\u0438\u0442\u0430 pg_proaudit: CSV (\u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 csvlog\/ceflog\/syslog\/cefsyslog). \u0421\u0430\u043c 20-\u043f\u043e\u043b\u044c\u043d\u044b\u0439 \u0430\u0443\u0434\u0438\u0442-CSV \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 pg_proaudit, \u0430 \u043d\u0435 PostgreSQL-csvlog.pg_proaudit.log_destination = &#8216;csvlog&#8217;# \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0430\u0443\u0434\u0438\u0442\u0430pg_proaudit.log_directory = &#8216;\/var\/log\/pg_proaudit&#8217;# \u0448\u0430\u0431\u043b\u043e\u043d \u0444\u0430\u0439\u043b\u043e\u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0430 \u0430\u0443\u0434\u0438\u0442\u0430 pg_proaudit.log_filename = &#8216;pg_proaudit-%Y-%m-%d_%H%M%S.log&#8217;# \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043f\u043e\u043b\u0435 query_textpg_proaudit.log_command_text = on# \u043f\u0438\u0441\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u0432 \u043f\u043e\u043b\u0435 rows \u2014 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0434\u0435\u0442\u0435\u043a\u0442\u0430 \u044d\u043a\u0441\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438pg_proaudit.log_rows = on# \u0430\u0443\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443pg_proaudit.log_catalog_access = on# \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b\u044b \u0436\u0443\u0440\u043d\u0430\u043b\u0430: \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446+\u0433\u0440\u0443\u043f\u043f\u0430 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435, \u043c\u0438\u0440\u0443 \u2014 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043epg_proaudit.log_file_mode = 0640log_rows = on\u00a0\u2014 \u044d\u0442\u043e \u0442\u043e, \u0447\u0435\u0433\u043e \u043d\u0435\u0442 \u0432 \u0448\u0442\u0430\u0442\u043d\u043e\u043c PostgreSQL \u0438 \u0447\u0442\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u043b\u0438. \u041f\u043e\u00a0log_file_mode = 0640\u00a0\u043f\u0440\u043e\u043b\u0435\u0433\u0430\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430: \u043a \u0436\u0443\u0440\u043d\u0430\u043b\u0443 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d otel-\u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440. \u0418 \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 postgres \u043b\u0438\u0431\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0435\u0433\u043e \u0432 \u0433\u0440\u0443\u043f\u043f\u0443 postgres. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0438 \u0433\u0440\u0443\u043f\u043f\u043e\u0439, \u043e\u0442\u0441\u044e\u0434\u0430 \u0438 \u043f\u0440\u0430\u0432\u0430 0640.2. \u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0430\u0443\u0434\u0438\u0442\u0430\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u044f\u0432\u043d\u043e (\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430, \u043d\u043e extension \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c), \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0441 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439:pg_proaudit_set_rule(db_name, event_type, object_type, object_name, role_name [, comment])\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0441\u0442\u0435\u043d\u0434\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430\u00a0\u0432\u044b\u0431\u043e\u0440\u043e\u0447\u043d\u0430\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u043f\u043e\u0434\u0440\u044f\u0434 \u0434\u043e\u0440\u043e\u0433\u043e (\u043f\u043e\u0434\u043d\u0438\u043c\u0438\u0442\u0435 \u0440\u0443\u043a\u0443 \u0442\u0435, \u043a\u0442\u043e \u043b\u044e\u0431\u0438\u0442 capacity planning \u0441 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u043e\u043c \u0432 2-5 \u043b\u0435\u0442) \u2014 \u0438 \u043f\u043e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440, \u0438 \u043f\u043e \u043e\u0431\u044a\u0451\u043c\u0443 \u0436\u0443\u0440\u043d\u0430\u043b\u0430:CREATE EXTENSION IF NOT EXISTS pg_proaudit;&#8212; DML \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 (\u0412\u0410\u0416\u041d\u041e: object_name \u041e\u0411\u042f\u0417\u0410\u041d \u0431\u044b\u0442\u044c schema-qualified)SELECT pg_proaudit_set_rule(current_database(), &#8216;ALL_DML&#8217;, &#8216;TABLE&#8217;, &#8216;public.payments&#8217;, NULL);&#8212; \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e: \u043d\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 DDL, \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u043e\u043b\u044f\u043c\u0438, \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044fSELECT pg_proaudit_set_rule(current_database(), &#8216;ALL_DDL_NONTEMP&#8217;, NULL, NULL, NULL);SELECT pg_proaudit_set_rule(current_database(), &#8216;ALL_ROLE&#8217;,        NULL, NULL, NULL);SELECT pg_proaudit_set_rule(current_database(), &#8216;AUTHENTICATE&#8217;,    NULL, NULL, NULL);SELECT pg_proaudit_set_rule(current_database(), &#8216;DISCONNECT&#8217;,      NULL, NULL, NULL);&#8212; \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u0430\u0443\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 DML-\u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043c\u0430\u0442\u0447\u0438\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430.&#8212; \u041f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0435 \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0440\u043e\u043b\u0438 insider, \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0451 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a pg_catalog \u0432\u0438\u0434\u0438\u043c\u044b\u043c\u0438,&#8212; \u041d\u0415 \u0437\u0430\u0448\u0443\u043c\u043b\u044f\u044f \u0436\u0443\u0440\u043d\u0430\u043b \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u043c\u0438 \u0447\u0442\u0435\u043d\u0438\u044f\u043c\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u044b\u043c\u0438 \u0440\u043e\u043b\u044f\u043c\u0438.SELECT pg_proaudit_set_rule(current_database(), &#8216;ALL_DML&#8217;, NULL, NULL, &#8216;insider&#8217;);&#8212; \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430SELECT pg_proaudit_save();SELECT pg_proaudit_reload();\u0412\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0443 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043f\u043e\u0442\u043a\u043d\u0443\u0442\u044c\u0441\u044f:\u00a0object_name\u00a0\u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c schema-qualified.\u00a0\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043d\u0430\u00a0payments\u00a0(\u0431\u0435\u0437 \u0441\u0445\u0435\u043c\u044b) \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f, \u043d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u043c\u0430\u0442\u0447\u0438\u0442\u0441\u044f \u2014 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 DML \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u0422\u043e\u043b\u044c\u043a\u043e\u00a0public.payments.3. \u041a\u043e\u043d\u0444\u0438\u0433 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440\u0430\u041a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440 \u0447\u0438\u0442\u0430\u0435\u0442 \u0436\u0443\u0440\u043d\u0430\u043b\u044b \u0440\u0435\u0441\u0438\u0432\u0435\u0440\u043e\u043c\u00a0file_log, \u043f\u0430\u0440\u0441\u0438\u0442 20 \u043f\u043e\u043b\u0435\u0439 \u0438 \u0448\u043b\u0451\u0442 \u0432 VictoriaLogs \u0447\u0435\u0440\u0435\u0437 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0451\u0440\u00a0otlp_http:receivers:  file_log:    # \u043c\u0430\u0441\u043a\u0430 (\u043d\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0438\u043c\u044f) \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u043e\u0442\u0430\u0446\u0438\u044e \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 pg_proaudit    include: [ \/var\/log\/pg_proaudit\/*.log ]    # \u0447\u0438\u0442\u0430\u0442\u044c \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u2014 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0434\u043e \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0442\u043e\u0440\u0430, \u043d\u0435 \u0442\u0435\u0440\u044f\u044e\u0442\u0441\u044f    start_at: beginning    multiline:      line_start_pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}    operators:      &#8212; type: csv_parser        # 20 \u043f\u043e\u043b\u0435\u0439 pg_proaudit CSV \u0432 \u0442\u043e\u0447\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 (\u0438\u043c\u0435\u043d\u0430 \u2014 \u043f\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438),        # \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435\u043c user_ip        header: log_time,role_name,database_name,pid,severity,command_line_num,subcommand_line_num,event_type,object_type,object_name,status,error_message,query_text,query_args,session_user,uuid,xid,vxid,rows,user_ip        timestamp:          parse_from: attributes.log_time          layout_type: strptime          layout: &#8216;%Y-%m-%d %H:%M:%S.%L %Z&#8217;        # \u043f\u043e\u043b\u043d\u044b\u0439 severity-\u043c\u0430\u043f\u043f\u0438\u043d\u0433 (\u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e INFO\/ERROR \u2014 \u0438\u043d\u0430\u0447\u0435 \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u0430)        severity:          parse_from: attributes.severity          mapping:            debug: [ DEBUG ]            info:  [ INFO, NOTICE, LOG ]            warn:  [ WARNING ]            error: [ ERROR ]            fatal: [ FATAL, PANIC ]      &#8212; type: remove        id: remove_log_time      &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-486902","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/486902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=486902"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/486902\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=486902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=486902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=486902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}