Fargate 용이라 추가로 kube-state-metrics설치
기존 각각 메트릭 가져가던것을 kube-state-metrics가 한번에 가져옴
오픈 포트
[8080/8082/8088/8090/10250]
연결 후 vmui에서 up 으로는 조회 안되니
kube_pod_status_phase{namespace="sb", phase="Running"} 로 조회 해야함
그라파나 대시보드에 기존 namespace = sp 에서 // =~ sp sb 이런식으로 변경
ㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁ
configmap.yaml 아래에 내용 추가
----
- job_name: 'kube-state-metrics'
static_configs:
- targets: ['kube-state-metrics.kube-system.svc.cluster.local:8080']
---- ---- ---- ----
yaml 생성 후 실행 하면 됩
kube-state-metrics.yaml
----
apiVersion: v1
kind: ServiceAccount
metadata:
name: kube-state-metrics
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: kube-state-metrics
rules:
- apiGroups: [""]
resources: ["configmaps", "secrets", "nodes", "pods", "services", "resourcequotas", "replicationcontrollers", "limitranges", "persistentvolumeclaims", "persistentvolumes", "namespaces", "endpoints"]
verbs: ["list", "watch"]
- apiGroups: ["apps"]
resources: ["statefulsets", "daemonsets", "deployments", "replicasets"]
verbs: ["list", "watch"]
- apiGroups: ["batch"]
resources: ["cronjobs", "jobs"]
verbs: ["list", "watch"]
- apiGroups: ["autoscaling"]
resources: ["horizontalpodautoscalers"]
verbs: ["list", "watch"]
- apiGroups: ["authentication.k8s.io"]
resources: ["tokenreviews"]
verbs: ["create"]
- apiGroups: ["authorization.k8s.io"]
resources: ["subjectaccessreviews"]
verbs: ["create"]
- apiGroups: ["policy"]
resources: ["poddisruptionbudgets"]
verbs: ["list", "watch"]
- apiGroups: ["certificates.k8s.io"]
resources: ["certificatesigningrequests"]
verbs: ["list", "watch"]
- apiGroups: ["networking.k8s.io"]
resources: ["ingresses"]
verbs: ["list", "watch"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses", "volumeattachments"]
verbs: ["list", "watch"]
- apiGroups: ["admissionregistration.k8s.io"]
resources: ["mutatingwebhookconfigurations", "validatingwebhookconfigurations"]
verbs: ["list", "watch"]
- apiGroups: ["networking.k8s.io"]
resources: ["networkpolicies"]
verbs: ["list", "watch"]
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs: ["list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kube-state-metrics
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kube-state-metrics
subjects:
- kind: ServiceAccount
name: kube-state-metrics
namespace: kube-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kube-state-metrics
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: kube-state-metrics
template:
metadata:
labels:
app.kubernetes.io/name: kube-state-metrics
spec:
serviceAccountName: kube-state-metrics
containers:
- name: kube-state-metrics
image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.1
ports:
- containerPort: 8080
name: http-metrics
- containerPort: 8081
name: telemetry
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /
port: 8081
initialDelaySeconds: 5
timeoutSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: kube-state-metrics
namespace: kube-system
labels:
app.kubernetes.io/name: kube-state-metrics
spec:
ports:
- port: 8080
targetPort: 8080
name: http-metrics
- port: 8081
targetPort: 8081
name: telemetry
selector:
app.kubernetes.io/name: kube-state-metrics
------------------------------------------
configmap.yaml 수정
apiVersion: v1
kind: ConfigMap
metadata:
name: vmagent-config
namespace: kube-system
data:
prometheus.yml: |
global:
scrape_interval: 15s
external_labels:
cluster: "eks-production"
scrape_configs:
# [A] cAdvisor: Fargate 메모리/CPU 지표를 보려면 이 job이 중요합니다.
- job_name: 'kubernetes-cadvisor'
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: true
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- role: node
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
- target_label: __metrics_path__
replacement: /metrics/cadvisor
- source_labels: [__address__]
regex: '(.*):10250'
action: replace
target_label: __address__
replacement: '${1}:10250'
- source_labels: [__meta_kubernetes_node_name]
target_label: node
- source_labels: [__meta_kubernetes_node_name]
target_label: instance
# [B] Pod 지표: 404 에러 해결 및 경로 보정
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
# 1. 수집 대상 필터링
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: 'sb;.*|.*;true'
# 2. 포트 설정 (주석 있으면 사용, 없으면 기본포트)
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
target_label: __address__
# 3. 경로 설정 (순서가 매우 중요합니다!)
# 주석(prometheus.io/path)이 있으면 그걸 먼저 씁니다.
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
# [핵심수정] 경로가 /metrics(기본값)이거나 비어있으면 /actuator/prometheus로 덮어씁니다.
- source_labels: [__metrics_path__]
action: replace
target_label: __metrics_path__
regex: '^$|/metrics'
replacement: /actuator/prometheus
# 4. 라벨 보정
- source_labels: [__meta_kubernetes_namespace]
target_label: namespace
- source_labels: [__meta_kubernetes_pod_name]
target_label: pod
- source_labels: [__meta_kubernetes_pod_name]
target_label: instance
- source_labels: [__meta_kubernetes_pod_container_name]
target_label: container
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
- job_name: 'kube-state-metrics'
static_configs:
- targets: ['kube-state-metrics.kube-systehttp://m.svc.cluster.local:8080']
'AWS > AWS_VFVG' 카테고리의 다른 글
| AWS VictoriaLogs <> Grafana 연동 (0) | 2026.01.23 |
|---|---|
| AWS VictoriaLogs EKS Pod 연동 (0) | 2026.01.23 |
| Grafan Dashboard 설정 (0) | 2026.01.21 |
| Victoria + EKS 연동 (0) | 2026.01.16 |
| AWS Terraform VFVG (0) | 2026.01.07 |