Prometheus를 사용한 Kubernetes 모니터링 [사용 사례 및 모니터링 포함]

게시 됨: 2020-09-23

목차

Prometheus는 어디에서 왜 사용됩니까?

Prometheus Kubernetes는 AWS, Azure 또는 GCloud Kubernetes 클러스터에 배포할 수 있는 모니터링 도구입니다. 현대 인프라의 필수 도구로 간주됩니다. 최신 DevOps는 수동으로 처리하기가 점점 더 복잡해지고 있으므로 더 많은 자동화가 필요하므로 일반적으로 컨테이너화된 애플리케이션을 실행하는 여러 서버가 있습니다.

모든 엔터티가 상호 연결된 해당 인프라에서 실행 중인 수백 가지 프로세스가 있으므로 애플리케이션 다운타임 없이 원활하게 실행되도록 이러한 설정을 유지 관리하는 것은 매우 어렵습니다. 많은 위치에 분산된 서버 로드가 있는 복잡한 인프라가 있고 오류, 응답 및 대기 시간과 같은 하드웨어 수준 또는 애플리케이션 수준에서 무슨 일이 일어나고 있는지에 대한 통찰력이 없다고 상상해 보십시오.

하드웨어가 다운되거나 과부하되면 이러한 복잡한 인프라에서 리소스가 부족해질 수 있지만 배포된 서비스와 애플리케이션이 많을 때 더 많은 문제가 발생할 수 있습니다. 그 중 하나가 충돌하여 다른 서비스의 장애를 일으킬 수 있고 움직이는 부분이 너무 많아 갑자기 사용자가 응용 프로그램을 사용할 수 없게 됩니다. 시스템을 수동으로 디버깅할 때 어렵고 시간이 많이 소요될 수 있는 수백 가지의 다양한 문제 중 무엇이 잘못되었는지 신속하게 식별해야 합니다.

Prometheus 모니터링 사용에 대한 몇 가지 사용 사례

예를 들어, 한 특정 서버에서 메모리가 부족하여 Kubernetes 클러스터의 두 데이터베이스 포트 간에 데이터베이스 동기화를 제공하는 실행 중인 컨테이너를 시작했다고 가정해 보겠습니다. 그 결과 두 데이터베이스 포트가 실패했습니다. 해당 데이터베이스는 데이터베이스를 사용할 수 없기 때문에 작동이 중지된 인증 서비스에서 사용되었습니다.

해당 인증 서비스에 의존하던 애플리케이션은 더 이상 UI에서 사용자를 인증할 수 없었지만 사용자 관점에서 보면 UI의 오류만 보입니다. 클러스터 내부에서 무슨 일이 일어나고 있는지에 대한 통찰력이 없으면 여기에 표시된 것처럼 이벤트 체인의 빨간색 선이 표시되지 않습니다. 당신은 단지 오류를 참조하십시오. 그래서 지금 당신은 원인을 찾고 그것을 수정하기 위해 거기에서 거꾸로 작업을 시작합니다. 그러나 이 검색 문제 프로세스를 보다 효율적으로 만드는 것은 무엇입니까? 서비스가 실행 중인지 여부를 지속적으로 모니터링하고 하나의 서비스가 충돌하는 즉시 경고를 표시하는 도구를 사용할 수 있습니다.

무슨 일이 일어났는지 정확히 알 수 있으며, 더 나아가 문제가 발생하기 전에 문제를 식별하고 해당 인프라를 담당하는 시스템 관리자에게 경고하여 해당 문제를 방지합니다. 예를 들어, 논의된 이 경우에는 각 서버의 메모리 사용 상태를 정기적으로 확인합니다. 서버 중 하나에서 예를 들어 1시간 이상 동안 70% 이상 급증하거나 계속 증가하면 해당 서버의 메모리가 곧 소진될 수 있는 위험에 대해 알립니다.

또는 탄력적 검색이 서버에 디스크 공간이 부족하거나 탄력적 검색이 할당된 스토리지 제한에 도달하여 새로운 로그를 허용하지 않기 때문에 애플리케이션에 대한 로그 보기를 중지하는 또 다른 시나리오를 고려해 보겠습니다. 모니터링 도구는 저장 공간을 지속적으로 확인하고 저장 공간의 탄력적 검색 소비와 비교합니다. 위험을 확인하고 유지 관리자에게 가능한 스토리지 문제를 알립니다.

