RDS लॉग को S3 बकेट में स्वचालित रूप से निर्यात करें

RDS लॉग को S3 बकेट में निर्यात करें

इससे पहले कि हम सीखें कि S3 में RDS लॉग कैसे निर्यात करें, क्या आप जानते हैं कि AWS CloudWatch स्वचालित रूप से RDS DB लॉग संग्रहीत करता है? लेकिन, रुकिए! यह केवल आपके DB उदाहरण के लिए सामान्य लॉग संग्रहीत करेगा। लेकिन, क्या होगा यदि आप जानना चाहते हैं कि कौन सी क्वेरी चलाई गई थी आपकी DB तालिका में?किस उपयोगकर्ता ने एक विशेष क्वेरी या किस IP पते से प्रदर्शन किया?आपके DB तालिकाओं से कुछ रिकॉर्ड किसने हटाए?

साथ ही, किसी तरह आपने अपने RDS उदाहरण के सभी ऑडिट लॉग्स को CloudWatch में निर्यात करने में कामयाबी हासिल की है, जो कि बहुत अच्छा है। लेकिन, क्या आप जानते हैं? CloudWatch उन लॉग को केवल 30 दिनों के लिए ही बनाए रखेगा !!

आप CloudWatch लॉग को S3 बकेट में भी निर्यात कर सकते हैं। लेकिन, आपको इसे CloudWatch डैशबोर्ड से मैन्युअल रूप से करना होगा। लेकिन, क्या होगा यदि आप इसके लिए स्वचालन चाहते हैं?

यह मार्गदर्शिका आपको ऐसी सभी घटनाओं को स्वचालित रूप से लॉग इन करने के लिए आवश्यक सभी चरणों के बारे में बताएगी !!

इस गाइड में शामिल हैं:

1) CloudWatch पर ऑडिट लॉग भेजने के लिए RDS सेटिंग्स में बदलाव करें
2) एक S3 बकेट बनाएं (क्लाउडवॉच ऑडिट लॉग स्टोर करने के लिए)
3) आईएएम रोल बनाएं (हम लैम्ब्डा ऑटोमेशन के लिए इसका इस्तेमाल करेंगे)
4) लैम्ब्डा (S3 को CloudWatch लॉग निर्यात को स्वचालित करने का कार्य)

शुरू करते हैं!

CloudWatch पर ऑडिट लॉग भेजने के लिए RDS सेटिंग्स में बदलाव करें

सबसे पहले, हमें CloudWatch पर विशिष्ट लॉग भेजने के लिए RDS में बदलाव करना होगा। ऐसा करने के लिए, हम एक विकल्प समूह और एक पैरामीटर समूह बनाएंगे।

विकल्प समूह बनाएं

अपने Amazon RDS डैशबोर्ड पर जाएं।
विकल्प समूह पर जाएँ।
ग्रुप बनाएं बटन पर क्लिक करें।

एक विकल्प समूह बनाएं

इस समूह के लिए नाम और विवरण दर्ज करें।
इंजन का चयन करें: mysql और इंजन संस्करण: 8.0। बनाएँ पर क्लिक करें।

एक विकल्प समूह बनाएं

आपके द्वारा बनाए गए Option Group पर क्लिक करें।
विकल्प अनुभाग के तहत, विकल्प जोड़ें बटन पर क्लिक करें।
⇒ “SERVER_AUDIT_EVENTS*” विकल्प के तहत, वे मान दर्ज करें जिनका आप ऑडिट करना चाहते हैं यानी कनेक्ट, QUERY, QUERY_DDL, QUERY_DML, QUERY_DCL, QUERY_DML_NO_SELECT। यदि आप अपनी टेबल पर चलने वाली सभी क्वेरी लॉग करना चाहते हैं, तो बस इस फ़ील्ड में QUERY दर्ज करें .
तुरंत आवेदन करने के लिए “हां” सेट करें। Add Option पर क्लिक करें।

विकल्प समूह सेटिंग्स

पैरामीटर समूह बनाएं

चलिए Amazon RDS डैशबोर्ड खोलते हैं।
पैरामीटर समूह पर क्लिक करें।
पैरामीटर समूह बनाएं बटन पर क्लिक करें।

पैरामीटर समूह बनाएं

“पैरामीटर समूह परिवार” चुनें: mysql8.0
“प्रकार” चुनें: डीबी पैरामीटर समूह
ग्रुप का नाम और विवरण दर्ज करें। क्रिएट पर क्लिक करें।

पैरामीटर समूह बनाएं

