OPS Manager를 쓸수 있으면 좋겠지만.. 라이센스 이슈로 사용하지 못할때 사용할만한 모니터링 솔루션!
Percona Monitoring and Management (PMM)
구성 계획
- OS : CentOS 8
- PMM Server : 192.168.137.100
- PMM Client : 192.168.137.21, 호스트명 mongodb
PMM Server 설치
참고 : https://www.percona.com/doc/percona-monitoring-and-management/2.x/index.html
# yum-config-manager 사용하기 위해 yum-utils설치
sudo yum -y install yum-utils
# 레포지토리 설치
sudo --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Docker 설치 및 구동
sudo yum -y install docker-ce
sudo usermod -aG docker $USER
sudo systemctl enable docker
sudo systemctl start docker
# 이미지 받아오기
docker pull percona/pmm-server:2
# 영구 데이터 컨테이너 생성
docker create --volume /srv \
--name pmm-data \
percona/pmm-server:2 /bin/true
# PMM 서버 시작
docker run --detach --restart always \
--publish 443:443 \
--volumes-from pmm-data \
--name pmm-server \
percona/pmm-server:2
- 브라우저로 admin/admin 으로 로그인
https://192.168.137.100/graph/login
PMM Client 설치
참고 : https://www.percona.com/doc/percona-monitoring-and-management/2.x/setting-up/client/index.html
# PMM Client 설치
sudo yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
sudo yum -y install pmm2-client
# PMM Server 에 Client 등록
sudo pmm-admin config --server-insecure-tls --server-url=https://admin:admin@192.168.137.100:443 192.168.137.21 generic mongodb
# MongoDB에 DB 모니터링 계정 생성
db.getSiblingDB("admin").createRole({
role: "explainRole",
privileges: [{
resource: {
db: "",
collection: ""
},
actions: [
"listIndexes",
"listCollections",
"dbStats",
"dbHash",
"collStats",
"find"
]
}],
roles:[]
})
db.getSiblingDB("admin").createUser({
user: "pmm_mongodb",
pwd: "password",
roles: [
{ role: "explainRole", db: "admin" },
{ role: "clusterMonitor", db: "admin" },
{ role: "read", db: "local" }
]
})
# PMM Server 에 MongoDB 등록
sudo pmm-admin add mongodb --username=pmm_mongodb --password=password --service-name=mongodb --host=127.0.0.1 --port=27017
EMail 알람 설정
참고 : https://www.percona.com/blog/2020/07/07/enable-email-sending-in-percona-monitoring-and-management-2/
# pmm-server 컨테이너 접속
sudo docker exec -it pmm-server bash
# pmm-server 컨테이너의 /etc/grafana/grafana.ini 파일에 email 서버 설정
vi /etc/grafana/grafana.ini
[smtp]
enabled = true
host = smtp.gmail.com:587
user = <gmail username>
password = <gmail password>
;cert_file =
;key_file =
skip_verify = false
from_address = <gmail email address>
;from_name = Grafana
;EHLO identity in SMTP dialog (defaults to instance_name)
;ehlo_identity = dashboard.example.com
[emails]
;welcome_email_on_sign_up = false
# pmm-server 컨테이너에서 빠져나온다.
exit
# pmm-server 컨테이너 재기동
sudo docker restart pmm-server
# 컨테이너 생성시에 email 서버를 지정하는 경우
sudo docker run -d -p 80:80 -p 443:443 --volumes-from pmm-data --name pmm-server \
--restart always \
-e GF_SMTP_ENABLED=true \
-e GF_SMTP_HOST=smtp.gmail.com:587 \
-e GF_SMTP_USER=<gmail username> \
-e GF_SMTP_PASSWORD=<gmail password> \
-e GF_SMTP_SKIP_VERIFY=false \
-e GF_SMTP_FROM_ADDRESS=<gmail email address> \
-e GF_SMTP_FROM_NAME=Grafana \
percona/pmm-server:2
- google 의 smtp 를 사용하려면 Google 계정 관리 -> 보안 -> 보안 수준이 낮은 앱의 액세스를 허용으로 변경해야한다.
- grafana 의 Alterting -> Notification channels 설정 후 "Test" 버튼을 클릭하면 테스트 메일이 발송된다.
'MongoDB' 카테고리의 다른 글
insertMany (0) | 2022.01.29 |
---|---|
네이버의 MongoDB 활용 사례 (0) | 2021.05.20 |
작은 컬렉션에서 슬로우 쿼리가 발생할때 (0) | 2021.05.14 |