Kubernetes를 Grafana + Prometheus로 모니터링하기로 결정했습니다.

4852 단어 prometheuskubernetes
기사을 쓰고 나서 분기가 지나, 여러가지 움직이는 앱이 늘어나고, 좋은 가감에 하지 않는다고, 생각해, 어떤 감시 방법이 있는지를 조사해 보았다. 그러자 유료를 제외하고 Grafana + Prometheus가 일반적인 인상이었다.

우선 Zabbix에서 도전



그렇지만 과거의 경험이라든가, 이미 감시로 사용하고 있다고 하는 이유로, Zabbix로 해 보았다.
우연히 Zabbix on Kubernetes 이라는 리포지토리에서 매뉴페스트 파일이 있었으므로 간단하게 구축할 수 있을 것 같았고.
하지만,,,
  • zabbix-all-in-one-bare-metal.yaml에서 사용되는 Zabbix 컨테이너 이미지의 monitoringartist/zabbix-xxl은 2년 전 업데이트가 중지되었습니다.
  • 같은 그룹에, Docker에 특화된?monitoringartist/dockbix-xxl이라고 하는 것이 있어, 올해 4월에도 갱신되고 있었다.
  • 그래서 monitoringartist/dockbix-xxl로 다시 작성하여 배포. Zabbix는 성공적으로 시작되었습니다.
  • 그러나 즉시 Zabbix Server의 Swap이 부족하다는 경고가 나온다. kubernetes 구축시는 Swap를 Off로 하기 때문에? 조금 불안하게.
  • dockbix-agent-xxl-daemonset.yaml에 에이전트 배치. 그러나 에이전트가 Zabbix에 연결할 수 없으면 오류가 계속 발생합니다. . .

  • 처럼 자신의 힘 부족으로 진입 장벽을 넘지 않고 포기했습니다.

    역시 Grafana + Prometheus에서 모니터링



    그래서 스테디셀러 방법으로 했습니다. 앱의 프레임워크로 사용하고 있는 Spring Boot가 제공하는 감시 인터페이스의 Micrometer와도 궁합이 좋고. ( Micrometer가 Zabbix를 지원하지 않음 은 놀랐다.)

    여기 기사 을 참고하겠습니다. Kubernetes Setup for Prometheus and Grafana 에서 배포.
    kubectl apply -f https://raw.githubusercontent.com/giantswarm/prometheus/master/manifests-all.yaml
    

    부드럽게 시작하고 Ingress의 설정도 더해 Grafana의 화면을 보고, 아무것도 설정하지 않고 각 pod의 자원 사용 상황이 표시되어, 그 간단함에 조금 감동했습니다.

    물론, 어떤 정보가 표시되고 있어, 뭔가 부족한 정보가 없는지, 검증하지 않으면 안 되는 것의 많음을 생각하면, 조금 크라크합니다만. . .

    문제: kubelet 인스턴스를 모니터링할 수 없음



    Prometheus의 [Alerts] 화면을 보면 InstanceDown의 경고가 나왔다.
    의미가 모르고 다른 화면을 보면 [Status]-[Targets] 화면의 kubernetes-nodes에 있는 모든 엔드포인트가 DOWN 상태였다. 오류를 보면 각 노드의 10255 포트에 연결할 수 없습니다.

    10255 포트는 kubelet이 인증 없이 접속할 수 있는 포트였지만, 보안의 관계로, Kubernetes 1.11 이후의 kubeadm으로 구축하면 무효( 참조 )가 되어 있었다.

    안전한 10250 포트에 액세스하는 방법을 모색했지만, 지금 설정 방법을 모르고,,,
    Prometheus의 감시 정의? kubernetes_sd_configs에서는 원래 10250 포트에 액세스하는 것을, manifests-all.yaml에서는 10255 포트로 변경하고 있었으므로, 이것을 해제해 보았지만 쓸모 없었다. . .

    이것은 향후의 과제라고 하는 것으로 하고, 잠정적으로 node-exporter에 액세스 하는 것으로 경고를 회피.
          - job_name: 'kubernetes-nodes'
            tls_config:
              ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
            bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
            kubernetes_sd_configs:
              - role: node
            relabel_configs:
              - source_labels: [__address__]
                regex: '(.*):10250'
                replacement: '${1}:9100'
                target_label: __address__
    

    하지만 daemonset은 master 노드에서 움직이지 않는다. master 노드의 감시는 어떻게 하는 것이 옳은지 조사했지만, 그 문턱을 발견하지 않고, 수동으로 node_exporter를 움직이기로 했다.
    다행히 RHEL/CentOS/Fedora라면 리포지토리가 준비되어 있었다.
    # curl -Lo /etc/yum.repos.d/_copr_ibotty-prometheus-exporters.repo https://copr.fedorainfracloud.org/coprs/ibotty/prometheus-exporters/repo/epel-7/ibotty-prometheus-exporters-epel-7.repo
    # yum install -y node_exporter
    # systemctl start node_exporter
    # systemctl enable node_exporter
    

    이제 master 노드의 DOWN 경고도 회피하면서 메트릭스도 수집할 수 있을 것이다.

    좋은 웹페이지 즐겨찾기