읽기: Kubernetes 인터뷰 질문

경고가 트리거되어야 하는 임계점이 무엇인지 모니터링 도구에 알릴 수 있습니다. 로그 데이터 손실이 절대적으로 발생할 수 있는 중요한 응용 프로그램이 있는 경우 매우 엄격할 수 있으며 용량의 50~60%에 도달하는 즉시 조치를 취할 수 있습니다. 스토리지 공간을 추가하는 것은 조직에서 일부 IT 부서와 다른 여러 사람의 승인이 필요한 관료적 프로세스이기 때문에 시간이 오래 걸립니다.

또한 문제를 해결할 수 있는 시간을 더 가질 수 있도록 가능한 스토리지 문제에 대해 더 일찍 알림을 받고 싶습니다. 또는 하나의 서비스가 중단되고 네트워크 전반에 걸쳐 루프에서 수백 개의 오류 메시지를 보내기 시작하여 애플리케이션이 갑자기 너무 느려지는 세 번째 시나리오로, 높은 네트워크 트래픽을 생성하고 네트워크에서 이러한 스파이크를 감지하는 도구를 갖기 위해 다른 서비스의 속도가 느려집니다. .

학습: Openshift 대 Kubernetes: Openshift와 Kubernetes의 차이점

원천

Prometheus에 노출된 Kubernetes 서비스 발견

주요 구성 요소: Prometheus 서버

프로메테우스 아키텍처

원천

Prometheus Kubernetes의 아키텍처

Prometheus Kubernetes의 중요한 특징 중 하나는 다른 시스템이 중단된 경우에도 안정적으로 설계되었다는 것입니다. 문제를 진단하고 수정할 수 있습니다. 따라서 각 Prometheus 서버는 자체 포함되어 있어 네트워크 저장소나 기타 원격 서비스에 의존하지 않습니다.

인프라의 다른 부분이 손상되었을 때 작동하도록 되어 있으며 이를 사용하기 위해 광범위한 인프라를 설정할 필요가 없습니다. 그러나 Prometheus의 확장이 어려울 수 있다는 단점도 있습니다. 따라서 수백 대의 서버가 있는 경우 이러한 모든 메트릭 데이터를 집계하는 여러 Prometheus 서버가 필요할 수 있습니다.

이러한 방식으로 프리미티브를 구성하고 확장하는 것은 이러한 특성 때문에 매우 어려울 수 있습니다. 따라서 단일 노드를 사용하는 것은 덜 복잡하고 매우 쉽게 시작할 수 있지만 Prometheus가 모니터링할 수 있는 메트릭 수를 제한합니다. 이 문제를 해결하려면 Prometheus 서버의 용량을 늘려 더 많은 메트릭 데이터를 저장할 수 있도록 하거나 Prometheus가 응용 프로그램에서 수집하는 메트릭 수를 제한하여 관련 항목으로만 유지합니다.

이 모니터링 도구는 클라우드에 배포할 수 있으므로 upGrad, Udemy, Coursera 등과 같은 플랫폼에서 클라우드 컴퓨팅 과정을 수행하여 이러한 주제에 대한 지식을 향상시킬 수 있습니다. 특히 upGrad를 통해 코스는 우리 나라 IIIT-B의 유명한 기관 중 하나에서 설계되었습니다. 이를 통해 실무 경험과 폭넓은 지식 측면을 얻을 수 있습니다.

확인: Kubernetes와 비교 Docker: 알아야 할 주요 차이점

결론

Kubernetes는 컨테이너화된 애플리케이션 및 마이크로서비스의 배포, 확장 및 관리를 단순화합니다. 이는 관리를 계속 진행하는 데 도움이 되지만 느린 실행과 같은 숨겨진 문제를 인식하고 해결하려면 상태에 따라 위에서 아래로 기초 응용 프로그램 및 실행 정보를 축적하고 상상할 수 있는 능력이 필요합니다.

관련 정보와 함께 연속 데이터에 접근하지 않으면 상태 측정값에 대응하기가 거의 어려워서 문제를 보다 신속하게 해결할 수 있습니다.

Kubernetes, DevOps 등을 배우고 마스터하려면 전체 스택 소프트웨어 개발 프로그램에서 IIIT-B 및 upGrad의 PG 디플로마를 확인하십시오.

미래의 직업을 위한 준비

업계에서 신뢰할 수 있는 학습 - 업계에서 인정하는 인증.
오늘 등록