Prometheus-Operator에 사용자 정의 모니터링 항목 추가, etcd 클러스터 모니터링

6388 단어 KubernetesPrometheus
더 많은 내용은 블로그 원문을 보십시오: Prometheus-Operator에 사용자 정의 모니터링 항목을 추가하고 etcd 그룹을 모니터링합니다

사용자 정의 모니터링 항목 프로세스 추가

  • Service Monitor 객체 작성
  • 서비스 대상을 만들고 metrics 데이터 인터페이스를 제공하며 서비스 모니터와 연결
  • 서비스 대상이metrics 데이터를 정확하게 획득할 수 있도록 확보
  • {% asset_image 1576154786034.png %}

    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 그룹을 모니터링합니다

    좋은 웹페이지 즐겨찾기