MongoDB Atlas에서 로그 자동 다운로드
프로세스 로그는 JSON 형식으로 인쇄되는 서버 로그라고도 합니다.프로세스 로그에는 문제, 연결 등의 항목이 포함될 수 있습니다. 메시지는 다음과 같습니다.
{"t":{"$date":"2020-05-01T15:16:17.180+00:00"},"s":"I", "c":"NETWORK", "id":12345, "ctx":"listener", "msg":"Listening on","attr":{"address":"127.0.0.1"}}
자료 출처: MongoDB LOG MESSAGES감사 로그는 이 로그를 활성화하고 MongoDB Atlas 클러스터 내의 명령, 소스 IP 등 사용자 작업을 감사할 수 있도록 허용해야 합니다
Enabling auditing logs에 대한 정보
이 두 가지 로그에는 다음과 같은 몇 가지 고려 사항이 있습니다.
우리가 전에 말했듯이...
매일 로그 파일을 다운로드하는 것은 적어도 시간을 소모할 뿐만 아니라, 유지하기도 매우 어렵다.
네가 할 수 있는 가장 간단한 일은 스크립트로 이 파일을 자동으로 다운로드하는 것이다. 이것이 바로 우리가 해야 할 일이다.다음과 같이 가정해 보겠습니다.
AWS S3 스토리지 로그 파일
Mongo DB Atlas 클러스터에 연결할 수 있는 키를 저장하는 AWS 매개 변수 저장소입니다.
VPC 피어 연결, Mongo AtlasHERE에서 피어 연결 구성에 대한 추가 정보
실례에 공공 IP를 추가하고 MongoDB Atlas HERE 에서 이 공공 IP를 사용합니다. 이렇게 하는 것을 권장하지 않습니다.
그러나 우선, 너는 약간의 선결 조건이 필요하다
Mongo CLI .
AWS CLI AWS CLI가 AMazon Linux에 설치되어 있습니다.
Create a PArameter store Mongo Atlas 키를 저장합니다.
s3:Read*
s3:Write*
"ssm:GetParameters"
참고 리소스를 제공할 때는 리소스를 사용하는 특정 ARN에 유의하십시오.권한을 할당하려면 다음과 같이 하십시오.
생성된 키와 개인 키를 매개 변수 저장소에 저장합니다.키: 값으로 값을 저장하는 것을 기억하세요.
{
cluster_id: "your cluster id",
public_key: "your public api key from atlas",
private_key: "your private api key from atlas"
}
이제 이 모든 게 준비됐어...
코드로 이동합니다.
#! /bin/bash -e
CLUSTERID=$(aws ssm get-parameters --names "mongodb-atlas-key" --with-decryption --query 'Parameters[*].Value' --output text | grep "cluster_id" | cut -f2 -d ":" | cut -d "\"" -f2)
PUBLICKEY=$(aws ssm get-parameters --names "mongodb-atlas-key" --with-decryption --query 'Parameters[*].Value' --output text | grep "public_key" | cut -f2 -d ":" | cut -d "\"" -f2)
PRIVATEKEY=$(aws ssm get-parameters --names "mongodb-atlas-key" --with-decryption --query 'Parameters[*].Value' --output text | grep "private_key" | cut -f2 -d ":" | cut -d "\"" -f2)
CURRENTDATE=`date +%Y%m%d`
NOW=`date '+%F_%H:%M:%S'`
declare -a StringArray=("node-00-00.snvtr.mongodb.net" "node-00-01.snvtr.mongodb.net" "node-00-02.snvtr.mongodb.net")
for hostname in ${StringArray[@]}; do
echo "Obtaining logs from ${hostname}"
curl --user ${PUBLICKEY}:${PRIVATEKEY} --digest \
--header 'Accept: application/gzip' \
--request GET "https://cloud.mongodb.com/api/atlas/v1.0/groups/${CLUSTERID}/clusters/${hostname}/logs/mongodb.gz" \
--output "mongodb-${hostname}-${CURRENTDATE}.gz"
echo "Uploading logs from ${hostname}"
aws s3 mv "mongodb-${hostname}-${CURRENTDATE}.gz" s3://mongodb-logs/mongodblogs/${NOW}/mongodb-${hostname}-${CURRENTDATE}.gz
done
for hostname in ${StringArray[@]}; do
echo "Obtaining Audit logs from ${hostname}"
curl --user ${PUBLICKEY}:${PRIVATEKEY} --digest \
--header 'Accept: application/gzip' \
--request GET "https://cloud.mongodb.com/api/atlas/v1.0/groups/${CLUSTERID}/clusters/${hostname}/logs/mongodb-audit-log.gz" \
--output "mongodb-audit-log-${hostname}-${CURRENTDATE}.gz"
echo "Uploading Audit logs from ${hostname}"
aws s3 mv "mongodb-audit-log-${hostname}-${CURRENTDATE}.gz" s3://mongodb-logs/mongodblogs/${NOW}/mongodb-audit-log-${hostname}-${CURRENTDATE}.gz
done
echo ""
echo "End of script execution..."
각 부분 다 보여주세요.
#! /bin/bash -e
CLUSTERID=$(aws ssm get-parameters --names "mongodb-atlas-key" --with-decryption --query 'Parameters[*].Value' --output text | grep "cluster_id" | cut -f2 -d ":" | cut -d "\"" -f2)
PUBLICKEY=$(aws ssm get-parameters --names "mongodb-atlas-key" --with-decryption --query 'Parameters[*].Value' --output text | grep "public_key" | cut -f2 -d ":" | cut -d "\"" -f2)
PRIVATEKEY=$(aws ssm get-parameters --names "mongodb-atlas-key" --with-decryption --query 'Parameters[*].Value' --output text | grep "private_key" | cut -f2 -d ":" | cut -d "\"" -f2)
CURRENTDATE=`date +%Y%m%d`
NOW=`date '+%F_%H:%M:%S'`
declare -a StringArray=("node-00-00.snvtr.mongodb.net" "node-00-01.snvtr.mongodb.net" "node-00-02.snvtr.mongodb.net")
이 섹션에서는 변수를 설명합니다.aws ssm get-parameters
for hostname in ${StringArray[@]}; do
echo "Obtaining logs from ${hostname}"
curl --user ${PUBLICKEY}:${PRIVATEKEY} --digest \
--header 'Accept: application/gzip' \
--request GET "https://cloud.mongodb.com/api/atlas/v1.0/groups/${CLUSTERID}/clusters/${hostname}/logs/mongodb.gz" \
--output "mongodb-${hostname}-${CURRENTDATE}.gz"
echo "Uploading logs from ${hostname}"
aws s3 mv "mongodb-${hostname}-${CURRENTDATE}.gz" s3://mongodb-logs/mongodblogs/${NOW}/mongodb-${hostname}-${CURRENTDATE}.gz
done
이 for 순환은 노드 이름을 옮겨다니며 프로세스 로그를 다운로드합니다그리고 로컬 메모리를 실례에 저장한 다음 날짜와 호스트 이름을 사용하여 s3 메모리통으로 이동합니다.
기본적으로 MongoDB Atlas에 대해 API 호출을 하고 생성된 키를 사용하여 자신을 인증하고 있습니다.
for hostname in ${StringArray[@]}; do
echo "Obtaining Audit logs from ${hostname}"
curl --user ${PUBLICKEY}:${PRIVATEKEY} --digest \
--header 'Accept: application/gzip' \
--request GET "https://cloud.mongodb.com/api/atlas/v1.0/groups/${CLUSTERID}/clusters/${hostname}/logs/mongodb-audit-log.gz" \
--output "mongodb-audit-log-${hostname}-${CURRENTDATE}.gz"
echo "Uploading Audit logs from ${hostname}"
aws s3 mv "mongodb-audit-log-${hostname}-${CURRENTDATE}.gz" s3://mongodb-logs/mongodblogs/${NOW}/mongodb-audit-log-${hostname}-${CURRENTDATE}.gz
done
이 for 순환은 노드 이름을 옮겨다니며 감사 로그를 다운로드합니다그리고 로컬 메모리를 실례에 저장한 다음 날짜와 호스트 이름을 사용하여 s3 메모리통으로 이동합니다.
매일 실행할 수 있도록 이 스크립트를 가져오고cronjob에 넣을 수 있습니다.
우리는 로그의 시간 범위를 정의하지 않았습니다. 기본적으로 24시간입니다. 매일 이 스크립트를 실행하면 지난 24시간의 로그를 불러옵니다.
프로그래밍 API 키
Reference
이 문제에 관하여(MongoDB Atlas에서 로그 자동 다운로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aernesto24/automating-log-downloads-from-mongodb-atlas-56op텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)