옵션
--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
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']
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
prometheus config file syntax check
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 metric
process_cpu_seconds_total{instance="localhost:9090", job="promethus"} 1.09
[metric name]{ label key=label value }[metric value(scalar)]
prometheus expression language
시간 대역에 값을 가져올때 여러 scalar값을 range vector 라고한다
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
현 시점에서 해당 시간 전 데이터를 가져온다.
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 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 }}"