모니터링 알림 관리

이 문서에서는 모니터링 대시보드에 정의된 알림에 대한 설명과 작업 리스트 항목을 제공합니다. 문제를 해결할 수 없을 경우 대시보드 스크린샷과 로그를 첨부하여 기술 지원 티켓을 제출할 수 있습니다.

비즈니스 클라이언트 대시보드 알림

중요한 API 실패 알림

설명

contacts API 또는 messages API의 성공률이 낮습니다.

작업 리스트 항목

  1. 요청/초 패널에서 contacts 또는 messages API에 대한 API 오류 코드를 찾습니다.
  2. 오류 코드 문서를 확인합니다.
  3. CoreApp 요청/초DB 쿼리/초 패널에서 실패가 Coreapp 실패 또는 데이터베이스 실패와 관련이 있는지 확인합니다.
  4. CoreApp 개요 대시보드(문제가 있는 Coreapp으로 노드 변수 입력)와 MySQL 개요 대시보드에서 자세한 내용을 확인합니다.

통계 없음 알림

설명

모니터링할 데이터가 없습니다.

작업 리스트 항목

  1. Prometheus 타겟 엔드포인트(http://your-monitoring-hostname:9090/targets)에 액세스하여 webstats와 appstats 엔드포인트 상태가 UP인지 확인합니다.
  2. Prometheus가 Webapp에 연결하지 못할 경우 WADebug를 실행하여 오류를 해결합니다.
  3. Webapp 및 Coreapp 컨테이너가 실행 중일 경우 .env 파일의 WA_WEB_ENDPOINT, WA_WEB_USERNAMEWA_WEB_PASSWORD가 유효한지 확인합니다.

Coreapp 개요 대시보드 알림

콜백 실패 알림

설명

앱 설정에 지정된 Webhook URL에 보내는 콜백 성공률이 낮습니다.

작업 리스트 항목

  1. 콜백 요청/초 패널에서 콜백 응답 오류 문서를 찾습니다.
  2. 네트워크 오류에 대한 Coreapp 로그를 Grep하여 실제 오류 메시지를 확인합니다.
  3. 오류 코드와 메시지에 따른 조치:
    • Coreapp에서 Webhook에 도달할 수 있는지 확인합니다.
    • 알림을 처리한 후에 Webhook가 항상 HTTPS 200 OK 응답을 반환하는지 확인합니다.
    • Webhook가 응답에 오랜 시간이 걸리는지 확인합니다.

대기 중인 발송 메시지 과다

설명

발송 메시지 대기가 거의 꽉 찼습니다. API 요청이 곧 System overloaded error(1016)와 함께 실패합니다.

작업 리스트 항목

  1. 발송 메시지 패널 행에서 비정상적인 트래픽이 늘어났는지 확인합니다. 비정상적인 트래픽이 늘어났다면 알림이 사라질 때까지 트래픽 로드를 줄여봅니다.
  2. 데이터베이스가 최근 다른 지역에 대해 실패했는지 확인합니다. 지역 간 대기 시간으로 인해 WhatsApp Business API가 로드를 따라잡지 못할 수 있습니다.
  3. 대기 중인 발송 메시지가 서서히 늘어났다면 버그를 신고해야 합니다.
  4. 단일 WhatsApp Business API 클라이언트가 로드 요구 사항을 충족하지 못할 경우 더 높은 로드를 지원하도록 다중 연결을 설정합니다.

참고: 드물게 기본 대기 구현으로 인해 대시보드에 발송 메시지 대기 사용률이 100% 이상으로 나오기도 합니다. 작업 리스트 항목은 동일합니다.

대기 중인 콜백 과다 알림

설명

콜백 대기가 거의 꽉 찼습니다. API 요청이 곧 System overloaded error(1016)와 함께 실패합니다.

작업 리스트 항목

  1. 콜백 오류율 패널에서 콜백이 성공적으로 처리되고 있는지 확인합니다.
  2. Webhook의 콜백 처리 시간을 줄입니다.
  3. 앱 설정에서 max_concurrent_requests를 구성하여 전송 중인 콜백 요청 수를 늘립니다(기본값: 6).

데이터베이스 트랜잭션 오류율 알림

설명

데이터베이스 트랜잭션 작업(트랜잭션, 커밋, 롤백)의 오류율이 높습니다.

작업 리스트 항목

  1. DB 트랜잭션/초 패널에서 문제가 있는 데이터베이스와 작업을 찾습니다.
  2. QSqlError에 대한 Coreapp 로그를 Grep하여 실제 SQL 오류 코드와 메시지를 확인합니다.
  3. 오류 코드와 메시지에 따른 조치:
    1. MySQL 개요 대시보드나 자체 데이터베이스 대시보드를 확인하여 데이터베이스가 정상적으로 실행되고 있는지 확인합니다.
    2. 오류에 스키마 문제 또는 잘못된 SQL 쿼리라고 나오면 조사를 위해 기술 지원 티켓을 제출합니다.

데이터베이스 읽기 쿼리 오류율 알림

설명

데이터베이스 읽기 작업(선택, 준비)의 오류율이 높습니다.

작업 리스트 항목

  1. DB 읽기 쿼리/초 패널에서 문제가 있는 데이터베이스와 작업을 찾습니다.
  2. QSqlError에 대한 Coreapp 로그를 Grep하여 실제 SQL 오류 코드와 메시지를 확인합니다.
  3. 오류 코드와 메시지에 따른 조치:
    1. MySQL 개요 대시보드나 자체 데이터베이스 대시보드를 확인하여 데이터베이스가 정상적으로 실행되고 있는지 확인합니다.
    2. 오류에 스키마 문제 또는 잘못된 SQL 쿼리라고 나오면 조사를 위해 기술 지원 티켓을 제출합니다.

데이터베이스 쓰기 쿼리 오류율 알림

설명

데이터베이스 쓰기 작업(예: 삽입, 업데이트, 삭제)의 오류율이 높습니다.

작업 리스트 항목

  1. DB 쓰기 쿼리/초 패널에서 문제가 있는 데이터베이스와 작업을 찾습니다.
  2. QSqlError에 대한 Coreapp 로그를 Grep하여 실제 SQL 오류 코드와 메시지를 확인합니다.
  3. 오류 코드와 메시지에 따른 조치:
    1. MySQL 개요 대시보드나 자체 데이터베이스 대시보드를 확인하여 데이터베이스가 정상적으로 실행되고 있는지 확인합니다.
    2. 오류에 스키마 문제 또는 잘못된 SQL 쿼리라고 나오면 조사를 위해 기술 지원 티켓을 제출합니다.

평균 데이터베이스 트랜잭션 대기 시간(ms) 알림

설명

데이터베이스 트랜잭션 작업(트랜잭션, 커밋, 롤백)의 오류율이 높습니다.

작업 리스트 항목

데이터베이스 대기 시간을 15ms 미만으로 낮추어 메시지 처리량을 높이는 것이 좋습니다.

  1. 평균 DB 트랜잭션 대기 시간(ms) 패널에서 느린 데이터베이스를 찾습니다.
  2. MySQL 개요 대시보드나 자체 데이터베이스 대시보드를 확인하여 데이터베이스가 정상적으로 실행되고 있는지 확인합니다.
  3. mysqlslap 또는 pgbench를 사용하여 동시 클라이언트로 XACT 대기 시간을 측정합니다.
  4. 높은 처리량 권장 사항에 따라 유사한 구성으로 데이터베이스를 설정합니다.

일반적인 문제

  • 데이터베이스 인스턴스에 CPU/메모리/디스크/IOPS/연결이 부족합니다.
  • 데이터베이스 인스턴스가 SSD가 아니라 자기(magnetic) 디스크상에서 실행됩니다.
  • 데이터베이스 인스턴스가 Coreapp과 다른 지역에 있어서 네트워크 왕복 시간이 높습니다.

평균 데이터베이스 읽기 쿼리 대기 시간(ms) 알림

설명

데이터베이스 읽기 작업(선택, 준비)의 평균 대기 시간이 높습니다.

작업 리스트 항목

데이터베이스 대기 시간을 15ms 미만으로 낮추어 메시지 처리량을 높이는 것이 좋습니다.

  1. 평균 DB 읽기 쿼리 대기 시간(ms) 패널에서 느린 데이터베이스를 찾습니다.
  2. MySQL 개요 대시보드나 자체 데이터베이스 대시보드를 확인하여 데이터베이스가 정상적으로 실행되고 있는지 확인합니다.
  3. mysqlslap 또는 pgbench를 사용하여 동시 클라이언트로 읽기 대시 시간을 측정합니다.
  4. 높은 처리량 권장 사항에 따라 유사한 구성으로 데이터베이스를 설정합니다.

일반적인 문제

  • 데이터베이스 인스턴스에 CPU/메모리/연결이 부족합니다.
  • 데이터베이스 인스턴스가 Coreapp과 다른 지역에 있어서 네트워크 왕복 시간이 높습니다.

평균 데이터베이스 쓰기 쿼리 대기 시간(ms) 알림

설명

데이터베이스 쓰기 작업(예: 삽입, 업데이트, 삭제)의 평균 대기 시간이 높습니다.

작업 리스트 항목

데이터베이스 대기 시간을 15ms 미만으로 낮추어 메시지 처리량을 높이는 것이 좋습니다.

  1. 평균 DB 쓰기 쿼리 대기 시간(ms) 패널에서 느린 데이터베이스를 찾습니다.
  2. MySQL 개요 대시보드나 자체 데이터베이스 대시보드를 확인하여 데이터베이스가 정상적으로 실행되고 있는지 확인합니다.
  3. mysqlslap 또는 pgbench를 사용하여 동시 클라이언트로 쓰기 대기 시간을 측정합니다.
  4. 높은 처리량 권장 사항에 따라 유사한 구성으로 데이터베이스를 설정합니다.

일반적인 문제

  • 데이터베이스 인스턴스에 CPU/메모리/디스크/IOPS/연결이 부족합니다.
  • 데이터베이스 인스턴스가 SSD가 아니라 자기(magnetic) 디스크상에서 실행됩니다.
  • 데이터베이스 인스턴스가 Coreapp과 다른 지역에 있어서 네트워크 왕복 시간이 높습니다.

평균 콜백 요청 대기 시간(ms) 알림

설명

앱 설정에서 지정된 Webhook URL에 대한 콜백 요청의 평균 대기 시간이 높습니다.

작업 리스트 항목

콜백 대기 시간을 80ms로 낮추어 처리량을 높이는 것이 좋습니다.

  1. Webhook 서버를 벤치마킹하고 프로파일링을 통해 대기 시간이 발생하는 구간을 찾습니다.
  2. 중요하지 않은 작업은 비동기식으로 실행하고 즉시 HTTPS 200 OK 응답을 반환합니다.
  3. 로드 밸런서 뒤에 있는 Webhook 서버에 시스템 리소스가 부족할 경우 그 숫자를 늘립니다.

서버 연결 요청 알림

설명

Coreapp에서 계속 WhatsApp 서버와의 연결이 끊어집니다. 연결이 불안정하면 Coreapp의 메시지 전송 성능에 영향을 미치고 API 실패가 발생합니다.

작업 리스트 항목

  1. '스트림 오류'에 대해 Coreapp 로그를 Grep하여 실제 연결 해제 오류와 메시지, 빈도를 확인합니다.
  2. 연결이 수시로 몇 시간 동안 끊어지는 경우 Coreapp을 다시 시작하면 문제가 완화될 수도 있습니다.
  3. 로그를 보관하고 자세한 조사를 위해 기술 지원 티켓을 제출합니다.

초당 복호화된 메시지 알림

설명

Coreapp이 WhatsApp 서버에서 수신되는 메시지를 복호화하는 속도가 느리며, 이는 연결이 끊어지는 원인이 됩니다.

작업 리스트 항목

  1. DB 읽기/쓰기/트랜잭션 대기 시간 패널에서 데이터베이스가 정상적으로 실행되고 있는지 확인합니다. 데이터베이스 대기 시간을 15ms 미만으로 낮추어 처리량을 높이는 것이 좋습니다. 위의 평균 DB 쓰기 쿼리 대기 시간(ms) 알림의 작업 리스트 항목에 따라 데이터베이스 문제를 해결합니다.
  2. Coreapp 인스턴스에 CPU가 부족한지 확인합니다. 이 경우 더 큰 인스턴스로 업그레이드합니다.
  3. 로그를 보관하고 기술 지원 티켓을 제출하여 WhatsApp 서버 측에서 수신되는 메시지 속도를 제한합니다.

머신 개요 대시보드 알림

높은 CPU 사용량 알림

설명

머신의 CPU 사용률이 너무 높습니다.

작업 리스트 항목

  1. CPU 상세 사용률(%) 패널에서 사용률 분포를 확인합니다.
  2. 머신에서 atop 또는 top을 실행하여 가장 CPU를 많이 사용하는 프로세스를 찾습니다. 컨테이너 개요 대시보드에서 문제가 있는 머신으로 머신 변수를 입력하여 컨테이너 수준 CPU 지표를 확인하는 것도 도움이 될 수 있습니다.
  3. Webapp, Coreapp 또는 데이터베이스가 대부분 CPU를 사용할 경우, 더욱 강력한 머신을 찾아서 호스팅합니다. 고가용성/다중 연결 모드에서 Webapp과 Coreapp 컨테이너가 동일한 머신에서 실행될 경우 별도의 머신으로 나누어 봅니다.

높은 디스크 사용량 알림

설명

머신에서 기기의 디스크 사용률이 너무 높습니다.

작업 리스트 항목

  1. 기기에서 dudf 명령을 실행하여 디스크 사용량을 분석합니다. 컨테이너 개요 대시보드에서 문제가 있는 머신으로 머신 변수를 입력하여 컨테이너 수준 디스크 지표를 확인하는 것도 도움이 될 수 있습니다.
  2. 기기에서 불필요하게 공간을 차지하는 데이터를 삭제합니다. 미디어 파일이나 로그가 있을 경우 cron 작업을 설정해 오래된 파일을 정기적으로 정리합니다.

높은 메모리 사용량 알림

설명

머신의 메모리 사용량이 너무 높습니다.

작업 리스트 항목

  1. 메모리 상세 정보 패널에서 사용률 분포를 확인합니다.
  2. 머신에서 atop 또는 top을 실행하여 가장 메모리를 많이 사용하는 프로세스를 찾습니다. 컨테이너 개요 대시보드에서 문제가 있는 머신으로 머신 변수를 입력하여 컨테이너 수준 메모리 지표를 확인하는 것도 도움이 될 수 있습니다.
  3. Webapp, Coreapp 또는 데이터베이스가 대부분 메모리를 사용할 경우, 더욱 강력한 머신을 찾아서 호스팅합니다.
  4. Coreapp의 메모리 사용량이 서서히 증가하고 있다면 메모리 누수가 원인일 수 있으므로 버그를 신고해야 합니다. Coreapp을 다시 시작하여 메모리 문제를 완화합니다.

열린 파일 과다 알림

설명

머신의 파일 설명자가 곧 부족해집니다.

작업 리스트 항목

  1. 파일 설명자 패널에서 열린 파일 제한을 확인합니다.
  2. /etc/sysctl.conf 파일에서 더 높은 값(예: fs.file-max = 600000)을 구성하여 열린 파일 제한을 높입니다.
  3. sysctl -p를 실행하여 변경 사항을 적용합니다.

MySQL 개요 대시보드 알림

DB 연결 과다 알림

설명

DB 연결 풀 사용률이 높습니다. 새로운 DB 요청이 곧 Too many connections 오류와 함께 실패할 수 있습니다.

작업 리스트 항목

  1. 연결 패널에서 동시 연결 제한을 확인합니다.
  2. my.cnf에서 MySQL 시스템 변수 max_connections(기본값: 151)를 높이고 MySQL 서버를 다시 시작합니다. 자세한 내용은 MySQL 서버 시스템 변수 문서를 참조하세요.
  3. AWS RDS의 경우 더 큰 RDS 인스턴스로 마이그레이션해야 합니다. AWS 배포 상세 정보RDS 인스턴스 크기 조정 섹션에서 지침을 확인하세요.

WebApp 개요 대시보드 알림

대기 중인 HTTP 서버 연결 과다 알림

설명

Webapp 내부 HTTP 서버 연결 대기가 거의 꽉 찼습니다.

작업 리스트 항목

  1. 비즈니스 클라이언트 대시보드에서 비정상적인 API 트래픽이 있거나 API 요청 대기 시간이 높은지 확인합니다.
  2. 자세한 내용은 Webapp 로그를 확인합니다.
  3. Webapp CPU 사용률이 높은지 확인하고, 사용률이 높은 경우 Webapp을 실행할 더욱 강력한 머신을 찾습니다.