모니터링
- 호스팅 위치:
monitoring.infra.rust-lang.org(bastion 뒤에 있습니다 – 접속 방법) - 메인테이너: pietroalbini, 인프라 팀
- 공개 URL: grafana.rust-lang.org
- 이 서버를 배포하는 Ansible 플레이북입니다.
- 인스턴스 메트릭입니다(인프라 팀 구성원만 이용할 수 있습니다).
서비스 구성
저희 모니터링 서비스는 세 부분으로 구성됩니다. 메트릭을 스크레이프, 수집, 모니터링하는 Prometheus, Prometheus가 생성한 알림을 발송하는 Alertmanager, 메트릭을 표시하는 Grafana입니다. 모든 부분은 Ansible을 통해 구성됩니다.
메트릭은 어차피 Prometheus가 7일 후에 삭제하므로 백업하지 않지만, Grafana 대시보드는 PostgreSQL 데이터베이스에 저장되며 이 데이터베이스는 restic으로 rust-backups 버킷(monitoring 하위 디렉터리)에 백업됩니다. 백업을 복호화하는 비밀번호는 1password에 있습니다.
일반적인 유지 관리 절차
새 메트릭 소스 스크레이프하기
Prometheus는 자체 형식으로 작성된 메트릭을 얻기 위해 HTTP 엔드포인트 목록을 주기적으로 스크레이프하는 방식으로 동작합니다. 저희 구성에서 이 목록은 simpleinfra 저장소에 있는 ansible/playbooks/monitoring.yml 파일의 prometheus_scrape 섹션에 있습니다.
새 메트릭 소스를 추가하려면 엔드포인트를 기존 job에 추가하거나, 스크레이프하려는 메트릭이 다른 어떤 job과도 관련이 없다면 새 job에 추가하십시오. 엔드포인트는 모니터링 인스턴스에서 접근할 수 있어야 합니다. 사용 가능한 모든 옵션은 Prometheus 문서에서 확인할 수 있습니다.
새 알림 만들기
알림은 Prometheus 구성에 정의된 사용자 정의 규칙이 참으로 평가될 때마다 Prometheus가 생성합니다. 저희 구성에서 규칙 목록은 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
사용자가 로그인이 허용된 팀의 구성원이 되면 “viewer” 권한으로 기본 Grafana 조직에 자동으로 추가됩니다. 인프라 팀 구성원이라면 이 권한을 “admin“으로 변경해야 하며(“Configuration” -> “Users“에서), 그 외에는 viewer로 두십시오.
기본적으로 뷰어는 제한이 없는 대시보드에만 접근할 수 있습니다. 다른 대시보드에 대한 접근 권한을 부여하려면 “Configuration” -> “Teams” 페이지에서 사용자를 팀에 추가해야 합니다. 전체 Grafana 인스턴스에 대한 관리자 권한은 “Server Admin”(서버 관리) -> “Users” -> “<username>” 페이지에서 부여할 수도 있습니다. 신뢰할 수 있는 인프라 팀 구성원이 아니면 이러한 권한을 부여하지 마십시오.