mon.sh


redisGate Enterprise Server에서는 레디스 서버 모니터링을 위해서 mon.sh를 제공합니다.
ent-7.4.8 버전의 mon.sh와 이후 개선된 (ent-7.5.0 or ent-8.0.0) mon.sh를 소개합니다.


ent-7.4.8

1. Disk to Disk

• repl-diskless-sync no
• repl-diskless-load disabled

• 1번 서버 mon.sh: RDB 생성과 생성된 RDB 파일 전송(SEND)


• 2번 서버 mon.sh: 데이터 받기(RECV)와 받은 데이터 메모리로 올리기(LOAD)

• from, to 항목: 동기화 서버와 연결이 끊기면 '0'을 표시하고, 연결되면 '1'을 표시합니다.



ent-7.5.0, ent-8.0.0

이전 버전과 차이(개선)점

  • 반복되는 date, role을 제거했고, ip:port는 header로 옮겼습니다. header에 서버 메모리와 스왑을 표시했습니다.
  • 클라이언트로부터 받은 데이터량(input), 클라이언트로 내보낸 데이터량(oupput) 항목을 추가했고, from, to 항목은 동기화 서버 연결 여부(1/0)에서 동기화 서버와 주고 받는 데이터량(바이트)를 표시하는 것으로 변경했습니다.
  • 이전 버전은 'Disk to Disk' 동기화 방식만 지원했지만, ent750부터는 'Memory to Memroy' 방식을 지원하고, 이 방식을 기본(default)로 합니다.

1. Disk to Disk

• repl-diskless-sync no
• repl-diskless-load disabled

• 1번 서버 mon.sh: RDB 생성과 생성된 RDB 파일 전송(SEND)

• 2번 서버 mon.sh: 데이터 받기(RECV)와 받은 데이터 메모리로 올리기(LOAD)

항목 설명

  • Mem: 메모리 사용량을 나타낸다. top 명령의 내용과 같습니다.
  • Swap: 스왑영역 사용량을 나타낸다. top 명령의 내용과 같습니다.
  • IP:Port: 레디스 서버의 IP와 port를 나타냅니다. mon.sh 화면을 여러 개 띄웠을 때 'IP:Port'로 레디스 서버를 구분합니다.
  • Pid: 레디스 서버의 'process id'. top 명령 또는 레디스 로그를 같이 볼 때 pid로 서버를 확인합니다.
  • time: 시각(시:분:초) 표시
  • keys: 키 개수
  • cpu: 레디스 서버가 사용하는 CPU 사용률
  • mem: 레디스 서버가 요청한 메모리 량
  • rss(Resident Set Size): OS가 할당한 메모리 량
  • mem과 rss의 메모리 사용량은 다를 수 있습니다.
    Case1: 레디스 서버가 100바이트를 요청하면 OS는 1page(4KB)를 할당합니다. 이런 경우 rss가 큽니다.
    Case2: 레디스 서버가 버퍼용으로 100MB를 요청하면 OS는 우선 10MB를 할당하고 나머지는 가상영역에 할당합니다. 이런 경우 mem이 급니다.
  • swap: 스왑 사용량. 레디스 서버가 스왑을 사용하는 경우.
    Case1: 메모리가 모자랄 경우 스왑을 사용합니다. 이것은 Linux OS 'swappiness'와 관계있습니다.
    Case2: Avail 메모리가 충분하더라도 레디스 서버의 키(데이터키) 중 오랜동안 사용(참조)하지 않는 키가 있으면 해당 데이터를 스왑영역으로 옮기고 메모리를 확보합니다.   사용 가능한(avail) 메모리가 충분한데도 레디스 서버가 스왑영역을 사용하는 이유입니다.
  • clients: 현재 레디스 서버에 접속해있는 클라이언트 수
  • commands: 초당 명령 실행 수
  • input: 클라이언트로부터 받은 명령(데이터 량): 바이트(B/K/M/G로 표시)
  • output: 결과를 클라이언트로 보내는 데이터 량: 바이트(B/K/M/G로 표시)
  • from: 동기화 서버로 부터 받은 데이터 량: 바이트(B/K/M/G로 표시)
  • to: 동기화 서버로 보내는 데이터 량: 바이트(B/K/M/G로 표시)
  • child: 자식 프로세스 실행 시 표시: RDB/AOF.
    SEND/RECV/LOAD" 이것은 메인 프로세스가 실행한다. 원래는 이 항목이 자식 프로세스를 표시했는데, SEND/RECV/LOAD를 추가하면서 메인(부모) 프로세스의 작업도 표시하게 되었습니다.
    동기화 전달 방식이 Memory(socket)일 경우 'SEND'는 RDB(child) + SEND(parent) 입니다.
  • cpu: 자식 프로세스 CPU 사용률
  • rss: 자식 프로세스 메모리(rss) 사용량

