পোস্টগ্রিজএসকিউএল এর লগ ক্রিয়াকলাপে নির্দিষ্ট ব্যবহারকারীদের বাদ দেওয়া কি সম্ভব?


10

আমাদের আমাদের ডাটাবেসে ব্যবহারকারীদের কার্যকলাপ পর্যবেক্ষণ করা দরকার monitor আমি নিম্নলিখিত প্যারামিটার সেট করেছি postgresql.conf:

log_min_duration_statement = 0
log_connections = on
log_disconnections = on
log_line_prefix = '%t %a %d %h %u |'

তবে, আমি বুঝতে পেরেছি যে বেশিরভাগ লগ ফাইলগুলি postgresব্যবহারকারী দ্বারা সম্পাদিত বিবৃতিতে পূর্ণ হয় , যা রক্ষণাবেক্ষণ সংক্রান্ত কাজের জন্য আমি লিখেছি স্ক্রিপ্টগুলি দ্বারা ব্যবহৃত হয়: উপাদানযুক্ত দর্শনগুলি পুনরায় গণনা করুন, pg_dump, pg_restore, ট্যাবুলেটেড ফাইল হিসাবে ভিউগুলি বের করুন ইত্যাদি ফলাফল প্রতিদিন হয় 12 এমবি আকারের বেশি লগ ফাইলগুলি।

লগ থেকে নির্দিষ্ট ব্যবহারকারীর ক্রিয়াকলাপ বাদ দেওয়ার কোনও উপায় আছে কি?


3
আইআইআরসি ALTER USER ... SET log_connections = offইত্যাদি
ক্রেগ

উজ্জ্বল, আমি এটা করব।
সাবস্টিয়ান ক্ল্যামেন্ট

1
@ ক্রেইগ্রিঞ্জার লগ ইন করেছেন dezso(একটি সুপারইউসার ), ERROR: parameter "log_connections" cannot be set after connection startচেষ্টা করার সময় আমি সবসময় পাইALTER ROLE bob SET log_connections = off
dezso

@ ডিজেসো ড্র্যাট। আমি আইআইআরসি-তে কেন যোগ্যতা অর্জন করেছি তার একটি অংশ নিশ্চিত ছিল না।
ক্রেগ রিঞ্জার 13

1
@ ক্রেইগ্রিংঞ্জার আমি গতকাল এটি চেষ্টা করে দেখেছি এটি সম্ভব হয়েছিল - তারপরে এই প্রশ্নটি
উত্সাহিত করেছে

উত্তর:


5

ALTER ROLE ... SET parameter;কমান্ডটি ব্যবহার করে ব্যবহারকারী-নির্দিষ্ট লগ পরামিতিগুলি তৈরি করা সম্ভব হয়েছিল। নোট করুন যে প্যারামিটারটি কেবল লগআউটের পরে কার্যকর হয়।

লগ_মিনি_গ্র্যাজেশন_স্টেটমেন্ট = -1 (1 ম লগইন) সেট করা হচ্ছে:

পিএসকিএল কনসোল

P:\>psql -U postgres -h 132.156.208.45 -d my_db

my_db=# SHOW log_min_duration_statement;
 log_min_duration_statement
----------------------------
 0
(1 ligne)

my_db=# SELECT COUNT(*) FROM organisms;
 count
-------
   153
(1 ligne)

my_db=# ALTER ROLE postgres SET log_min_duration_statement=-1;
ALTER ROLE

my_db=# SHOW log_min_duration_statement;
 log_min_duration_statement
----------------------------
 0
(1 ligne)

my_db=# SELECT COUNT(*) FROM mv_rings;
 count
--------
 115270
(1 ligne)

my_db=# \q

লগতে ফলাফল:

নোট করুন যে অধিবেশনের মধ্যে, লগ_মিনিডুয়েশন_স্টেটমেন্ট = -1 সেট করার পরেও সমস্ত বিবৃতি লগটিতে দৃশ্যমান।

2015-10-15 14:14:01 EDT [unknown] my_db 123.456.789.012 postgres |LOG:  connection authorized: user=postgres database=my_db
2015-10-15 14:14:08 EDT psql my_db 123.456.789.012 postgres |LOG:  duration: 0.000 ms  statement: SHOW log_min_duration_statement;
2015-10-15 14:15:26 EDT psql my_db 123.456.789.012 postgres |LOG:  duration: 32.000 ms  statement: SELECT COUNT(*) FROM organisms;
2015-10-15 14:15:45 EDT psql my_db 123.456.789.012 postgres |LOG:  duration: 31.000 ms  statement: ALTER ROLE postgres SET log_min_duration_statement=-1;
2015-10-15 14:16:08 EDT psql my_db 123.456.789.012 postgres |LOG:  duration: 0.000 ms  statement: SHOW log_min_duration_statement;
2015-10-15 14:17:10 EDT psql my_db 123.456.789.012 postgres |LOG:  duration: 2059.000 ms  statement: SELECT COUNT(*) FROM mv_rings;
2015-10-15 14:17:29 EDT psql my_db 123.456.789.012 postgres |LOG:  disconnection: session time: 0:03:27.450 user=postgres database=my_db host=123.456.789.012 port=65269

লগ_মিনি_গ্রেশন_স্টেটমেন্টের প্রভাব (২ য় লগইন):

পিএসকিএল কনসোল

P:\>psql -U postgres -h 132.156.208.45 -d my_db

my_db=# SHOW log_min_duration_statement;
 log_min_duration_statement
----------------------------
 -1
(1 ligne)

my_db=# SELECT COUNT(*) FROM germplasms;
 count
--------
 475290
(1 ligne)

my_db=# \q

লগতে ফলাফল:

প্রত্যাশিত হিসাবে বিবৃতি কোনও লগ করা হয় না।

2015-10-15 14:17:44 EDT [unknown] my_db 123.456.789.012 postgres |LOG:  connection authorized: user=postgres database=my_db
2015-10-15 14:20:27 EDT psql my_db 123.456.789.012 postgres |LOG:  disconnection: session time: 0:02:43.333 user=postgres database=my_db host=123.456.789.012 port=49372
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.