HotFoxy
불여우의 전직 이야기
게임 서버 개발자가 되어 보죠!
전체 방문자
오늘
어제
  • 분류 전체보기 (135)
    • 연구한 이야기 (26)
      • 깊게 공부해보기 (7)
      • 문제 해결 이야기 (12)
      • 맡은 업무 이야기 (6)
    • 전직 이야기 (0)
      • 1년이라는 시간 (5)
      • 프로카데미 이야기 (5)
    • 공부한 이야기 (87)
      • 알고리즘 (7)
      • 리눅스 (11)
      • 클라우드 (24)
      • 윈도우 OS (17)
      • 윈도우 소켓 프로그래밍 (11)
      • 네트워크 (16)
      • Docker & K8S (0)
      • 기타 (1)
    • 자격증 이야기 (12)
  • MSB : Mad Square's Brawl
  • GITHUB

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HotFoxy

불여우의 전직 이야기

Prometheus + Grafana 패키징
연구한 이야기/맡은 업무 이야기

Prometheus + Grafana 패키징

2024. 1. 19. 20:16

개발 환경 모니터링용으로 구축해놓은 prometheus + grafana 시스템을,
퍼블리싱 회사로 패키징하여 전달해주는 업무를 맡았다.

문제는..! grafana에 설정한 datasource와 dashboard 가 그대로 문제없이 패키징되어야 했다.
상호간에 참조가 깨지지 않게 패키징하려면 어떤 방법을 써야 할지 좀 알아 보았다.

그 전에, 간단히 설명부터.


Prometheus

Prometheus

다양한 메트릭 지표를 수집하는 중앙 시스템이다.
임계점을 설정하면 알림을 전송해주는 시스템 또한 가지고 있다.

Pushgateway

prometheus는 다양한 메트릭 지표를 직접 pull하는데,
다양한 시스템들이 능동적으로 pushgateway 로 메트릭을 push 하게끔 할 수도 있다.
그렇다면 prometheus는 pushgateway를 pull 하면 지표들을 그대로 가져올 수 있다.

grafana

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
    '연구한 이야기/맡은 업무 이야기' 카테고리의 다른 글
    • 게임 서버 로그 처리하기
    • conan 패키지 관리자 도입하기 : 개론
    • ASTC 포맷, 어떤 점이 왜 좋을까?
    • 텍스처 압축과 ASTC
    HotFoxy
    HotFoxy
    1년 동안의 고군분투 전직 이야기! ..가 완료되어, 게임개발자로 살아남는 이야기!

    티스토리툴바