• 1번 서버 RDB 파일 생성 중 process 상태


• 1번 서버 LOG


• 2번 서버 LOG

2. Memory to Disk

• repl-diskless-sync yes
• repl-diskless-load disabled

• 1번 서버 mon.sh: 메모리의 데이터를 바로 2번 서버로 전송(SEND)


• 2번 서버 mon.sh: 데이터 받기(RECV)와 받은 데이터 메모리로 올리기(LOAD)


• 1번 서버 RDB 파일 생성 중 process 상태


• 1번 서버 LOG


• 2번 서버 LOG

3. Memory to Memory: Socket

• repl-diskless-sync yes
• repl-diskless-load on-empty-db

• 1번 서버 mon.sh: 메모리의 데이터를 바로 2번 서버로 전송(SEND)


• 2번 서버 mon.sh: 데이터 받는 동시에 메모리에 적용(RECV)


• 1번 서버 RDB 파일 생성 중 process 상태


• 1번 서버 LOG


• 2번 서버 LOG

4. BGREWRITEAOF

• mon.sh

• AOF 파일 생성 중 process 상태


• LOG

5. BGSAVE

• mon.sh

• RDB 파일 생성 중 process 상태


• LOG


ent-7.4.8

데이터를 보내는 서버에서는 Diskless 동기화를 지원한다. (바로 전송 가능)
데이터를 받는 서버에서는 Diskless 동기화를 지원하지 않는다. (파일로 받아서 로드(적재))

1. Disk to Disk

• repl-diskless-sync no
• repl-diskless-load disabled

• 1번 서버 mon.sh: RDB 생성과 생성된 RDB 파일 전송(SEND)
실시간 동기화 시작: 마지막 줄에서 'from'이 '1'로 설정되었다(2번 서버 LOAD 완료 후).


• 2번 서버 mon.sh: 데이터 받기(RECV)와 받은 데이터 메모리로 올리기(LOAD)


• 1번 서버 RDB 파일 생성 중 process 상태


• 2번 서버 AOF 파일 생성 중 process 상태


• 1번 서버 LOG


• 2번 서버 LOG

2. Memory to Disk

• repl-diskless-sync yes
• repl-diskless-load disabled

• 1번 서버 mon.sh: 메모리의 데이터를 바로 2번 서버로 전송(표시는 RDB)


• 2번 서버 mon.sh: 데이터 받기(RECV)와 받은 데이터 메모리로 올리기(LOAD)


• 1번 서버 LOG


• 2번 서버 LOG

3. Memory to Memory

• repl-diskless-sync yes
• repl-diskless-load on-empty-db

• 1번 서버 mon.sh: 메모리의 데이터를 바로 2번 서버로 전송(표시는 RDB)


• 2번 서버 mon.sh: 데이터 받기(RECV)와 받은 데이터 메모리로 올리기(LOAD)


• 1번 서버 LOG


• 2번 서버 LOG


ent-7.4.8 -> ent-7.5.0 전체 데이터 동기화: 성공

◼️ 1번 서버(ent748:18504) -> 2번 서버(ent750:18505): 전체 데이터 동기화 테스트 -> 성공

◼️ 1번 서버(ent748:18504): 기본 설정으로 디스크를 사용한 동기화.
  • repl-diskless-sync no
  • repl-diskless-load disabled

◼️ 2번 서버(ent750:18505): 디스크를 사용하지 않는 동기화 설정(Memory(socket))
  • repl-diskless-sync yes
  • repl-diskless-load on-empty-db

◼️ 1번 서버(ent748:18504): mon.sh


◼️ 2번 서버(ent750:18505): mon.sh


• 1번 서버 LOG


• 2번 서버 LOG


Email 답글이 올라오면 이메일로 알려드리겠습니다.

혹시 처음이세요?
레디스게이트에는 레디스에 대한 많은 정보가 있습니다.
레디스 소개, 명령어, SQL, 클라이언트, 서버, 센티널, 클러스터 등이 있습니다.
혹시 필요한 정보를 찾기 어려우시면 redisgate@gmail.com로 메일 주세요.
제가 찾아서 알려드리겠습니다.
 
close
IP를 기반으로 보여집니다.