CloudNetaStudy - MinIO 실습 스터디 게시글입니다.
1. PBAC
kind k8s 실습 환경 구성 & 버킷 생성
kind create cluster --name myk8s --image kindest/node:v1.33.4 --config - <<EOF
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 30000
hostPort: 30000
- containerPort: 30001
hostPort: 30001
- containerPort: 30002
hostPort: 30002
- containerPort: 30003
hostPort: 30003
EOF
# minio-operator : https://github.com/minio/operator/blob/master/helm/operator/values.yaml
helm install --namespace minio-operator --create-namespace minio-operator minio-operator/operator --set operator.replicaCount=1
kubectl get all -n minio-operator
# tenant values : https://github.com/minio/operator/blob/master/helm/tenant/values.yaml
cat << EOF > minio-tenant-1-values.yaml
tenant:
name: tenant1
configSecret:
name: tenant1-env-configuration
accessKey: minio
secretKey: minio123
pools:
- servers: 1
name: pool-0
volumesPerServer: 4
size: 1Gi
storageClassName: standard
env:
- name: MINIO_STORAGE_CLASS_STANDARD
value: "EC:1"
- name: MINIO_PROMETHEUS_AUTH_TYPE
value: public
features:
bucketDNS: true
metrics:
enabled: true
port: 9000
protocol: http
EOF
helm install --namespace tenant1 --create-namespace --values minio-tenant-1-values.yaml tenant1 minio-operator/tenant \
&& kubectl get tenants -A -w
#
kubectl describe tenants -n tenant1
kubectl get pvc -n tenant1
kubectl describe pvc -n tenant1
kubectl get sts,pod,svc,ep,pvc,secret -n tenant1
kubectl get pod -n tenant1 -l v1.min.io/pool=pool-0 -owide
kubectl describe pod -n tenant1 -l v1.min.io/pool=pool-0
kubectl stern -n tenant1 -l v1.min.io/pool=pool-0
kubectl exec -it -n tenant1 sts/tenant1-pool-0 -c minio -- id
kubectl exec -it -n tenant1 sts/tenant1-pool-0 -c minio -- env
kubectl exec -it -n tenant1 sts/tenant1-pool-0 -c minio -- cat /tmp/minio/config.env
kubectl get secret -n tenant1 tenant1-env-configuration -o jsonpath='{.data.config\.env}' | base64 -d ; echo
kubectl get secret -n tenant1 tenant1-tls -o jsonpath='{.data.public\.crt}' | base64 -d
kubectl get secret -n tenant1 tenant1-tls -o jsonpath='{.data.public\.crt}' | base64 -d | openssl x509 -noout -text
#
kubectl patch svc -n tenant1 tenant1-console -p '{"spec": {"type": "NodePort", "ports": [{"port": 9443, "targetPort": 9443, "nodePort": 30001}]}}'
kubectl patch svc -n tenant1 minio -p '{"spec": {"type": "NodePort", "ports": [{"port": 443, "targetPort": 9000, "nodePort": 30002}]}}'
# 기본키(minio , minio123)
open "https://127.0.0.1:30001"
# mc alias
mc alias set k8s-tenant1 https://127.0.0.1:30002 minio minio123 --insecure
mc alias list
mc admin info k8s-tenant1 --insecure
# alias
MYALIAS=k8s-tenant1
mc ls $MYALIAS --recursive --insecure
# 신규 터미널 : 모니터링 -> mc cli 와 웹 브라우저에서 인가 출력 정보 비교
mc admin trace $MYALIAS --verbose --insecure
or
mc admin trace $MYALIAS --verbose --all --insecure
## mc cli 와 웹 브라우저에서 인가 출력 정보 비교
127.0.0.1:30002 Authorization: AWS4-HMAC-SHA256 Credential=minio/20250921/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=7a4a96a7cbe71edaa070c14843b89ce51fb24be3ab121a5f264bdba88b43c6e0
## mc cli 와 웹 브라우저에서 인가 출력 정보 비교
minio.tenant1.svc.cluster.local X-Amz-Security-Token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NLZXkiOiJJSThUTlQ3UVFJMURPWktSTDVFTiIsImV4cCI6MTc1ODQ3MTc4NiwicGFyZW50IjoibWluaW8ifQ.vgrUYX7HJLHpZDg4bwXwZ255AQUXuOXkg30ov8kiS05olImLLiOz-pvR6RcFDPMsq0GTDhycse36iAxxmFqONg
minio.tenant1.svc.cluster.local Authorization: AWS4-HMAC-SHA256 Credential=II8TNT7QQI1DOZKRL5EN/20250921/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=a58c10ff7b9a6507a6b09d0cd20d87abef905048bed245443c5ac768d65ab9e2
# 버킷 생성
mc mb $MYALIAS/mybucket --insecure
mc ls $MYALIAS --insecure
# object 업로드
echo hello > hello.txt
mc cp hello.txt $MYALIAS/mybucket --insecure
# 웹 콘솔에서 확인 후 trace 확인
MinIO IAM : MinIO Client 가 MinIO 사용을 위해서 인증 → 인가 필요 - Docs
- 인증 : 연결 클라이언트의 신원을 확인하는 프로세스.
- MinIO는 클라이언트 AWS Signature 버전 4 프로토콜을PUT 사용하여 인증하도록 요구합니다.
- 클라이언트는 S3 또는 MinIO 관리 API(예: , GET, 및 **DELETE**operations)에 액세스하려면 유효한 액세스 키와 비밀 키를 제시해야 합니다 .
- 인가 : 인증된 클라이언트가 배포에서 수행할 수 있는 작업 및 리소스를 제한하는 프로세스.
- ID 관리 : 내장 관리 기능 vs 외부 관리 기능
- 인증이 완료되면 MinIO는 인증된 ID가 지정된 리소스에서 작업을 수행할 *권한이* 있는지 여부에 따라 클라이언트 요청을 허용하거나 거부합니다 .
MinIO 내부 IDP* 내장된 ID 관리 기능을 제공합니다. 오픈아이디 OpenID Connect(OIDC) 호환 서비스를 통해 ID 관리를 지원합니다. MinIO 인증 플러그인 MinIO 인증 플러그인 확장을 사용하여 사용자 정의 외부 ID 관리자를 지원합니다. 액티브 디렉토리 / LDAP* Active Directory 또는 LDAP 서비스를 통해 ID 관리를 지원합니다. 액세스 관리 플러그인 MinIO 액세스 관리 플러그인 확장을 사용하여 사용자 정의 외부 액세스 관리자를 지원합니다. - 접근 관리
- MinIO는 정책 기반 접근 제어(PBAC)를 사용하여 인증된 사용자가 액세스할 수 있는 권한 있는 작업과 리소스를 정의합니다.
- MinIO는 정책 생성 및 저장을 관리합니다. 사용자 또는 그룹에 정책을 할당하는 프로세스는 구성된 ID 공급자(IDP) 에 따라 달라집니다 .
- MinIO 내부 IDP를 사용하는 MinIO 배포에서는 명령을 사용하여 사용자를 정책에 명시적으로 연결해야 합니다.
- 사용자는 자신이 속한 그룹 에 연결된 정책을 상속받을 수도 있습니다 .
- 기본적으로 MinIO는 연결되거나 상속된 정책에서 명시적으로 허용하지 않은 작업이나 리소스에 대한 액세스를 *거부합니다* .
- 명시적으로 할당되거나 상속된 정책이 없는 사용자는 S3 또는 MinIO 관리 API 작업을 수행할 수 없습니다.
- 외부 IDP를 사용하는 MinIO 배포의 경우 정책 할당은 IDP 선택에 따라 달라집니다.
- MinIO PBAC는 AWS IAM 정책 구문, 구조 및 동작과 호환되도록 설계되었습니다.
- MinIO 설명서는 IAM 관련 동작 및 기능을 최대한 자세히 다루고 있습니다.
- IAM, IAM 정책 또는 IAM JSON 구문에 대한 더 자세한 내용은 IAM 설명서 를 참조하십시오 .
MinIO ID 관리 - Docs
- 소개
- MinIO에는 핵심 ID 관리 기능을 제공하는 내장 ID 공급자(IDP)가 포함되어 있습니다.
- MinIO IDP는 클라이언트 인증을 지원하기 위해 배포 환경에서 임의의 수의 장기 사용자를 생성할 수 있도록 지원합니다.
- 각 사용자는 고유한 **액세스 키(사용자 이름)**와 해당 **비밀 키(비밀번호)**로 구성됩니다.
- 클라이언트는 기존 MinIO 사용자의 유효한 액세스 키(사용자 이름)와 해당 비밀 키(비밀번호)를 모두 지정하여 신원을 인증해야 합니다.
- 관리자는 이 명령을 사용하여 MinIO 사용자를 만들고 관리합니다.mc admin user
- MinIO는 액세스 키 생성도 지원합니다 . 액세스 키는 인증된 부모 사용자의 자식 ID이며 부모로부터 권한을 상속받습니다.
- 기본적으로 MinIO는 사용자에게 할당되거나 상속된 정책 에서 명시적으로 허용하지 않은 모든 작업이나 리소스에 대한 액세스를 거부합니다.
- 사용자에게 허용된 작업 및 리소스를 설명하는 정책을 명시적으로 할당하거나 , 관련 정책이 있는 그룹 에 사용자를 할당해야 합니다.
- 자세한 내용은 액세스 관리를 참조하세요.
- 외부 ID 관리를 활성화하면 액세스 키 생성을 제외하고 MinIO 내부 IDP가 비활성화됩니다 .
- MinIO Root 사용자
- MinIO 배포에는 구성된 ID 관리자root 와 관계없이 배포의 모든 작업과 리소스에 액세스할 수 있는 root 사용자가 있습니다
- 서버가 처음 시작되면 다음 환경 변수 값을 확인하여 사용자 자격 증명을 설정합니다
- 루트 자격 증명에는 길고 고유하며 무작위 문자열을 지정하십시오.
- 액세스 키 : 프래그래밍 방식 액세스
- MinIO **액세스 키(**이전 "서비스 계정")는 인증된 MinIO 사용자의 자식 ID이며, 외부에서 관리되는 ID도 포함됩니다.
- 각 액세스 키는 부모 사용자 또는 부모 사용자가 멤버십을 보유한 그룹에 연결된 정책 에 따라 권한을 상속받습니다 .
- 액세스 키는 부모 사용자가 사용할 수 있는 작업 및 리소스의 하위 집합에 대한 액세스를 추가로 제한하는 선택적 인라인 정책도 지원합니다.
- MinIO 사용자는 원하는 수의 액세스 키를 생성할 수 있습니다.
- 이를 통해 애플리케이션 소유자는 MinIO 관리자의 조치 없이도 애플리케이션에 대한 임의의 액세스 키를 생성할 수 있습니다.
- 생성된 액세스 키는 부모 액세스 키와 같거나 더 적은 권한을 가지므로, 관리자는 생성된 액세스 키를 세부적으로 관리할 필요 없이 최상위 부모 사용자 관리에 집중할 수 있습니다.
- 명령을 사용하여 액세스 키를 생성할 수 있습니다 mc admin user svcacct add
- 이러한 방법으로 생성된 ID는 액세스 키 또는 부모 계정을 제거할 때까지 만료되지 않습니다.
- STS API 엔드포인트를 사용하여 보안 토큰 서비스 계정을 프로그래밍 방식으로 생성할 수도 있습니다 AssumeRole.
- STS 토큰은 기본적으로 1시간 후에 만료되지만, 생성 후 최대 7일까지 만료일을 설정할 수 있습니다.
- 액세스 키를 사용하여 MinIO 콘솔에 로그인할 수는 없습니다.
- 그룹 관리 : 사용자들의 집합
- 각 그룹 에는 그룹 구성원에게 허용되거나 거부되는 작업과 리소스를 명시적으로 나열하는 하나 이상의 정책이 할당될 수 있습니다.
- 예를 들어 다음 그룹을 고려해 보겠습니다. 각 그룹에는 기본 제공 정책 또는 지원되는 정책 작업이 할당됩니다 .
- 각 그룹에는 한 명 이상의 사용자가 할당됩니다. 각 사용자의 전체 권한 집합은 명시적으로 할당된 권한 과 할당된 각 그룹에서 상속된 권한으로 구성됩니다.
- MinIO는 기본적으로 사용자에게 할당되거나 상속된 정책에서 명시적으로 허용하지 않은 모든 리소스 또는 작업에 대한 액세스를 거부합니다 .
- 그룹은 공통된 액세스 패턴과 워크로드를 가진 사용자 간의 공유 권한을 관리하는 간소화된 방법을 제공합니다.
- 클라이언트는 그룹을 ID로 사용하여 MinIO 배포에 인증 할 수 없습니다 .
접근 관리 : Policy, PBAC - Docs
- 개요
- MinIO는 정책 기반 접근 제어(PBAC)를 사용하여 인증된 사용자가 액세스할 수 있는 권한 있는 작업과 리소스를 정의합니다.
- 각 정책은 사용자 또는 사용자 그룹 의 권한을 설명하는 하나 이상의 작업 과 조건을 설명합니다.
- MinIO PBAC는 AWS IAM 정책 구문, 구조 및 동작과 호환되도록 설계되었습니다.
- MinIO 설명서는 IAM 관련 동작 및 기능을 최대한 자세히 다루고 있습니다.
- AWS IAM 관련 주제에 대한 더 자세한 내용은 IAM 설명서 를 참조하십시오.
- 태그 기반 정책 조건
- 버전 RELEASE.2022-10-02T19-29-29Z에서 변경됨: 정책은 조건을 사용하여 사용자의 액세스를 특정 태그가 있는 개체로만 제한할 수 있습니다 .
- MinIO는 선택한 작업 에 대한 정책에 태그 기반 조건문을 지원합니다 s3:ExistingObjectTag/<key>Condition
- 내장 정책
- MinIO는 사용자 또는 그룹 에 할당하기 위한 다음과 같은 기본 제공 정책을 제공합니다 .
- consoleAdmin : MinIO 배포의 모든 리소스에 대한 모든 S3 및 관리 API 작업에 대한 완전한 액세스 권한을 부여합니다.
s3:* admin:* - readonly : MinIO 배포의 모든 객체에 대한 읽기 전용 권한을 부여합니다.
s3:GetBucketLocation s3:GetObject - 예를 들어, 이 정책은 다음과 같이 특정 경로(예: )에 있는 객체에 대한 GET 작업을 특별히 지원합니다 .GET play/mybucket/object.file
- readwrite : MinIO 서버의 모든 버킷과 객체에 대한 읽기 및 쓰기 권한을 부여합니다.
s3:* - diagnostics : MinIO 배포에 대한 진단 작업을 수행할 수 있는 권한을 부여
admin:ServerTrace admin:Profiling admin:ConsoleLog admin:ServerInfo admin:TopLocksInfo admin:OBDInfo admin:BandwidthMonitor admin:Prometheus
writeonly : MinIO 배포의 모든 네임스페이스(버킷 및 객체 경로)에 쓰기 전용 권한- PUT 작업은 목록 작성 없이도 특정 객체 위치에 적용 되어야 합니다
s3:PutObject
- PUT 작업은 목록 작성 없이도 특정 객체 위치에 적용 되어야 합니다
- 정책 문서 구조
- MinIO 정책 문서는 AWS IAM 정책 문서 와 동일한 스키마를 사용합니다 .
- 다음 샘플 문서는 MinIO 배포에 사용할 사용자 지정 정책을 만드는 템플릿을 제공합니다.
- IAM 정책 요소에 대한 자세한 내용은 IAM JSON 정책 요소 참조를 참조하세요 .
- 단일 정책 문서의 최대 크기는 20KiB입니다. 사용자 또는 그룹에 첨부할 수 있는 정책 문서 수에는 제한이 없습니다.
{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "s3:<ActionName>", ... ], "Resource" : "arn:aws:s3:::*", "Condition" : { ... } }, { "Effect" : "Deny", "Action" : [ "s3:<ActionName>", ... ], "Resource" : "arn:aws:s3:::*", "Condition" : { ... } } ] }- 배열 의 경우 지원되는 S3 API 작업을Statement.Action 하나 이상 지정합니다 .
- 키 에 **Statement.Resource**정책을 제한할 버킷 또는 버킷 접두사를 지정하세요. S3 리소스 사양 에 따라 및 와일드카드 문자를 사용할 수 있습니다 .
- ?와일드 카드를 사용하면 패턴 일치* 에 따라 여러 버킷이나 접두사에 의도치 않게 정책이 적용될 수 있습니다 . 예를 들어, 는 버킷 , , 와 일치합니다 .
- 리소스 키로만 지정하면 배포의 모든 버킷과 접두사에 정책이 적용됩니다.
arn:aws:s3:::data*datadata_privatedata_internal - 키 에 대해 Statement.Condition하나 이상의 지원되는 조건을 지정할 수 있습니다 .
- 지원되는 S3 정책 작업 → 나머지는 문서 링크에서 확인
- 지원되는 S3 정책 조건 키
PBAC 정책 생성 / 삭제 실습
- 기본 정책 확인 - Docs
#
MYALIAS=k8s-tenant1
mc ls $MYALIAS --insecure
#
mc admin policy list $MYALIAS --insecure
readwrite
writeonly
consoleAdmin
diagnostics
readonly
- 신규 정책 생성 - Docs
Access Management — MinIO Object Storage (AGPLv3)
Each condition element consists of operators and condition keys. MinIO supports a subset of IAM condition keys. For complete information on any listed condition key, see the IAM Condition Element Documentation Warning The aws:Referer, aws:SourceIp, and aws
docs.min.io
#
mc admin policy info $MYALIAS readonly --insecure | jq
{
"PolicyName": "readonly",
"Policy": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
}
# 기본 정책을 정책 부분만 파일로 저장
mc admin policy info $MYALIAS readonly --insecure --policy-file new.json
#
cat new.json| jq
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
# Action 추가
vi new.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
# 정책 생성
mc admin policy create $MYALIAS readlist new.json --insecure
#
mc admin policy list $MYALIAS --insecure
mc admin policy info $MYALIAS readlist --insecure | jq
- 웹 관리 콘솔 확인
- 정책 제거
#
mc admin policy remove $MYALIAS diagnostics --insecure
... # admin trace 에 출력 정보 확인
127.0.0.1:30002 [RESPONSE] [2025-09-21T15:02:56.901] [ Duration 1.213ms TTFB 1.211833ms ↑ 93 B ↓ 303 B ]
127.0.0.1:30002 500 Internal Server Error
127.0.0.1:30002 {"Code":"InternalError","Message":"We encountered an internal error, please try again. (inbuilt policy `diagnostics` not allowed to be deleted)","Resource":"/minio/admin/v3/remove-canned-policy","RequestId":"186736EE5CE4E52F","HostId":"dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8"}
#
mc admin policy remove $MYALIAS readlist --insecure
#
mc admin policy list $MYALIAS --insecure
User 생성 후 PBAC 정책 할당 실습
- User 생성
# user 없음 확인
mc admin user list $MYALIAS --insecure
# user1 생성 : 시크릿키 mypassword
mc admin user add $MYALIAS user1 mypassword --insecure
mc admin user list $MYALIAS --insecure
enabled user1
- user1 으로 신규 웹 브라우저 창에서 로그인 후 버킷 정보 확인 시도
- user1 에 PBAC 정책 할당
#
mc admin policy list $MYALIAS --insecure
mc admin policy info $MYALIAS readwrite --insecure | jq
...
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::*"
...
mc admin policy attach $MYALIAS readwrite --user user1 --insecure
Attached Policies: [readwrite]
To User: user1
#
mc admin policy entities $MYALIAS --policy readwrite --insecure
Query time: 2025-09-20T06:21:14Z
Policy -> Entity Mappings:
Policy: readwrite
User Mappings:
user1
- 웹 콘솔에서 버킷 확인 → 객체 다운로드 및 업로드 확인
(추가) user1 자격증명으로 mc client 사용
#
mc alias list
#
mc alias set k8s-tenant1-user1 https://127.0.0.1:30002 user1 mypassword --insecure
mc alias list
# user1 자격증명 정보 확인
mc ls k8s-tenant1-user1 --recursive --insecure
mc ls k8s-tenant1-user1 --recursive --insecure --debug
...
mc: <DEBUG> GET /mybucket/?location= HTTP/1.1
Host: 127.0.0.1:30002
User-Agent: MinIO (darwin; arm64) minio-go/v7.0.90 mc/RELEASE.2025-08-13T08-35-41Z
Accept-Encoding: zstd,gzip
Authorization: AWS4-HMAC-SHA256 Credential=user1/20250923/us-east-1/s3/aws4_request,
...
Group 사용 실습 Group 에 user 할당 및 정책 부착
- Group 에 user 할당 및 정책 부착
# mc admin group list $MYALIAS --insecure # mc admin group add $MYALIAS devteam user1 --insecure mc admin group info $MYALIAS devteam --insecure Group: devteam Status: enabled Policy: Members: user1 # mc admin policy attach $MYALIAS readonly --group devteam --insecure Attached Policies: [readonly] To Group: devteam # mc admin group info $MYALIAS devteam --insecure Group: devteam Status: enabled Policy: readonly Members: user1- 관리자 로그인 웹 관리 콘솔에서 Groups 확인
- user1 은 자신의 계정에 policy(readwrite) 와 group policy(readonly) 둘 다 attach 되어 있다. 어떻게 동작하는가?
- 웹 콘솔에서 버킷 확인 → 객체 다운로드 및 업로드 확인
# mc admin user info $MYALIAS user1 --insecure AccessKey: user1 Status: enabled PolicyName: readwrite MemberOf: [devteam] # user 에 부착된 policy 해제 mc admin policy detach $MYALIAS readwrite --user user1 --insecure Detached Policies: [readwrite] From User: user1 # mc admin user info $MYALIAS user1 --insecure AccessKey: user1 Status: enabled PolicyName: MemberOf: [devteam] - 웹 콘솔에서 버킷 확인 → 객체 다운로드 및 업로드 확인
- 현재 Group 에 두 번째 정책 추가 후 동작 확인
# 참고로 3번째 줄 정책이 위 1,2 모두 포함됨 cat << EOF > s3-list.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:List*" ], "Resource": [ "arn:aws:s3:::*" ] } ] } EOF # lister 정책 생성 mc admin policy create $MYALIAS lister s3-list.json --insecure mc admin policy list $MYALIAS --insecure # devteam 그룹에 추가 부착 mc admin policy attach $MYALIAS lister --group devteam --insecure # devteam 그룹에 2개의 정책 부착 확인 mc admin group info $MYALIAS devteam --insecure Group: devteam Status: enabled Policy: lister,readonly Members: user1 - studyuser1 다시 버킷 접근 후 동작 확인 - 버킷 내에 객체 목록 확인 → upload 클릭 시도 , 메타데이터 확인 시도
- 웹 콘솔에서 버킷 확인 → 객체 다운로드 및 업로드 확인
1. Monitoring and Alerts
MinIO Monitoring and Alerts 제공 - Docs
Minio 제공 로깅 → 추가로 해당 로깅을 HTTP webhook 전달 가능
- Server logs : Server logs support general monitoring and troubleshooting of operations.
- Audit logs : Audit logging supports security standards and regulations which require detailed tracking of operations.
MinIO 제공 헬스체크
- MinIO exposes unauthenticated endpoints for probing node uptime and cluster high availability for simple healthchecks.
- These endpoints return only an HTTP status code.
- Minio 제공 메트릭/알람(Metrics/Alert) 연동 도구 - Docs
MinIO Metrics : 릴리즈 2024-07-Y 부터 Metric version 3 지원(기본 제공 그라파나 대시보드 없음), 그 이전은 version 2 지원(대시보드 있음) - Docs
- 모든 메트릭은 /minio/metrics/v3 엔드포인트를 사용.
- 예시) audit 메트릭 http://HOSTNAME:PORT**/minio/metrics/v3/**audit
- Minio 의 메트릭 수집 시 인증 필요. MINIO_PROMETHEUS_AUTH_TYPE 를 public 로 인증 끌 수 있음.
- 제공되는 메트릭 엔드포인트는 공식 문서 링크 참고 - Docs
- Version 3 Endpoints
# Cluster : health
curl -k https://127.0.0.1:30002/minio/metrics/v3/cluster/health
...
# HELP minio_cluster_health_nodes_online_count Count of online nodes in the cluster
# TYPE minio_cluster_health_nodes_online_count gauge
minio_cluster_health_nodes_online_count 1
# Cluster : erasure-set
curl -k https://127.0.0.1:30002/minio/metrics/v3/cluster/erasure-set
...
# HELP minio_cluster_erasure_set_online_drives_count Count of online drives in the erasure set in a pool
# TYPE minio_cluster_erasure_set_online_drives_count gauge
minio_cluster_erasure_set_online_drives_count{pool_id="0",set_id="0"} 4
# System : drive
curl -k https://127.0.0.1:30002/minio/metrics/v3/system/drive
...
# HELP minio_system_drive_count Count of all drives
# TYPE minio_system_drive_count gauge
minio_system_drive_count{server="127.0.0.1:9000"} 4
# System : cpu , memory , process
curl -k https://127.0.0.1:30002/minio/metrics/v3/system/cpu
curl -k https://127.0.0.1:30002/minio/metrics/v3/system/memory
curl -k https://127.0.0.1:30002/minio/metrics/v3/system/process
'Storage' 카테고리의 다른 글
| [ MinIO Study ] 7. SDK (0) | 2025.09.27 |
|---|---|
| [ MinIO study ] 6. LDAP (0) | 2025.09.27 |
| [ MinIO study ] 4. Performance & Warp (0) | 2025.09.18 |
| [ MinIO study ] 3. DirectPV (0) | 2025.09.17 |
| [ MinIO study ] 3. 실습환경 구성 & Tuning (0) | 2025.09.17 |