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 = []
# メトリクスを保持して、タイムラインの爆発を防ぐ
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 は無視されるが、対応するデータは引き続き送信される
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 を含むメトリクスを 1 つのメトリクスセットとしてまとめられる
# カスタムメトリクスセット名の設定は 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.*"]
# データ取得時の 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 を無視します
-
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 | 最後の使用アクティビティからの経過時間 |