MinIO¶
MinIO 성능 지표를 표시합니다. MinIO 온라인 시간, 저장 공간 분포, bucket 상세, 파일 크기 구간 분포, S3 TTFB (s) 분포, S3 트래픽, S3 요청 등을 포함합니다.
설정¶
버전 지원¶
- MinIO 버전: ALL
설명: 예시 MinIO 버전은 RELEASE.2022-06-25T15-50-16Z (commit-id=bd099f5e71d0ea511846372869bfcb280a5da2f6) 입니다
지표 수집¶
MinIO는 기본적으로 metric 을 노출하므로, Prometheus를 통해 관련 지표를 직접 수집할 수 있습니다.
minio-client(mc로 줄여 부름)를 사용해 인증 정보를 생성합니다
$ mc alias set myminio http://192.168.0.210:9000 minioadmin minioadmin
scrape_configs:
- job_name: minio-job
bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ4MTAwNzIxNDQsImlzcyI6InByb21ldGhldXMiLCJzdWIiOiJtaW5pb2FkbWluIn0.tzoJ7ifMxgx4jXfUKdD_Sq5Ll2-YlbaBu6FuNTZcc88t9o9STyg4yicRAgYmezVGFwYR2VFKvBSBnOnVnb0n4w
metrics_path: /minio/v2/metrics/cluster
scheme: http
static_configs:
- targets: ['192.168.0.210:9000']
주의
MinIO는 mc를 통해서만 token 정보를 생성할 수 있으며, prometheus 지표 수집에 사용할 수 있습니다. 여기에는 대응하는 prometheus server 생성은 포함되지 않으며, 출력 정보에는 bearer_token, metrics_path, scheme, targets가 포함됩니다. 이 정보들을 이용해 최종 url을 조합할 수 있습니다.
- DataKit 수집기를 활성화합니다
prom-minio.conf설정 파일 수정
prom-minio.conf
[[inputs.prom]]
# Exporter URLs
urls = ["http://192.168.0.210:9000/minio/v2/metrics/cluster"]
# url 요청 오류 무시
ignore_req_err = false
# 수집기 별칭
source = "minio"
metric_types = []
# 지표 보존, time line 폭주 방지
metric_name_filter = ["minio_bucket","minio_cluster","minio_node","minio_s3","minio_usage"]
# 수집 간격 "ns", "us" (or "µs"), "ms", "s", "m", "h"
interval = "1m"
# TLS 설정
tls_open = false
# tls_ca = "/tmp/ca.crt"
# tls_cert = "/tmp/peer.crt"
# tls_key = "/tmp/peer.key"
# tag 필터링, 여러 tag를 설정할 수 있음
# 일치한 tag는 무시되지만, 해당 데이터는 여전히 보고됩니다
tags_ignore = ["version","le","commit"]
# 사용자 정의 인증 방식, 현재는 Bearer Token만 지원
# token 과 token_file: 둘 중 하나만 설정하면 됨
[inputs.prom.auth]
type = "bearer_token"
token = "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ4MTAwNzIxNDQsImlzcyI6InByb21ldGhldXMiLCJzdWIiOiJtaW5pb2FkbWluIn0.tzoJ7ifMxgx4jXfUKdD_Sq5Ll2-YlbaBu6FuNTZcc88t9o9STyg4yicRAgYmezVGFwYR2VFKvBSBnOnVnb0n4w"
# token_file = "/tmp/token"
# 사용자 정의 지표 세트 이름
# prefix를 포함한 지표를 하나의 지표 세트로 묶을 수 있음
# 사용자 정의 지표 세트 이름 설정은 measurement_name 설정 항목보다 우선함
#[[inputs.prom.measurements]]
# prefix = "cpu_"
# name = "cpu"
# [[inputs.prom.measurements]]
# prefix = "mem_"
# name = "mem"
# 아래 tag와 일치하는 데이터는 수집하지 않고 버림
[inputs.prom.ignore_tag_kv_match]
# key1 = [ "val1.*", "val2.*"]
# key2 = [ "val1.*", "val2.*"]
# 데이터 pull HTTP 요청에 추가 요청 헤더를 삽입
[inputs.prom.http_headers]
# Root = "passwd"
# Michael = "1234"
# prom 데이터의 tag key 이름 변경
[inputs.prom.tags_rename]
overwrite_exist_tags = false
[inputs.prom.tags_rename.mapping]
# tag1 = "new-name-1"
# tag2 = "new-name-2"
# tag3 = "new-name-3"
# 수집한 지표를 로그로 중앙에 전송
# service 필드가 비어 있으면 service tag를 지표 세트 이름으로 설정
[inputs.prom.as_logging]
enable = false
service = "service_name"
# 사용자 정의 Tags
[inputs.prom.tags]
# some_tag = "some_value"
# more_tag = "some_other_value"
주요 파라미터 설명:
- urls:
prometheus지표 주소로, 여기에는 MinIO가 노출한 지표 url을 입력합니다 - source: 수집기 별칭이며,
minio로 쓰는 것을 권장합니다 - interval: 수집 간격
- metric_name_filter: 지표 필터링으로, 필요한 지표 항목만 수집합니다
- tls_open: TLS 설정
- metric_types: 지표 유형으로, 비워 두면 모든 지표를 수집합니다
- tags_ignore: 필요 없는 tag를 무시합니다
- [inputs.prom.auth]: 인증 정보를 설정합니다
-
token : bearer_token 값
-
DataKit 재시작
지표¶
| 지표 | 의미 |
|---|---|
| node_process_uptime_seconds | 노드 온라인 시간 |
| node_disk_free_bytes | 노드 공간 여유 크기 |
| node_disk_used_bytes | 노드 공간 사용 크기 |
| node_file_descriptor_open_total | 노드 파일 설명자 열기 횟수 |
| node_go_routine_total | 노드 go_routine 횟수 |
| cluster_disk_online_total | 클러스터 디스크 온라인 수 |
| cluster_disk_offline_total | 클러스터 디스크 오프라인 수 |
| bucket_usage_object_total | bucket 사용 중인 객체 수 |
| bucket_usage_total_bytes | bucket 사용 바이트 수 |
| bucket_objects_size_distribution | bucket 객체 크기 구간 분포 |
| s3_traffic_received_bytes | s3 수신 트래픽 |
| s3_traffic_sent_bytes | s3 송신 트래픽 |
| s3_requests_total | s3 요청 총수 |
| s3_requests_waiting_total | s3 대기 중인 요청 수 |
| s3_requests_errors_total | s3 예외 총수 |
| s3_requests_4xx_errors_total | s3 4xx 예외 수 |
| s3_time_ttfb_seconds_distribution | s3 TTFB |
| usage_last_activity_nano_seconds | 마지막 사용 활동 이후 경과 시간 |