첫 번째로 grafana에서 대시보드가 어떻게 구성되는지를 알아야 함.

이 대시보드들의 전체 정보는 전부 JSON 형식으로 저장 되어 있다.
그리고 그 안에 있는 panel 정보도 다 JSON 형식으로 저장되어 있다.
그리고 웹 브라우저는 그 json을 파싱해서 데이터소스랑 통신해서 웹에 그려준다.
그 말인 즉, 똑같은 json 파일만 있으면 어디서 그라파나를 쓰던지 똑같은 형식의 화면을 표시할 수 있다는 뜻.
json 설정만 export, import 하면 쉽게 대시보드, 판넬을 공유해서 재사용성을 높일 수 있다.
그래서 그라파나에서 공식홈페이지에 여러 사람들이 자신이 만든 대시보드를 공유해 두었다.
그 중에 대표적으로 Node Exporter Full 이라는 사이트가 있다.
Node Monitoring Full 은 Node exporter 를 사용한다면 바로 사용할 수 있는 대시보드이다. 이것을 기반으로 학습하면 prometheus metric 과 PromQL, Grafana를 이용한 모니터링 방식을 잘 학습할 수있다.
마찬가지로 다른 유용한 템플릿 기반으로 공부하고 응용하는 것도 좋다.
이 친구를 갖다 쓰려면 우선은 job_name 을 node 라고 해서 노출을 해야한다.
- job_name: node
static_configs:
- targets: ['localhost:9100']

사이트에 들어가서

copy id to clipboard 버튼 클릭한다.

대시보드로 돌아가 import

아까 복사한 ID 붙여넣기, load 클릭

data source 를 꼭 설정을 해줘야 한다.
import 클릭.

last 1 hour 로 바꿔서 봐보자.

Dashboard 가 만들어지면 꼭 save 한다.

우측 상단 Dashboard setting 에 들어가보자.

job : node 라고 미리 정해져 있다.

qeury 설명
label_values: 프로메테우스 쿼리인데 이 쿼리로 label:job 의 변수에 해당하는 값을 가져오라는 설정으로
lable 값을 가져오는데,node_uname_info라는 매트릭이 있는데 거기에job이라는 lable 의 value를 가져와서 맨 위 Name(job 이라는 변수) 에 값으로 할당해줘. 라는 것
node_uname_info 를 보면
localhost:9100에 떠서 수집되고 있는데, 이 친구의 job 의 value,node가
label_values() 에 나오는 것.
node :
아까 드롭다운 job : node선택하자마자 Host 가 자동으로 선택이 되었다.
어떻게 그렇게 할 수 있었을까? 그것도 수식으로 만들어놓은 게 있다.


node의 Query를 살펴보면, 또 label_values() 를 썼는데,
node_uname_info 의 job이 $job(아까 드롭다운 선택한 job)의 변수의 값이 여기 들어오면 그 대상에 대해서 instance를 가져오라는 것이고,
instance는 여러 개 있을 수 있어서 인스턴스가 여러 개 나온다. 그게, node에 해당하는 값이 될 수 있다~
diskdevices

variable type을 custom으로 해 두었다.
Custom option
diskdevice 에 들어가는 태그 값들을 Regex 표현으로 해 놓은 것에 해당하는 글자들이 들어올 수 있다는 것.
이렇게 Variable로 선언을 해두었다면 다른 쿼리들을 수정할 때 변수로 사용할 수 있다.
대시보드 화면에서 Dashboard Settings > Variables 에서 확인
변수의 선언을 정적인 변수뿐만 아니라 promQL을 이용한 변수, regex, key-value map 등의 동적인 변수로 설정할 수 있다.
mykey1 : myvalue1, mykey2 : myvalue2 로 선언선언한 변수를 이용해서 Dashboard 상단에서 select box를 만들 수 있다.
각 대시보드에서 정해진 변수는, 속한 Panel 의 PromQL 또는 Title 세팅 등에서 $variable_name 과 같은 형식으로 불러올 수 있다.
$라고 적으면 변수를 쓸 수 있다는 것.
변수 중 언더바 두 개로 시작하는 것 들은 그라파나 시스템에서 미리 정의된 변수를
쓸 때 언더 바 두개를 적고사용한다.
$__intervalinterval 은 데이터를 얼마나 촘촘히 표현할 것인지를 설정하는 값이다. 데이터가 더 촘촘히 있더라도, interval 만큼의 간격을 띄워서 표시된다.
$__interval 은 각 panel 의 query option 에서 설정된다.
$__rate_interval$__rate_interval 은 rate() 쿼리를 사용할 때 들어가는 range vector 의 값을 자동화된 변수로 사용할 수 있도록 도입된 예약 변수이다.
The $__rate_interval variable is [...] defined as max( $__interval + Scrape interval, 4 * Scrape interval).
메트릭 내용에 대한 설명은 영상 강의 위주로 진행합니다.
total: node_memory_MemTotal_bytes
used: node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes - node_memory_SReclaimable_bytes
shared: node_memory_Shmem_bytes
free: node_memory_MemFree_bytes
buff/cache: node_memory_Buffers_bytes + node_memory_Cached_bytes + node_memory_SReclaimable_bytes
available: node_memory_MemAvailable_bytes
while true; do foo;done