Grafana+prometheus 학습 노트

7055 단어
데이터 모니터링 노트
Prometheus
상용 함수
sum () 괄호 안의 지표 값을 합치다
count () 괄호 안의 지표를 총수로 구합니다
increase() 증가
rate () 는 특정 시간 시퀀스 범위 내의 초당 평균 성장률을 계산한다
irate () 는 일정 시간 범위 내의 어느 순간의 초당 성장률을 계산하는 것을 가리킨다
count_scalar () 값은 시간 시퀀스 벡터의 원소 개수를 표량으로 되돌려줍니다
instance
Prometheus의 경우,pull 샘플링 포인트를 끌어내는 단점 서비스를 instance라고 부른다
Prometheus가 대상을 잡아당기면 다음과 같은 메트릭 이름의 레이블 목록에 두 개의 레이블이 자동으로 추가됩니다.
  • job: 대상이 속한 설정 작업 이름api-server입니다.
  • instance: 샘플링 지점이 있는 서비스: host:port
  • up{instance="[instance-id]",job="[job-name]"}
    up =1,           ;  ,    ,       
    
    scrape_duration_seconds{instance="instance-id",job="job-name"}
                  
    
    scrape_samples_post_metric_relabeling{instance="instance-id",job="job-name"}
                ,             
    
    scrape_samples_scraped{instance="instance-id",job="job-name"}
                   
    
    

    표현식 언어 데이터 형식
  • instant vector 순간 벡터 - 같은 시간에 캡처한 모든 도량 지표 데이터를 가리킨다.이러한 도량 지표 데이터의 키는 모두 같고, 즉 같은 시간 스탬프이다.
  • range vector 범위 벡터 - 어느 시간 범위 내에서 캡처한 모든 도량 지표 데이터
  • 를 가리킨다
  • scalar표량 - 간단한 부동점 값
  • strring 문자열 - 현재 사용되지 않은 간단한 문자열
  • 탭 일치 조작부호
  • =: 레이블에 지정된 값과 정확히 일치
  • != : 주어진 탭 값과 같지 않음
  • =~: 정규 표현식이 주어진 탭 값에 일치
  • != : 주어진 탭 값이 정규 표현식에 맞지 않습니다
  • 범위 벡터 선택기
  • s-seconds(초)
  • m-minutes(분)
  • h-hours(시간)
  • d-days(일)
  • w-weeks(주)
  • y-years(년)
  • 예.
    선택 후 5분 동안 메트릭 지표 이름은 httprequests_total, 탭은job="prometheus"시간 시퀀스 데이터
    http_requests_total{job="prometheus"}[5m]
    

    오프셋 수정자offset 편향 수식자는 검색에서 단일 순간 벡터와 범위 벡터의 시간 편향을 변경할 수 있습니다
    현재 시간의 5분 전과 비교하면 도량 지표 이름은 nodecpu_seconds_total의 시간 시퀀스 데이터
    sum(node_cpu_seconds_total{mode="idle"} offset 5m)
    

    지표 임계값 규정
    하드웨어 지표 임계값 설정
    CPU
    경고:90 경고:98
    디스크
    경고: 90 경고: 95
    메모리
    경고:90 경고:98
    prometheus 경보 규칙 템플릿
    groups:
    	- name: #        
    	rules:
    	- alert: #  job   ,  1  metrices       alertmanager    
    	expr: #promQL
    	for: 1m #    ,             ,      
    	labels:
    		serverity:page #      
    	annotations:
    		summary: #     
    		description:#       
    

    SQL
    호스트 IP 찾기
    label_values(node_exporter_build_info,instance)
    

    필터 포트의 정규 표현식/([^:]+):.*/
    메모리 사용률
    (1 - (node_memory_MemAvailable_bytes{instance=~"$node:9100"} / (node_memory_MemTotal_bytes{instance=~"$node:9100"})))* 100
    

    CPU 코어 수
    count(count(node_cpu_seconds_total{instance=~"$node:9100", mode='system'}) by (cpu))
    

    CPU 사용량(5m)
    100 - (avg(irate(node_cpu_seconds_total{instance=~"$node",mode="idle"}[5m])) * 100)
    

    CPU 로드율
    node_load1{instance=~"$node:9100"}/ count by(job, instance)(count by(job, instance, cpu)(node_cpu_seconds_total{instance=~"$node:9100"}))
    

    node_load1: 1분 동안 cpu의 평균 부하를 가리키며, 같은 cpuload5는 5분 동안 cpu의 평균 부하를 가리키며, cpuload15는 15분 동안 cpu의 평균 부하를 가리킨다
    총 메모리
    node_memory_MemTotal_bytes{instance=~"$node:9100"}
    

    서버 실행 시간
    time() - node_boot_time_seconds{instance=~"$node:9100"}
    

    메모리 사용
    총 메모리
    node_memory_MemTotal_bytes{instance=~"$node:9100"}
    

    사용된 메모리(총 메모리-유휴 메모리-캐시=사용된 메모리)
    node_memory_MemTotal_bytes{instance=~"$node:9100"} - node_memory_MemFree_bytes{instance=~"$node:9100"} - node_memory_Cached_bytes{instance=~"$node:9100"} - node_memory_Buffers_bytes{instance=~"$node:9100"} - node_memory_Slab_bytes{instance=~"$node:9100"}
    

    사용 가능한 메모리
    node_memory_MemAvailable_bytes{instance=~"$node:9100"}
    

    Buffers 캐시
    node_memory_Buffers_bytes{instance=~"$node:9100"}
    

    Cached 캐시
    node_memory_Cached_bytes{instance=~"$node:9100"} + node_memory_Slab_bytes{instance=~"$node:9100"}
    

    Free 유휴 메모리
    node_memory_MemFree_bytes{instance=~"$node:9100"}
    

    네트워크 사용 현황
    업로드 속도:
    irate(node_network_transmit_bytes_total{instance=~'$node:9100',device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])*8
    

    다운로드 속도:
    irate(node_network_receive_bytes_total{instance=~'$node:9100',device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])*8
    

    Swap 하드 드라이브 스왑
    Swap In:
    node_vmstat_pswpin{instance=~"$node:9100"}
    

    Swap out:
    node_vmstat_pswpout{instance=~"$node:9100"}
    

    현재 열려 있는 파일 설명자
    node_filefd_allocated{instance=~"$node:9100"}
    

    루트 파티션 사용률
    100 - ((node_filesystem_avail_bytes{instance=~"$node:9100",mountpoint="/",fstype=~"ext4|xfs"} * 100) / node_filesystem_size_bytes {instance=~"$node:9100",mountpoint="/",fstype=~"ext4|xfs"})
    

    최대 파티션 사용률
    100 - ((node_filesystem_avail_bytes{instance=~"$node:9100",mountpoint="$maxmount",fstype=~"ext4|xfs"} * 100) / node_filesystem_size_bytes {instance=~"$node:9100",mountpoint="$maxmount",fstype=~"ext4|xfs"})
    

    시스템 평균 부하
    1분
    node_load1{instance=~"$node:9100"}
    

    5분
    node_load5{instance=~"$node:9100"}
    

    15분
    node_load15{instance=~"$node:9100"}
    

    총 디스크 공간
    node_filesystem_size_bytes {instance=~"$node:9100",fstype=~"ext4|xfs"}
    

    파티션별 여유 공간
    node_filesystem_avail_bytes {instance=~'$node',fstype=~"ext4|xfs"}
    
    node_filesystem_size_bytes{instance=~'$node',fstype=~"ext4|xfs"}
    
    1-(node_filesystem_free_bytes{instance=~'$node',fstype=~"ext4|xfs"} / node_filesystem_size_bytes{instance=~'$node',fstype=~"ext4|xfs"})
    

    CPU 사용량, 초당 디스크 I/O 작업 소요 시간(%)
    avg(irate(node_cpu_seconds_total{instance=~"$node:9100",mode="system"}[5m])) by (instance)
    
    avg(irate(node_cpu_seconds_total{instance=~"$node:9100",mode="user"}[5m])) by (instance)
    
    avg(irate(node_cpu_seconds_total{instance=~"$node:9100",mode="idle"}[5m])) by (instance)
    
    avg(irate(node_cpu_seconds_total{instance=~"$node:9100",mode="iowait"}[5m])) by (instance)
    
    irate(node_disk_io_time_seconds_total{instance=~"$node:9100"}[5m])
    

    좋은 웹페이지 즐겨찾기