prometheus(with: docker)

kiyeon·2022년 12월 27일
0

순서

  1. prometheus docker-compose install
  2. prometheus configfile example
  3. node-exporter docker-compose install
  4. prometheus 기본 사용법

Prometheus

옵션
--config.file
설정 파일 경로
--storage.tsdb.path
데이터베이스 경로 기본값 /data
--tsdb.retention.time
데이터 보관기간, 기본값은 15일
--tsdb.retention.size=1TB
유지할 스토리지 블록의 최대 바이트 수 오랜된 테이터부터 제거 기본값 0 또는 disable
--storage.tsdb.wal-compression

--web.enable-lifecycle
HTTP 통신을 통한 Prometheus reload 및 shutdown 활성화


version: '3.8'
services:
  prometheus:
    container_name: prom
    image: prom/prometheus:latest
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--storage.tsdb.retention.time=1h'
      - '--storage.tsdb.retention.size=1TB'
      - '--storage.tsdb.wal-compression'
      - '--web.enable-lifecycle'
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
      - '--web.console.templates=/usr/share/prometheus/consoles'

    volumes:
      - /home/centos/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml
      - /home/centos/prometheus/rules:/etc/prometheus/rules
    ports:
      - "9090:9090"

    networks:
     - monitoring

networks:
    monitoring:
      external: true

prometheus(configfile)

global:
  scrape_interval:     15s
  scrape_timeout:      10s
  evaluation_interval: 1m
  external_labels:
    monitor: 'dev-prometheus'
  query_log_file: /etc/prometheus/query.log

rule_files:
  # - /etc/promethes/rules/*.yml

alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093
---

scrape_configs:
  - job_name: prometheus
    scrape_interval: 15s
    metrics_path: /metrics
    static_configs:
      - targets: ['43.206.151.68:9090']

node-exporter

version: 3.8
services:
  node-exporter:
    container_name: node-exporter
    image: prom/node-exporter:latest
    ports:
      - "9101:9100"
    networks:
      - monitoring
networks:
  monitoring:
    external: true

기타
prometheus config file syntax check

  • promtool check config prometheus.yml

prometheus config file syntax check

  • promtool check rules alters.yml

prometheus service reload

vim과 같은 일부 편집기를 사용하는 경우 파일을 저장할 때 파일을 직접 저장하지 않고 새 파일을 만들어 제자리에 복사합니다
이는 inode를 기반으로 하는 바인트 마운트를 중단합니다. 이에 vim 으로 prometheus.yml 수정 시 적용인 안된다
해결책: 상위 폴더로 마운트 진행하던지 컨테이너 재시작 후 nano 로 수정하면 정상적으로 변경되는것을 확인할수 있다.

example:
/home/centos/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml #파일 업테이트가 안됨
/home/centos/prometheus/config:/etc/prometheus #상위폴더 마운트시 업데이트 반영

Prometheus 기본 설명

prometheus metric
process_cpu_seconds_total{instance="localhost:9090", job="promethus"} 1.09
[metric name]{ label key=label value }[metric value(scalar)]
prometheus expression language

  • sample

    데이터 하나를 sample 이라고 한다.

  • instance vector

    동일 시간대에 수집한 sample 데이터를 instance vector 라고한다.

  • range vector

시간 대역에 값을 가져올때 여러 scalar값을 range vector 라고한다


PromQL

instant vector selector
primetheus_http_requests_total{code=~.*"}
특정 instant filter 사용이 가능하다.

range vector selector
primetheus_http_requests_total[10m]
특정 시간을 지정하여 해당 시간만큼 메트릭을 가져온다.

Offset
primetheus_http_requests_total offset 1m
현 시점에서 해당 시간 전 데이터를 가져온다.

PromQL2

CPU
avg without(cpu)(rate(node_cpu_seconds_total[1m]))
filesystem
diskstats
rate(node_disk_io_seconds_total[1m])
I/O가 진행중일 때 증가됨
다음과 같이 읽기 평균시간: 계산 읽기 I/O 걸린 시간 / 완료 I/O의 개수

rate(node_disk_read_time_seconds_total[1m]) /
rate(node_disk_reads_completed_total[1m])

netdev
node_network_receice_packets_total
node_network_transmit_packets_total

meminfo

prometheus alerts

prometheus alerts configfile

groups:
  - name: altert
    interval: 10s
    limit: 0
    rules:
      - alert: alerts:process_cpu_seconds_total:10
        expr: process_cpu_seconds_total > 1
        for: 5s
        labels:
          altert: test
          serverity: critical
        annotations:
          summary: "process_cpu_seconds_total: {{ $value }}"
          description: "process_cpu_seconds_total: {{ $value }}"

0개의 댓글