अब, आपके द्वारा बनाए गए पैरामीटर समूह पर क्लिक करें।
पैरामीटर के तहत, हम कुछ मापदंडों को संपादित करेंगे और निम्नलिखित मान सेट करेंगे:
⇒ पैरामीटर संपादित करें: “log_output” ⇒ इसका मान तालिका से फ़ाइल में बदलें
⇒ पैरामीटर संपादित करें: “slow_query_log” ⇒ इसका मान BLANK से 1 . में बदलें
⇒ पैरामीटर संपादित करें: “सामान्य_लॉग” ⇒ इसका मान BLANK से 1 . में बदलें

अब, हम अपने विकल्प समूह और पैरामीटर समूह के साथ पूरी तरह से तैयार हैं। अब, इन समूहों को हमारे आरडीएस को आवंटित करते हैं।

अपने आरडीएस डैशबोर्ड पर जाएं।
आपने जो RDS बनाया है उस पर क्लिक करें।
संशोधित करें पर क्लिक करें।
पृष्ठ को नीचे स्क्रॉल करें और “डेटाबेस विकल्प” अनुभाग पर जाएं।
“DB पैरामीटर समूह” के अंतर्गत, आपके द्वारा बनाए गए पैरामीटर समूह का चयन करें।
“विकल्प समूह” के अंतर्गत, आपके द्वारा बनाए गए विकल्प समूह का चयन करें।

ट्वीक आरडीएस सेटिंग्स

अब हम आरडीएस के साथ पूरी तरह से तैयार हैं। एक बार जब आप उपरोक्त चरणों के साथ कर लेते हैं, तो कृपया क्लाउडवॉच में डेटा को पॉप्युलेट करने के लिए 20-30 मिनट का समय दें (नोट: लॉग के आकार के आधार पर इसमें अधिक समय लग सकता है)।

एक बार जब CloudWatch ने सभी लॉग एकत्र कर लिए, तो आप अपने CloudWatch डैशबोर्ड के नीचे ऑडिट लॉग देखेंगे। यह निम्न छवि की तरह दिखेगा:

क्लाउडवॉच लॉग समूह

एक S3 बकेट बनाएं (क्लाउडवॉच ऑडिट लॉग स्टोर करने के लिए)

Amazon S3 डैशबोर्ड पर जाएं।
⇒ एक नया बकेट बनाएं।
एक बार जब आप एक बकेट बना लेते हैं, तो उसे खोलें और अनुमतियाँ टैब पर जाएँ।
हमें CloudWatch को ऑब्जेक्ट्स को बाल्टी में डालने की अनुमति देनी होगी (एक्सेस लिखें)
बकेट पॉलिसी के लिए एडिट बटन पर क्लिक करें। निम्नलिखित कोड दर्ज करें:

