반응형
metricbeat
metricbeat란?
Elastic Stack의 일부인 오프소스 데이터 수집 에이전트로,
System 및 Service Metrics를 수집하는데 사용됨.
수집하는 metrics 계층
= System, Service Metrics
metricbeat는 다양한 module을 제공하고 있어서
system metrics 뿐만 아니라 다양한 Service Metrics도 수집할 수 있는 장점을 가지고 있음.
[모듈 정보 list]
수집하는 metrics 정보 확인 링크
[system module 이 수집하는 metrics 정보]
[kubernetes module 이 수집하는 metrics 정보]
수집한 metrics 정보를 전달하는 방식
= push 방식
metricbeat는 수집한 metrics정보를 특정 plugin으로 전달할 수 있음.
주로 Elastic Stack 관련 제품으로 보낼 수 있음.
관련 설정
metricbeat 설정 파일 : /etc/metricbeat/metricbeat.yml
output."module 이름" 으로 설정 가능
예제로 file 형식으로 push하고 싶다면 아래와 같이 설정할 수 있음.
output.file:
path: "/etc/metricbeat"
filename: "iksoon_test"
전달 가능 대상
-
Elasticsearch Service
-
Elasticsearch
-
Logstash
-
Kafka
-
Redis
-
File
-
Console
[output module 목록 참고]
metricbeat은 추가되는 모듈에 따라 스레드가 추가될까?
직접 확인 cpu, memory, diskio 등 8개의 module을 추가하고 아래 명령으로 스레드 확인
pstree -hp "metricbeat pid"
ex) pstree -hp 2575026
확인 결과 동일하게 8개가 조회됨
metricbeat에서 fields 지정하는 방법
아래와 같이 metricbeat.yaml 파일에서 설정 가능
tags, fields 를 지정하여 설정 가능.
수집한 정보는 아래와 같이 확인할 수 있음.
metricbeat에서 kubernetes 지표 정보 수집이 가능한가?
결론
kubernetes 모듈을 사용하여 kubernetes 지표 정보 수집 가능.
metricbeat에서 worker node kubelet 접근 방법 확인
metricbeat에서 kubernetes module 사용 시
kubelet에 포함되어있는 cAdvisor로 부터 지표 정보를 가져옴.
이때 kubelet에 접속하는 방법은 2가지로 token, key 방법이 있음.
metricbeat에서 worker node kubelet 접근 방법 (token)
1. SA 생성
apiVersion: v1
kind: ServiceAccount
metadata:
name: metricbeat
namespace: kube-system
labels:
k8s-app: metricbeat
2. ClusterRole 생성
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: metricbeat
labels:
k8s-app: metricbeat
rules:
- apiGroups: [""]
resources:
- nodes
- namespaces
- events
- pods
verbs: ["get", "list", "watch"]
- apiGroups: ["batch"]
resources:
- jobs
verbs: ["get", "list", "watch"]
- apiGroups: ["extensions"]
resources:
- replicasets
verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
resources:
- statefulsets
- deployments
verbs: ["get", "list", "watch"]
- apiGroups:
- ""
resources:
- nodes/stats
- nodes/metrics
verbs:
- get
- nonResourceURLs:
- /metrics
verbs:
- get
3. ClusterRoleBinding 생성
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: metricbeat
subjects:
- kind: ServiceAccount
name: metricbeat
namespace: kube-system
roleRef:
kind: ClusterRole
name: metricbeat
apiGroup: rbac.authorization.k8s.io
4. 1.24 버전 이상의 경우 SA 생성 시 secret token이 자동 생성 되지 않아서 수동 생성이 필요함
apiVersion: v1
kind: Secret
metadata:
name: metricbeat
namespace: kube-system
annotations:
kubernetes.io/service-account.name: metricbeat
type: kubernetes.io/service-account-token
5. SA 토큰 가져오기
- module: kubernetes
metricsets:
- container
- node
- pod
- system
- volume
period: 30s
hosts: ["https://iksoon-cidr-default-worker-node-0.novalocal:10250"]
bearer_token_file: /etc/metricbeat/token
ssl.certificate_authorities:
- /etc/kubernetes/pki/ca.crt
일반적으로 metricbeat을 kubernetes에 배포 시 Daemonset으로 배포함.
배포 할 때 serviceaccount 생성 후
serviceaccount의 secret token 경로를 명시함.
6. kubelet API 호출
curl -Ssk --header "Authorization: Bearer ${TOKEN}" https://localhost:10250/metrics/cadvisor
metricbeat에서 worker node kubelet 접근 방법 (키 사용)
(kubelet API 호출)
kube-admin으로 생성된 클러스터의 경우 아래와 같이 "apiserver-kubelet-client.key, crt"을 사용함.
curl https://localhost:10250/metrics -k --cert "키파일 경로" --key "키파일 경로"
metricbeat의 kubernetes module에서 사용법
worker node 에서 진행
/etc/metricbeat/modules.d/kubernetes.yml
"ssl.certificate:", "ssl.key:", "ssl.certificate_authorities:" 옵션 사용.
- module: kubernetes
metricsets:
- node
- system
- pod
- container
- volume
period: 30s
hosts: ["https://iksoon-cidr-default-worker-node-0.novalocal:10250"]
ssl.certificate: 키파일 경로
ssl.key: 키 파일 경로
ssl.certificate_authorities:
- 키 파일 경로
/etc/metricbeat/metricbeat.yml
output.file:
path: "/etc/metricbeat"
filename: "iksoon_test"
반응형
'Kubernetes > Monitoring' 카테고리의 다른 글
kubernetes 모니터링 : process-exporter 란? (0) | 2024.09.22 |
---|---|
metricbeat container 실행 방법 (0) | 2024.09.22 |
Kubernetes 모니터링 : kube-state-metrics 란? (0) | 2024.09.05 |
cAdvisor container로 배포 해서 확인 하는 방법(storage driver = Kafka) (1) | 2024.09.05 |
kubernetes 모니터링 : cAdvisor 란? (cAdvisor분석 version2) (0) | 2024.09.05 |