PMM을 사용하여 모니터링 시스템 구축하기
RDS mysql을 사용중인데 기본적인 DB 인스턴스에서 모니터링을 하고 있다.
매번 aws console로 모니터링하기 번거롭기도 하고 좀 더 세부적인 DB 매트릭에 대해 모니터링 하고자 어떤 조합을 사용할지 고민하다가 PMM이라는 DB 모니터링 솔루션으로 구축하기로 함
PMM은 기본적으로 프로메테우스+그라파나 기반이라 PMM 클라이언트가 DB 매트릭을 수집하고 PMM 서버에서 수집한 매트릭을 시각화하여 보여준다.
PMM
Percona Monitoring and Management = 무료 오픈 소스 Database 통합 모니터링 솔루션
위와 같은 아키텍처이고 PMM 클라이언트가 DB 매트릭을 수집하고 수집한 매트릭을 PMM 서버에서 대시보드화하여 보여주는 방식
PMM 서버 설치
Amazon linux를 사용했으며 도커를 사용해 서버와 클라이언트 설치
- EC2 생성 (서버 / 클라이언트)
- yum -y install docker docker-repository
- systemctl enable docker
- systemctl start docker
- docker pull percona/pmm-server
- docker create -v /opt/prometheus/data -v /opt/consul-data -v /var/lib/mysql --name pmm-data percona/pmm-server /bin/true
PMM Data 컨테이너 생성 - docker run --detach --restart always --publish 8080:80 --publish 4433:443 --volumes-from pmm-data --name pmm-server percona/pmm-server
PMM Server 컨테이너 생성 및 실행 - docker ps -a
생성된 컨테이너 확인 - http://서버IP:8080
PMM Server 접속 //접속이 안되면 인스턴스 인바운드에 8080포트 열였나 체크초기 id와 password는 admin/admin이다.
접속하면 이렇게 기본 대시보드가 나옴!
이제 RDS의 매트릭을 수집할 클라이언트도 설치해야한다.
PMM 클라이언트 설치
마찬가지로 동일한 사양의 Amazon linux를 사용
- yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
- yum install -y pmm2-client
- pmm-admin --version
PMM Client 설치 - systemctl status pmm-agent
- pmm-admin config --server-insecure-tls --server-url=https://admin:"password"@pmm-server-ip:4433
PMM 서버와 연결 //접속이 안되면 서버 인스턴스 인바운드에 클라이언트 IP와 4433포트를 추가해주자 - cat /usr/local/percona/pmm2/config/pmm-agent.yaml
연결된 PMM 서버 정보 확인PMM 서버에 접속해보면 현재 server와 client 2개 모두 모니터링하고 있는 걸 볼 수 있음
이제 모니터링할 DB를 연결해야 하는데 EC2 내에 설치된 DB가 아니라 RDS의 경우엔 따로 등록하지 않고 PMM 내부 설정으로 등록해주는듯 하다.
현재 사용중인 RDS의 admin 계정으로 등록해도 되는데 보안상 특정 권한만 가진 mysql 사용자를 생성해서 매트릭을 수집해주는게 좋다.
- create user pmm@'127.0.0.1' entified by 'XXXX' WITH MAX_USER_CONNECTIONS 10;
- GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT, RELOAD, show view ON . TO 'pmm'@'127.0.0.1' ;
- GRANT SELECT, UPDATE, DELETE, DROP ON performance_schema.* TO 'pmm'@'127.0.0.1'
PMM에 RDS 추가
RDS 등록하기 전 필수로 해야될 작업이 있는데 공식 문서에 굉장히 상세히 나와 있다. Amazon RDS 필수 설정
일반 EC2 내에 DB를 운영중이면 DB가 존재하는 서버에 PMM 클라이언트를 설치해야 되는 것 같은데 RDS로 운영중이라면 따로 PMM 클라이언트 설치 없이 PMM 메인 페이지에서 RDS 인스턴스만 추가해주면 된다.
- PMM 메인 페이지 - PMM - PMM add Instance
- Amazon RDS 선택 //각자 맞는 DB 선택하면 된다.
- 생성한 IAM 계정의 credentials 정보를 입력하고 discover
그럼 권한이 있는 RDS가 나오는데 Start monitoring 선택 후 mysql 계정 정보만 입력하면 끝!
만약 안되면 RDS 인바운드 정책에 PMM 서버 추가
이렇게 RDS에 대한 모니터링이 가능하다. 따로 Grafans를 운영 중이라면 PMM 서버에서 수집하는 데이터를 그대로 가져올 수 있다.
그라파나 공식 홈페이지에서 맘에 드는 대시보드가 있으면 import해서 사용해와도 되고 대시보드 여러개 가져와서 사용할 패널만 기존 대시보드에 추가해서 사용하면 된다.
Grafana 공식사이트 접속 → 사용할 대시보드 주소 복사 → PMM 메인 페이지에서 대시보드 → Import → 주소 입력 후 Load -> Data sources 선택 후 Import
만약 운영하고 있는 그라파나가 있다면 PMM 서버에서 수집하는 데이터를 그대로 가져올 수 있다.
운영중인 그라파나가 없다면 이처럼 PMM만 사용해도 된다~
REFERENCE
- Percona 공식 문서 : Percona Monitoring and Management
- Percona 공식 문서 : Grafana Dashboards
- 화곡공룡의 일상 다반사 : PMM 설치하기
'DBA' 카테고리의 다른 글
mysqlのSQLをoracleで書く(一覧) (0) | 2024.05.10 |
---|---|
[Django] HTTP error code 401, 403, 404, 405, 415, 500 (0) | 2024.04.03 |
Real Mysql 8.0 : 옵티마이저 (0) | 2024.03.11 |
MySQL Query Cache은 무조건 좋을까? (Feat. query cache lock) (0) | 2024.03.11 |
[Real MySQL 8.0] 옵티마이저의 기본 데이터 처리 1 / 2 (0) | 2024.03.11 |
댓글