{
“संस्करण”: “2012-10-17”,
“कथन”: [
{
“Effect”: “Allow”,
“Principal”: {
“Service”: “logs.YOUR-REGION.amazonaws.com” // i.e. logs.us-east-1.amazonaws.com
},
“Action”: “s3:GetBucketAcl”,
“Resource”: “arn:aws:s3:::BUCKET_NAME_HERE”
},
{
“Effect”: “Allow”,
“Principal”: {
“Service”: “logs.YOUR-REGION.amazonaws.com”
},
“Action”: “s3:PutObject”,
“Resource”: “arn:aws:s3:::BUCKET_NAME_HERE/*”,
“Condition”: {
“StringEquals”: {
“s3:x-amz-acl”: “bucket-owner-full-control”
}
}
}
]
}

IAM भूमिका बनाएं (हम इसका उपयोग लैम्ब्डा स्वचालन के लिए करेंगे)

अब, हम IAM भूमिका बनाएंगे जिसका उपयोग लैम्ब्डा फ़ंक्शन सेट अप में किया जाएगा। AWS लैम्ब्डा सेवा को ईवेंट लॉग करने और हमारे द्वारा बनाए गए S3 बकेट को लिखने की अनुमति की आवश्यकता होगी।

हम “AmazonS3FullAccess”, “CloudWatchLogsFullAccess”, और “CloudWatchEventsFullAccess” नीतियों के साथ IAM भूमिका “Export-RDS-CloudWatch-to-S3-Lambda” बनाएंगे।

⇒ अपना एडब्ल्यूएस आईएएम डैशबोर्ड खोलें।
रोल्स पर स्विच करें और क्रिएट रोल बटन पर क्लिक करें।
“यूज केस” के तहत, लैम्ब्डा चुनें और नेक्स्ट पर क्लिक करें।
“AmazonS3FullAccess” खोजें और उसे चुनें।
“CloudWatchLogsFullAccess” खोजें और उसका चयन करें।
“CloudWatchEventsFullAccess” खोजें और उसका चयन करें।
भूमिका का नाम सेट करें: “Export-RDS-CloudWatch-to-S3-Lambda” और क्रिएट रोल पर क्लिक करें।

लैम्ब्डा (S3 को CloudWatch लॉग निर्यात को स्वचालित करने का कार्य)

लैम्ब्डा फ़ंक्शन आपको फ़ंक्शन के तहत अपना कोड डालने और इसे ट्रिगर पर चलाने की अनुमति देता है। इसके लिए आपको कोई सर्वर या सेट अप करने की आवश्यकता नहीं है। बहुत आसान और कुशल!

⇒ एडब्ल्यूएस लैम्ब्डा डैशबोर्ड पर स्विच करें।
फंक्शन्स पर क्लिक करें और फिर क्रिएट फंक्शन बटन पर क्लिक करें।

लैम्ब्डा फ़ंक्शन बनाएं

“स्क्रैच के लिए लेखक” चयनित रखें।
⇒ “फ़ंक्शन का नाम” सेट करें: निर्यात-आरडीएस-क्लाउडवॉच-लॉग-टू-एस3
“रनटाइम” के अंतर्गत, Python 3.x चुनें।
“अनुमतियाँ” के अंतर्गत, “मौजूदा भूमिका का उपयोग करें” चुनें और उस IAM भूमिका का चयन करें जिसे हमने पिछले चरण में बनाया था।

लैम्ब्डा फ़ंक्शन कॉन्फ़िगर करें

क्रिएट फंक्शन पर क्लिक करें और कोड व्यू पर नेविगेट करें और निम्नलिखित स्क्रिप्ट दर्ज करें:

आयात boto3
आयात ओएस
आयात डेटाटाइम

GROUP_NAME = os.environ[‘GROUP_NAME’]
DESTINATION_BUCKET = os.environ[‘DESTINATION_BUCKET’]
PREFIX = os.environ[‘PREFIX’]
NDAYS = os.environ[‘NDAYS’]
nDays = int (NDAYS)

वर्तमान समय = datetime.datetime.now ()
प्रारंभ दिनांक = वर्तमान समय – datetime.timedelta (दिन = n दिन)
समाप्ति तिथि = वर्तमान समय – datetime.timedelta (दिन = n दिन – 1)

fromDate = int (StartDate.timestamp () * 1000)
toDate = int (EndDate.timestamp () * 1000)

BUCKET_PREFIX = os.path.join(PREFIX, StartDate.strftime(‘%Y{0}%m{0}%d’).format(os.path.sep))

def लैम्ब्डा_हैंडलर (घटना, संदर्भ):
क्लाइंट = boto3.client (‘लॉग’)
क्लाइंट.क्रिएट_एक्सपोर्ट_टास्क (
लॉगग्रुपनाम=GROUP_NAME,
समय से = दिनांक से,
करने के लिए = तिथि करने के लिए,
गंतव्य=DESTINATION_BUCKET,
गंतव्य उपसर्ग = BUCKET_PREFIX
)

अब, Configuration Environment Variables पर क्लिक करें।
⇒ हमें 4 वेरिएबल बनाने की जरूरत है:
⇒ DESTINATION_BUCKET:
⇒ GROUP_NAME: <लॉग का समूह नाम जिसे आप निर्यात कर रहे हैं>
दिन: 1
उपसर्ग: निर्यात-लॉग

लैम्ब्डा पर्यावरण चर

⇒ ठीक है, अब आप सेट हो गए हैं। फ़ंक्शन को सहेजें।

अब, इस लैम्ब्डा फंक्शन को चलाने के लिए ऑटोमेशन सेट करते हैं।

अब, अपने CloudWatch डैशबोर्ड पर जाएं।
ईवेंट पर जाएं नियम।
क्रिएट रूल पर क्लिक करें।
इवेंट सोर्स के तहत, शेड्यूल चुनें।
हमारे लैम्ब्डा फ़ंक्शन को स्वचालित रूप से चलाने के लिए निश्चित दर या क्रोन एक्सप्रेशन सेट करें।
लक्ष्य के तहत, लैम्ब्डा फ़ंक्शन का चयन करें।
Function के अंतर्गत, उस Function को Select करें जिसे हमने पिछले Step में बनाया है।

लैम्ब्डा फ़ंक्शन निष्पादित करने के लिए क्रॉन

बस इतना ही। अब, आपने RDS लॉग को S3 में स्वचालित रूप से निर्यात करने के लिए एक वातावरण स्थापित किया है। आप लॉग को जब तक चाहें रख सकते हैं। लेकिन, अगर आपको अभी भी कोई समस्या आती है, तो बेझिझक यहां एक टिप्पणी पोस्ट करें। हम करेंगे आपके उत्तर की प्रतीक्षा रहेगी!!

(आज 1 बार विज़िट किया गया, 1 बार विज़िट किया गया)

Leave a Comment