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

+ Recent posts