이전 게시글
4. Jaeger 체크
Jaeger가 열려있는 포트를 타고 들어가서 확인을 하면, 위와 같이 데이터를 확인할 수 있다.
이제 Grafana의 설정만 진행하면 된다.
5. Grafana 설정
5-1. Prometheus Connection
수집된 데이터를 기반으로 Grafana를 통해 두 개의 데이터를 종합한 대시보드를 만들어 확인해본다.
Connections > Data sources 에 들어가서 우측 상단에 있는 ‘Add new data source’를 누른다.
보통 버튼을 누르면 나오는 화면의 최상단에 Prometheus가 노출되지만, 없다면 직접 검색해서 선택해준다.
먼저 Prometheus에 대한 Connection을 시도한다.
Name : 구별할 수 있는 서비스 네임을 지정하면 된다.
Connection : docker-compose에서 등록해준 서비스 명과 포트를 등록한다.
나머지 설정은 본인의 서비스에 맞게 설정을 하면 된다.
설정이 완료되었다면 설정 페이지 최하단에 있는 Save & test 버튼을 누른다.
위와 같은 화면이 노출이 된다면 정상적으로 설정이 된 것이다.
5-2. Jaeger Connection
Prometheus에 대한 Connection을 지정하는 방법과 똑같다.
Jaeger를 찾아서 선택해준다.
Name : 구별할 수 있는 서비스 네임을 지정하면 된다.
Connection : docker-compose에서 등록해준 서비스 명과 포트를 등록한다.
설정 이후 Save & test 버튼을 눌러 결과를 확인해주면 끝이다.
5-3. Grafana 대시보드 작업
좌측 탭 Dashboards를 타고 들어가서 새로운 대시보드를 생성해준다.
Add visualization을 눌러준다.
위에서 생성했던 Data Source 리스트를 확인할 수 있다. 원하는 데이터를 선택해준다.
선택을 하게 되면 위와 같은 화면이 나온다.
복잡한 화면에 당황스럽겠지만, 쉬운부분만 일단 설정해보자.
1. 여러가지 Query type을 설정할 수 있는데, 타입별로 차이가 있다.
Search | TraceID | Dependency graph | |
특징 | 가장 일반적인 쿼리 방식으로, 시간 범위 내의 모든 트레이스 데이터를 검색하는 방법이다. | 특정 트레이스에 대한 고유한 식별자인 TraceID를 이용해 직접 조회하는 방법이다. | 여러 서비스 간의 종속성과 흐름을 시각적으로 보여주는 그래프 형태의 쿼리이다. |
장점 | 빠르게 모든 트레이스 조회가능. 디버깅 시 전체 데이터 확인 용이 | 원하는 트레이스 데이터를 바로 찾을 수 있어 빠른 디버깅 가능. | 서비스간의 호출 관계 파악 가능. 서비스간 성능 병목 지점 발견 용이. |
단점 | 데이터 양이 많으면 과부하 발생 가능성. 특정 트레이스를 찾기 어려움. | 특정 TraceID를 알고 있어야만 사용 가능. | 개별 트랜잭션에 대한 정보는 없기 때문에, 세부적인 디버깅에는 좋지 못함. |
예시 쿼리 | serviceName: "api-service" AND operationName: "/login” | traceID: "7a1d9082de5a4e39b2b3ff78d6bc48f6” |
설정이 잘 되었는지 직관적으로 확인하기에는 첫 번째 Query type인 Search가 좋다.
1번은 Search로 선택해준다.
2. 표출하기 원하는 Service를 선택하면 된다 .NET Core 미들웨어에서 설정했던 서비스 이름이 포함되어 있다.
3. 2번과 마찬가지로 표출하기 원하는 것을 선택하면 된다.
4. Panel에 대한 제목을 작성한다.
5. 새로고침을 누르면 가장 최근에 수집된 데이터를 확인할 수 있다.
1 ~ 5번의 작성이 완료되었다면, 우측 상단에 있는 ‘Apply’ 혹은 ‘Save’ 버튼을 눌러 진행된 내용을 저장한다.
그렇다면 위와 같이 Trace 데이터를 확인할 수 있다.
현재 Dashboards에는 방금 생성한 Panel 한 개만 있다. 이제 Prometheus를 추가해 대시보드에 두 개의 Panel을 표출해보자.
Dashboards에서 우측 상단에 Add > Visualization을 누른다.
Data source에 위에서 추가했던 Prometheus를 추가해준다.
Prometheus는 직접 Query를 날리거나 생성되어있는 쿼리를 선택해 날리는 방법이 있는데, 이번에는 생성되어있는 쿼리를 선택해서 Metric을 뽑아보자.
Prometheus Query에 대한 기본적인 예제는 여기를 참고하자.
호출할 Metric을 선택했다면, 하단에 있는 Legend에 선택 값을 Auto → Custom으로 변경 후 원하는 이름으로 변경해준다.
Panel 하단에서 Metric을 구분할 수 있는 이름을 직접 지정하게 된 것이다.
이후는 Jaeger에서 진행했던 방법과 같다.
Panel Title의 이름을 변경한뒤 적용을 하면 끝이다.
추가적으로 표출되는 그래프를 변경하는 방법도 있다.
우측 상단에 셀렉박스를 누르면 원하는 그래프를 선택하면 된다.
실시간으로 CPU, 메모리 수치를 확인하고 싶다면
위와 같은 ‘Gauge’ 그래프도 좋은 것 같다.
여기까지 .NET Core 앱에서 수집한 데이터를 Grafana를 통해 시각화 하는 과정까지 알아보았다.
다음에는 Grafana에서 좀 더 고도화된 시각화를 위한 작업을 진행해보겠다.
'IT > .NET' 카테고리의 다른 글
[.NET] - 서버 모니터링 및 데이터 시각화(Prometheus, Jaeger, Grafana) 구현 - 1 (0) | 2024.12.13 |
---|