Prometheus-Operator에 사용자 정의 모니터링 항목 추가, etcd 클러스터 모니터링
6388 단어 KubernetesPrometheus
사용자 정의 모니터링 항목 프로세스 추가
etcd 인증서 구성
etcd 시작 시 인증서 경로 보기kubectl get po -n kube-system
...
etcd-k8s-master 1/1 Running 1 6h28m
...
kubectl get po etcd-k8s-master -n kube-system -o yaml
...
spec:
containers:
- command:
- etcd
- --advertise-client-urls=https://192.168.229.134:2379
- --cert-file=/etc/kubernetes/pki/etcd/server.crt
- --client-cert-auth=true
- --data-dir=/var/lib/etcd
- --initial-advertise-peer-urls=https://192.168.229.134:2380
- --initial-cluster=k8s-master=https://192.168.229.134:2380
- --key-file=/etc/kubernetes/pki/etcd/server.key
- --listen-client-urls=https://127.0.0.1:2379,https://192.168.229.134:2379
- --listen-peer-urls=https://192.168.229.134:2380
- --name=k8s-master
- --peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt
- --peer-client-cert-auth=true
- --peer-key-file=/etc/kubernetes/pki/etcd/peer.key
- --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
- --snapshot-count=10000
- --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
image: k8s.gcr.io/etcd:3.3.10
...
etcd에서 사용하는 인증서는 해당 노드의 /etc/kubernetes/pki/etcd/
디렉터리 아래에 있음을 알 수 있다.따라서 먼저 필요한 인증서를 시크릿 대상을 통해 그룹에 저장합니다.kubectl -n monitoring create secret generic etcd-certs \
--from-file=/etc/kubernetes/pki/etcd/healthcheck-client.crt \
--from-file=/etc/kubernetes/pki/etcd/healthcheck-client.key \
--from-file=/etc/kubernetes/pki/etcd/ca.crt
secret/etcd-certs created
etcd-certs 만들기 대상을 prometheus 자원 대상에 설정하고 직접 업데이트합니다.kubectl edit prometheus k8s -n monitoring
시크릿에 다음 속성을 추가합니다. nodeSelector:
kubernetes.io/os: linux
podMonitorSelector: {}
replicas: 2
#
secrets:
- etcd-certs
업데이트가 완료되면 Prometheus의Pod에서 이전에 만든 etcd 인증서 파일을 얻을 수 있습니다.우선 팟 이름부터 확인해 봐.kubectl get po -n monitoring
NAME READY STATUS RESTARTS AGE
...
prometheus-k8s-0 3/3 Running 1 2m20s
prometheus-k8s-1 3/3 Running 1 3m19s
...
두 컨테이너에 들어가서 인증서의 특정 경로를 확인합니다.kubectl exec -it prometheus-k8s-0 /bin/sh -n monitoring
Defaulting container name to prometheus.
Use 'kubectl describe pod/prometheus-k8s-0 -n monitoring' to see all of the containers in this pod.
/prometheus $ ls /etc/prometheus/secrets/etcd-certs/
ca.crt healthcheck-client.crt healthcheck-client.key
서비스 모니터 만들기
생성prometheus-serviceMonitorEtcd.yaml
파일:apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
k8s-app: etcd-k8s
name: etcd-k8s
namespace: monitoring
spec:
endpoints:
- port: port
interval: 30s
scheme: https
tlsConfig:
caFile: /etc/prometheus/secrets/etcd-certs/ca.crt
certFile: /etc/prometheus/secrets/etcd-certs/healthcheck-client.crt
keyFile: /etc/prometheus/secrets/etcd-certs/healthcheck-client.key
insecureSkipVerify: true
jobLabel: k8s-app
namespaceSelector:
matchNames:
- kube-system
selector:
matchLabels:
k8s-app: etcd
서비스 모니터 객체를 만들려면 다음과 같이 하십시오.kubectl apply -f prometheus-serviceMonitorEtcd.yaml
servicemonitor.monitoring.coreos.com/etcd-k8s created
서비스 작성
Service Monitor 가 생성되었으므로 해당 서비스 객체를 만들어야 합니다.prometheus-etcdService.yaml
내용은 다음과 같습니다.apiVersion: v1
kind: Service
metadata:
labels:
k8s-app: etcd
name: etcd-k8s
namespace: kube-system
spec:
ports:
- name: port
port: 2379
protocol: TCP
type: ClusterIP
clusterIP: None
---
apiVersion: v1
kind: Endpoints
metadata:
name: etcd-k8s
namespace: kube-system
labels:
k8s-app: etcd
subsets:
- addresses:
- ip: 192.168.229.134
nodeName: etcd-master
# - ip: 192.168.229.135
# nodeName: etcd02
# - ip: 192.168.229.136
# nodeName: etcd03
ports:
- name: port
port: 2379
protocol: TCP
etcd 집단은 집단 외에 독립되어 있기 때문에Endpoints를 정의해야 합니다.Endpoints의 metadata 영역의 내용은 서비스와 일치하고 서비스의 clusterIP를 None으로 설정합니다.
Endpoints의subsets에 etcd의 주소를 기입하고, 그룹이면addresses 속성 아래에 여러 개의 주소를 추가합니다.
Service, Endpoints 리소스를 만들려면 다음과 같이 하십시오.kubectl apply -f prometheus-etcdService.yaml
service/etcd-k8s created
endpoints/etcd-k8s created
{% asset_image 1576154696810.png %}
데이터를 수집한 후 Grafana에서 번호 3070의 Dashboard를 가져옵니다.
더 많은 내용은 블로그 원문을 보십시오: Prometheus-Operator에 사용자 정의 모니터링 항목을 추가하고 etcd 그룹을 모니터링합니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kubernetes 배포 master 서비스
1. 서버 초기화
1 방화벽 닫기
[모든 마스터 실행]
2 selinux 닫기
[모든 마스터 실행]
3 호스트 이름 구성
[모든 마스터 실행] hostnamectl set-hostname 호스트 이름
4 구성 이름 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
kubectl get po -n kube-system
...
etcd-k8s-master 1/1 Running 1 6h28m
...
kubectl get po etcd-k8s-master -n kube-system -o yaml
...
spec:
containers:
- command:
- etcd
- --advertise-client-urls=https://192.168.229.134:2379
- --cert-file=/etc/kubernetes/pki/etcd/server.crt
- --client-cert-auth=true
- --data-dir=/var/lib/etcd
- --initial-advertise-peer-urls=https://192.168.229.134:2380
- --initial-cluster=k8s-master=https://192.168.229.134:2380
- --key-file=/etc/kubernetes/pki/etcd/server.key
- --listen-client-urls=https://127.0.0.1:2379,https://192.168.229.134:2379
- --listen-peer-urls=https://192.168.229.134:2380
- --name=k8s-master
- --peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt
- --peer-client-cert-auth=true
- --peer-key-file=/etc/kubernetes/pki/etcd/peer.key
- --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
- --snapshot-count=10000
- --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
image: k8s.gcr.io/etcd:3.3.10
...
kubectl -n monitoring create secret generic etcd-certs \
--from-file=/etc/kubernetes/pki/etcd/healthcheck-client.crt \
--from-file=/etc/kubernetes/pki/etcd/healthcheck-client.key \
--from-file=/etc/kubernetes/pki/etcd/ca.crt
secret/etcd-certs created
kubectl edit prometheus k8s -n monitoring
nodeSelector:
kubernetes.io/os: linux
podMonitorSelector: {}
replicas: 2
#
secrets:
- etcd-certs
kubectl get po -n monitoring
NAME READY STATUS RESTARTS AGE
...
prometheus-k8s-0 3/3 Running 1 2m20s
prometheus-k8s-1 3/3 Running 1 3m19s
...
kubectl exec -it prometheus-k8s-0 /bin/sh -n monitoring
Defaulting container name to prometheus.
Use 'kubectl describe pod/prometheus-k8s-0 -n monitoring' to see all of the containers in this pod.
/prometheus $ ls /etc/prometheus/secrets/etcd-certs/
ca.crt healthcheck-client.crt healthcheck-client.key
생성
prometheus-serviceMonitorEtcd.yaml
파일:apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
k8s-app: etcd-k8s
name: etcd-k8s
namespace: monitoring
spec:
endpoints:
- port: port
interval: 30s
scheme: https
tlsConfig:
caFile: /etc/prometheus/secrets/etcd-certs/ca.crt
certFile: /etc/prometheus/secrets/etcd-certs/healthcheck-client.crt
keyFile: /etc/prometheus/secrets/etcd-certs/healthcheck-client.key
insecureSkipVerify: true
jobLabel: k8s-app
namespaceSelector:
matchNames:
- kube-system
selector:
matchLabels:
k8s-app: etcd
서비스 모니터 객체를 만들려면 다음과 같이 하십시오.
kubectl apply -f prometheus-serviceMonitorEtcd.yaml
servicemonitor.monitoring.coreos.com/etcd-k8s created
서비스 작성
Service Monitor 가 생성되었으므로 해당 서비스 객체를 만들어야 합니다.prometheus-etcdService.yaml
내용은 다음과 같습니다.apiVersion: v1
kind: Service
metadata:
labels:
k8s-app: etcd
name: etcd-k8s
namespace: kube-system
spec:
ports:
- name: port
port: 2379
protocol: TCP
type: ClusterIP
clusterIP: None
---
apiVersion: v1
kind: Endpoints
metadata:
name: etcd-k8s
namespace: kube-system
labels:
k8s-app: etcd
subsets:
- addresses:
- ip: 192.168.229.134
nodeName: etcd-master
# - ip: 192.168.229.135
# nodeName: etcd02
# - ip: 192.168.229.136
# nodeName: etcd03
ports:
- name: port
port: 2379
protocol: TCP
etcd 집단은 집단 외에 독립되어 있기 때문에Endpoints를 정의해야 합니다.Endpoints의 metadata 영역의 내용은 서비스와 일치하고 서비스의 clusterIP를 None으로 설정합니다.
Endpoints의subsets에 etcd의 주소를 기입하고, 그룹이면addresses 속성 아래에 여러 개의 주소를 추가합니다.
Service, Endpoints 리소스를 만들려면 다음과 같이 하십시오.kubectl apply -f prometheus-etcdService.yaml
service/etcd-k8s created
endpoints/etcd-k8s created
{% asset_image 1576154696810.png %}
데이터를 수집한 후 Grafana에서 번호 3070의 Dashboard를 가져옵니다.
더 많은 내용은 블로그 원문을 보십시오: Prometheus-Operator에 사용자 정의 모니터링 항목을 추가하고 etcd 그룹을 모니터링합니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kubernetes 배포 master 서비스
1. 서버 초기화
1 방화벽 닫기
[모든 마스터 실행]
2 selinux 닫기
[모든 마스터 실행]
3 호스트 이름 구성
[모든 마스터 실행] hostnamectl set-hostname 호스트 이름
4 구성 이름 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
apiVersion: v1
kind: Service
metadata:
labels:
k8s-app: etcd
name: etcd-k8s
namespace: kube-system
spec:
ports:
- name: port
port: 2379
protocol: TCP
type: ClusterIP
clusterIP: None
---
apiVersion: v1
kind: Endpoints
metadata:
name: etcd-k8s
namespace: kube-system
labels:
k8s-app: etcd
subsets:
- addresses:
- ip: 192.168.229.134
nodeName: etcd-master
# - ip: 192.168.229.135
# nodeName: etcd02
# - ip: 192.168.229.136
# nodeName: etcd03
ports:
- name: port
port: 2379
protocol: TCP
kubectl apply -f prometheus-etcdService.yaml
service/etcd-k8s created
endpoints/etcd-k8s created
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kubernetes 배포 master 서비스1. 서버 초기화 1 방화벽 닫기 [모든 마스터 실행] 2 selinux 닫기 [모든 마스터 실행] 3 호스트 이름 구성 [모든 마스터 실행] hostnamectl set-hostname 호스트 이름 4 구성 이름 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.