WAL용 Raft 메트릭과 로그 모니터링

WAL용 Raft 메트릭과 로그 모니터링 (Monitor Raft metrics and logs for WAL)

이 문서는 WAL 백엔드를 테스트할 때 Raft 메트릭과 로그를 모니터링하는 방법을 알려드릴게요. 특히 체크섬(checksum) 실패를 어떻게 감지하고 해결하는지, 어떤 성능 메트릭을 봐야 하는지 이해할 수 있어요.

출처: 문서

본문

이 항목은 WAL 백엔드를 테스트하고 있다면 Raft 메트릭과 로그를 모니터링하는 방법을 설명합니다. WAL 백엔드가 제대로 작동하지 않는다는 증거가 있는지, 특히 대상 서버에서 Consul 클러스터를 모니터링할 것을 강력히 권장합니다. WAL 백엔드에 대한 자세한 내용은 WAL LogStore 백엔드 [/consul/docs/deploy/server/wal]를 참조하세요.

체크섬 실패 모니터링 (Monitor for checksum failures)

BoltDB 또는 WAL 백엔드 여부와 관계없이 모든 서버의 로그 저장소 검증 실패는 복구할 수 없는 오류입니다. Consul은 로그에서 다음 오류를 보고할 수 있습니다.

읽기 실패: 디스크 손상 (Read failures: Disk Corruption)

2022-11-15T22:41:23.546Z [ERROR]  agent.raft.logstore: verification checksum FAILED: storage corruption rangeStart=1234 rangeEnd=3456 leaderChecksum=0xc1... readChecksum=0x45...

이것은 서버가 디스크에 기록한 것과 다른 데이터를 읽어 왔음을 나타냅니다. 이는 스토리지 백엔드 또는 파일시스템에 손상이 있음을 나타냅니다.

편의를 위해 Consul은 이 오류가 발생할 때 consul.raft.logstore.verifier.read_checksum_failures 메트릭도 증가시킵니다.

쓰기 실패: 전송 중 손상 (Write failures: In-flight Corruption)

다음 오류는 팔로워가 로그를 받았을 때 팔로워의 체크섬이 리더와 일치하지 않았음을 나타냅니다. 이 오류는 손상이 로그 저장소가 아니라 네트워크나 소프트웨어에서 발생했음을 의미합니다:

2022-11-15T22:41:23.546Z [ERROR]  agent.raft.logstore: verification checksum FAILED: in-flight corruption rangeStart=1234 rangeEnd=3456 leaderChecksum=0xc1... followerWriteChecksum=0x45...

이 오류가 스토리지 백엔드 문제를 나타낼 가능성은 낮지만, 동일한 단계로 해결하고 보고해야 합니다.

consul.raft.logstore.verifier.write_checksum_failures 메트릭은 이 오류가 발생할 때 증가합니다.

체크섬 실패 해결 (Resolve checksum failures)

두 유형의 손상 중 하나가 감지되면 BoltDB로 되돌리기 [/consul/docs/deploy/server/wal/revert-boltdb] 지침을 완료하세요. 서버가 이미 BoltDB를 사용한다면 그 오류는 BoltDB의 잠재 버그 또는 검증 코드의 버그를 나타낼 가능성이 큽니다. 두 경우 모두 되돌리기(revert) 지침을 따라야 합니다.

모든 검증 실패를 GitHub 이슈 [https://github.com/hashicorp/consul/issues/new?assignees=&labels=&template=bug_report.md&title=WAL:%20Checksum%20Failure]로 보고하세요.

보고서에 다음을 포함하세요:

  • 서버 클러스터 구성 및 하드웨어에 대한 세부 정보
  • 실패 메시지 주변의 로그
  • 구성을 실행한 기간에 대한 맥락
  • 보유한 워크로드에 대한 메트릭 또는 설명. 예를 들어 초당 Raft 커밋 수. 또한 이 페이지에 설명된 성능 메트릭을 포함하세요.

verification checksum FAILED를 포함하는 Consul 서버 로그 또는 consul.raft.logstore.verifier.{read|write}_checksum_failures 메트릭에 대한 알림을 설정하는 것이 좋습니다. 손상된 서버에 더 빨리 대응할수록 잠재적 위험 [/consul/docs/agent/wal-logstore/enable#risks] 중 하나가 클러스터에서 문제를 일으킬 가능성이 낮아집니다.

성능 메트릭 (Performance metrics)

주요 성능 메트릭은 다음과 같습니다:

  • [/consul/docs/deploy/server/wal/monitor-raft#consul-raft-committime]consul.raft.commitTime은 서버 쿼럼에서 새 쓰기를 커밋하는 시간을 측정합니다. WAL 배포 후 동일하거나 더 낮아야 합니다. WAL이 워크로드와 하드웨어에서 더 빠르더라도 리더가 5개 서버 클러스터에서 두 개의 느린 팔로워가 따라잡기를 기다릴 필요가 없을 만큼 충분한 팔로워가 WAL을 사용할 때까지 commitTime에 반영되지 않을 수 있습니다.

  • [/consul/docs/deploy/server/wal/monitor-raft#consul-raft-leader-dispatchlog]consul.raft.leader.dispatchLog는 리더에서 로그를 디스크에 유지(persist)하는 데 걸린 시간을 측정합니다. WAL이 활성화된 서버가 리더가 될 때만 관련이 있습니다. 리더가 BoltDB를 사용할 때보다 동일하거나 더 낮아야 합니다.

더 알아보기 (Learn more)