Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

모니터링

서비스 설정

저희의 모니터링 서비스는 세 부분으로 구성됩니다: 메트릭을 스크레이핑, 수집, 모니터링하는 Prometheus, Prometheus가 생성한 알림을 전달하는 Alertmanager, 그리고 메트릭을 표시하는 Grafana입니다. 모든 부분은 Ansible을 통해 설정됩니다.

Prometheus가 어차피 7일 후에 메트릭을 삭제하므로 메트릭 자체는 백업되지 않지만, Grafana 대시보드는 PostgreSQL 데이터베이스에 저장되며, 이는 rust-backups 버킷(monitoring 하위 디렉터리)에서 restic으로 백업됩니다. 백업을 복호화하는 비밀번호는 1password에 있습니다.

일반적인 유지보수 절차

새 메트릭 소스 스크레이핑

Prometheus는 HTTP 엔드포인트 목록을 주기적으로 스크레이핑하여 메트릭을 자체 형식으로 가져오는 방식으로 동작합니다. 저희 설정에서 이 목록은 simpleinfra 저장소의 ansible/playbooks/monitoring.yml 파일 내 prometheus_scrape 섹션에 위치합니다.

새 메트릭 소스를 추가하려면 기존 작업(job)에 엔드포인트를 추가하거나, 스크레이핑하려는 메트릭이 다른 작업과 관련이 없다면 새 작업을 추가하십시오. 엔드포인트는 모니터링 인스턴스에서 접근 가능해야 합니다. 사용 가능한 모든 옵션을 확인하려면 Prometheus 문서를 참고하실 수 있습니다.

새 알림 생성

알림은 Prometheus 설정에 정의된 사용자 지정 규칙이 참(true)으로 평가될 때마다 생성됩니다. 저희 설정에서 규칙 목록은 simpleinfra 저장소의 ansible/playbooks/monitoring.yml 파일 내 prometheus_rule_groups 섹션에 위치합니다.

새 알림을 추가하려면 기존 그룹이나 새 그룹에 알림 규칙을 생성해야 합니다. 전체 옵션 목록은 Prometheus 문서에서 확인할 수 있습니다.

사용자에게 권한 추가하기

사용자에게 저희 Grafana 인스턴스에 대한 접근 권한을 부여하려면 두 단계가 필요합니다.

먼저, 사용자가 GitHub 계정으로 인스턴스에 로그인할 수 있게 하려면 로그인 권한이 있는 팀의 구성원이어야 합니다. 팀 목록은 simpleinfra 저장소의 ansible/playbooks/monitoring.yml 파일 내 grafana_github_teams 섹션에 정의되어 있으며, GitHub 팀 ID 목록을 포함합니다. ID를 가져오려면 다음 명령을 실행할 수 있습니다:

curl -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/orgs/<ORG>/teams/<NAME> | jq .id

사용자가 로그인 권한이 있는 팀의 구성원이 되면, 자동으로 메인 Grafana 조직에 “viewer” 권한으로 추가됩니다. 인프라 팀 구성원의 경우 이를 “관리자(admin)“로 변경해야 하며(“Configuration” -> “Users“에서), 그 외에는 뷰어 권한으로 두십시오.

기본적으로 뷰어는 제한되지 않은 대시보드에만 접근할 수 있습니다. 다른 대시보드에 대한 접근 권한을 부여하려면 “Configuration” -> “Teams” 페이지에서 해당 팀에 추가해야 합니다. “Server Admin” -> “Users” -> “<username>” 페이지에서 전체 Grafana 인스턴스에 대한 관리자 권한을 부여하는 것도 가능합니다. 신뢰할 수 있는 인프라 팀 구성원 외에는 이러한 권한을 부여하지 마십시오.

추가 자료