개발 환경 모니터링용으로 구축해놓은 prometheus + grafana 시스템을,
퍼블리싱 회사로 패키징하여 전달해주는 업무를 맡았다.
문제는..! grafana에 설정한 datasource와 dashboard 가 그대로 문제없이 패키징되어야 했다.
상호간에 참조가 깨지지 않게 패키징하려면 어떤 방법을 써야 할지 좀 알아 보았다.
그 전에, 간단히 설명부터.
Prometheus
다양한 메트릭 지표를 수집하는 중앙 시스템이다.
임계점을 설정하면 알림을 전송해주는 시스템 또한 가지고 있다.
Pushgateway
prometheus는 다양한 메트릭 지표를 직접 pull하는데,
다양한 시스템들이 능동적으로 pushgateway 로 메트릭을 push 하게끔 할 수도 있다.
그렇다면 prometheus는 pushgateway를 pull 하면 지표들을 그대로 가져올 수 있다.
Grafana
여러 데이터들 (Prometheus, dbms, log 등등) 을 시각화해주는 시스템이다.
수많은 형태의 그래프들로 표현할 수 있고, 다양한 수식과 세부 설정이 가능하다.
이들을 모두 도커를 통해 사용하고, docker compose yml을 통해 묶어서 관리하고 있는 상태이다.
grafana 패키징 : 프로비저닝 사용
grafana에서는, 최초 grafana 로드 시 지정한 설정값과 초기값들을 불러들일 수 있게끔,
프로비저닝 설정 시스템을 지원한다.
Provision Grafana | Grafana documentation
datasource 프로비저닝
grafana에서 datasource를 등록하면, 고유한 uid 로 관리되게 된다.
아래처럼 프로비저닝 파일을 준비해 두면, 자동으로 localhost:9090 을 prometheus-datasource uid 로 추가한다.
apiVersion: 1
deleteDatasources:
- name: Prometheus
orgId: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
orgId: 1
url: http://localhost:9090
basicAuth: false
isDefault: true
editable: true
uid: prometheus-datasource
dashboard 프로비저닝
grafana에서 dashboard를 프로비저닝하기 위해서는, 프로비저닝 설정 파일과, 대시보드 json 파일이 필요하다.
apiVersion: 1
providers:
- name: 'default'
orgId: 1
folder: ''
folderUid: ''
type: file
disableDeletion: false
editable: true
allowUiUpdates: true
options:
path: /var/lib/grafana/dashboards
위 코드에서 볼 수 있다시피, /var/lib/grafana/dashboard 에 위치한 대시보드들을 불러오게 된다.
이는 docker compose 를 통해 마운트된 호스트 폴더 내부 경로일 것이므로 (위 docker-compose.yml 참고),
해당 위치에 다양한 dashboard json 파일을 준비해 두면 된다.
단, 대시보드 json 파일을 export 할 때 주의해야 할 점이 있다.
프로비저닝을 위해서는, 대시보드 export 기능을 사용하면 안된다.
대시보드 export 에서 external share 옵션을 키던 끄던, 그렇게 만들어진 json은 프로비저닝용으로 사용할 수 없다.
따라서, 대시보드 설정에 들어간 뒤, raw json 보기를 눌렀을 때 나오는 json을 사용해야 한다.
해당 json 내에서 datasource가 만약 프로비저닝에서 쓰일 datasource uid와 다르다면, 일괄 변경해주고 저장하자.
위 모든 절차를 마치게 되면, grafana 가 최초 로드 시, datasource를 자동 등록하고, dashboard 도 자동 로드하게 된다.
'연구한 이야기 > 맡은 업무 이야기' 카테고리의 다른 글
드로우콜을 낮춰보자 (0) | 2024.09.01 |
---|---|
게임 서버 로그 처리하기 (0) | 2024.04.14 |
conan 패키지 관리자 도입하기 : 개론 (1) | 2024.02.04 |
ASTC 포맷, 어떤 점이 왜 좋을까? (0) | 2024.01.28 |
텍스처 압축과 ASTC (3) | 2024.01.14 |