클라우드 네이티브 시대, 대중적인 모니터링 도구 비교 및 사용 시나리오 분석

기업의 지속적인 발전과 성장에 따라 온라인 서버의 수도 증가하고 있으므로 기업의 소프트웨어 및 하드웨어 오류 가능성도 높아집니다. 위의 상황에서 기업의 호스트 또는 응용 프로그램이 비정상적일 때 기업에 비교적 완전하고 강력한 모니터링 시스템이 없으면 기업의 업무가 중단되고 기업에 막대한 손실이 발생합니다.

저자: Edward Li, 클라우드 인텔리전스 개발 엔지니어. 운영 및 유지 관리 및 Devops 분야에서 다년간의 경험을 바탕으로 그는 클라우드 네이티브 방향 의 연구 및 구현에 전념하고 있습니다.

모니터링 소개

마이크로서비스의 출현으로 모니터링 시스템은 더욱 중요해졌습니다. 개발자가 상대적으로 소규모 프로그램을 작성할 때는 스크립트를 작성하거나 모니터링을 위한 소규모 프로그램을 선택하고, 기업의 자체 서비스 응용 프로그램 규모가 상대적으로 클 경우 자체 비즈니스 시스템에 적합한 상용 모니터링 솔루션을 채택합니다. Cloud Wisdom은 중국 최고의 풀 스택 지능형 비즈니스 운영 및 유지 관리 솔루션 제공업체이며 제품에는 모니터링 보물, 원근 보물 및 기타 비즈니스 소프트웨어가 포함됩니다. 또한 일부 기업은 Zabbix, Prometheus 등과 같은 일부 오픈 소스 모니터링 솔루션을 선택합니다. 이 글에서는 클라우드 네이티브 시대에 적절한 모니터링 솔루션을 선택하는 방법에 대해 설명합니다.

모니터링 목적

건전한 모니터링 시스템을 구축하면 다음과 같은 목표를 달성할 수 있습니다.

  • 경보: 시스템이 발생하거나 장애가 발생하려고 하는 경우 모니터링 시스템은 신속하게 대응하고 관리자에게 통지하여 문제를 신속하게 처리하거나 문제의 발생을 사전에 방지하여 시스템에 미치는 영향을 방지해야 합니다. 사업;

  • 장기 추세 분석: 모니터링 샘플 데이터의 지속적인 수집 및 통계를 통해 모니터링 지표의 장기 추세 분석을 수행합니다.

  • 비교 분석: 시스템의 두 버전의 운영 자원 사용량의 차이점은 무엇입니까? 시스템의 동시성과 부하가 용량에 따라 어떻게 달라지나요? 모니터링을 통해 시스템을 쉽게 추적하고 비교할 수 있습니다.

  • 결함 분석 및 위치: 문제가 발생하면 문제를 조사하고 처리해야 합니다. 다양한 모니터링 및 과거 데이터 분석을 통해 근본 원인을 찾고 해결할 수 있습니다.

  • 데이터 시각화: 시각적 대시보드를 통해 시스템의 실행 상태, 리소스 사용량, 서비스 실행 상태 등 직관적인 정보를 직접 얻을 수 있습니다.

모니터링 차원

모니터링 차원은 주로 다음과 같은 측면을 포함합니다.

  • 네트워크 계층: 네트워크 프로토콜(http, dns, tcp, icmp) 및 네트워크 하드웨어(라우터, 스위치 등) 모니터링 포함

  • 호스트 계층: 주로 CPU, MEM 및 스토리지와 같은 리소스 사용을 모니터링합니다.

  • 컨테이너 계층: 주로 CPU, MEM, 스토리지 및 기타 리소스의 사용을 모니터링합니다.

  • 응용 계층: 주로 지연, 오류, QPS, 내부 상태 등을 모니터링합니다.

  • 미들웨어 계층: 주로 리소스 사용량 및 서비스 상태를 모니터링합니다.

  • 오케스트레이션 도구 계층: 주로 클러스터 리소스 사용량, 스케줄링 등을 모니터링합니다.

4가지 모니터링 골드 지표

골든 시그널은 수많은 분산 모니터링에 대한 Google의 경험을 요약한 것입니다. 4가지 골든 지표는 서비스 수준에서 최종 사용자 경험, 서비스 중단 및 비즈니스 영향과 같은 문제를 측정하는 데 도움이 될 수 있습니다. 주요 초점은 대기 시간, 트래픽, 오류 및 포화의 네 가지 유형의 측정항목에 있습니다.

  1. 대기 시간: 요청을 처리하는 데 걸리는 시간입니다. 성공적인 요청의 지연 시간과 실패한 요청의 지연 시간을 구별하는 데 중점을 두고 사용자의 모든 요청에 ​​걸리는 시간을 기록합니다.

  2. 트래픽: 현재 시스템 트래픽을 모니터링하여 서비스의 용량 요구 사항을 측정합니다. 트래픽은 시스템 유형에 따라 다른 의미를 가질 수 있습니다. 예를 들어 HTTP REST API에서 트래픽은 일반적으로 초당 HTTP 요청입니다.

  3. 오류: 현재 시스템에서 발생하는 모든 오류 요청을 모니터링하고 현재 시스템에서 오류가 발생하는 비율을 측정합니다. 실패 중 일부는 명시적(예: HTTP 500 오류)이고 일부는 암시적(예: HTTP 응답 200이지만 실제 비즈니스 프로세스는 여전히 실패함)입니다. 시스템 내부의 일부 예외의 경우 서비스에서 직접 후크 통계를 추가하고 가져와야 할 수도 있습니다.

  4. 채도: 현재 서비스의 채도를 측정합니다. 주요 강조점은 서비스 상태에 가장 큰 영향을 미치는 제한된 리소스입니다. 일반적으로 이러한 리소스가 포화되면 서비스 성능이 크게 떨어지기 때문입니다. 동시에 포화는 시스템에 대한 예측을 하는 데에도 사용할 수 있습니다. 예를 들어 "디스크가 4시간 안에 가득 찰 것 같습니까?"입니다.

프로메테우스 모니터링 시스템

Prometheus는 오픈 소스 모니터링 솔루션이자 오픈 소스 시스템 모니터링 및 경고 프레임워크입니다. 메트릭을 시계열 데이터로 수집 및 집계하는 데 사용되며 커뮤니티 오픈 소스 프로젝트로 개발되어 2015년에 공식적으로 출시되었습니다.

프로메테우스의 장점

  • 클라우드 네이티브 후광: 쿠버네티스(트렌드) 지원에 우호적이다 쿠버네티스가 컨테이너 스케줄링 및 관리 분야에서 선도적인 위치를 확립함에 따라 프로메테우스도 쿠버네티스 컨테이너 모니터링의 표준이 됐다.

  • 강력한 쿼리 언어: Prometheus에는 강력한 데이터 쿼리 언어 PromQL이 내장되어 있습니다. 모니터링 데이터의 쿼리 및 집계는 PromQL을 통해 실현할 수 있습니다. 동시에 PromQL은 데이터 시각화(예: Grafana) 및 경고에도 사용됩니다.

  • 서비스 동적 검색 메커니즘: Kubernetes, Consul, Etcd 등이 현재 지원되며, 이는 운영 및 유지보수 담당자(특히 컨테이너 환경에서 중요)에 의한 수동 구성 작업량을 줄일 수 있습니다.

  • 확장 가능: 기능적 파티션(샤딩) + 페더레이션 세트(페더레이션)를 확장할 수 있습니다.

  • 손쉬운 통합: Prometheus를 사용하면 모니터링 서비스를 빠르게 구축할 수 있으며 애플리케이션에 통합하는 것이 매우 편리할 수 있습니다. 리치 컬렉션 클라이언트(공식, 타사, 사용자 지정)

  • 효율적이고 쉬운 관리: 다중 플랫폼 배포는 수백만 개의 모니터링 메트릭 및 초당 수십만 개의 데이터 포인트와 호환됩니다.

프로메테우스 아키텍처

  • Prometheus 서버: 검색은 HTTP Server를 통해 서비스에서 동적으로 발견한 대상에서 메트릭 데이터를 정기적으로 가져옵니다. 각 가져오기 대상은 Prometheus와 함께 정기적으로 가져오기 위해 HTTP 서비스 인터페이스(Prometheus 사양 준수)를 노출해야 합니다. 수집된 모니터링 데이터는 TSDB에 지속 및 저장됩니다.

  • PromQL 쿼리: PromQL을 사용하여 Prometheus WebUi, Api 클라이언트 또는 Grafana를 통해 다양한 지표 데이터를 쿼리할 수 있습니다.

  • 알람 푸시: 계산 후 임계값을 초과하는 알람을 Alertmanager로 보냅니다.추가 그룹화, 억제 및 침묵 후 Alertmanager는 더 풍부한 알람 채널로 보냅니다.

  • 수집 대상: 수집 대상은 다양한 공식 내보내기 또는 PushGateway 등과 같은 Prometheus 사양(예: Nacos 및 Arrangodb의 메트릭 인터페이스)을 구현하는 타사 인터페이스일 수 있습니다.

표시기 유형

  • 카운터: 증가만 하고 감소하지 않는 카운터로, 제공된 HTTP 요청 수 또는 사용된 CPU 시간과 같은 정보를 저장하는 데 유용합니다.

  • 게이지: 증가 또는 감소할 수 있는 대시보드, 이 표시기는 반응 시스템의 현재 상태에 중점을 둡니다.

  • 요약: 요약은 무언가의 평균 크기, 계산하는 데 걸린 시간 또는 처리된 파일 크기를 기록하는 데 사용됩니다. 요약은 두 가지 관련 정보를 보여줍니다: count(이벤트가 발생한 횟수) 및 sum (모든 이벤트의 총 크기) ;

  • 히스토그램: 히스토그램 표시기는 다양한 간격의 샘플 수를 직접 반영하며 간격은 레이블 le로 정의됩니다. 히스토그램은 메인 히스토그램 또는 히스토그램이라고 하며 주로 지표 값의 분포를 계산하는 데 사용됩니다. 버킷: 가로축 간격을 설정하고 상한만 설정하고 하한은 설정하지 않습니다. 주로 시간이 많이 걸리는 요청 분포를 계산하는 데 사용됩니다.

일반 수출업체

커뮤니티에서 일반적으로 사용되는 수출업체는 주로 다음과 같습니다.

작업 및 예

prometheus.yml 구성 파일에 다음 구성을 추가합니다.

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

수집 대상

Prometheus는 이미 몇 가지 기본 제공 서비스 검색 메커니즘을 지원합니다. 개발자는 Prometheus 구성 파일의 scrape_config 섹션을 통해 구성할 수 있습니다. Prometheus는 동적 크롤링 대상 목록을 지속적으로 업데이트하고 이전 인스턴스 크롤링을 자동으로 중지하고 새 인스턴스 크롤링을 시작합니다. Prometheus는 특히 Kubernetes 클러스터에서 실행하는 데 적합하며 모니터링 대상을 자동으로 검색할 수 있습니다. Kubernetes에서 Promethues는 주로 Kubernetes API와 통합하여 Node, Service, Pod, Endpoints, Ingress의 5가지 서비스 검색 모드를 지원합니다.

Kubernetes 클러스터 모니터링 솔루션

  • cAdvisor: cAdvisor는 Google의 오픈 소스 컨테이너 리소스 모니터링 및 성능 분석 도구로 컨테이너용으로 특별히 설계되었으며 Docker 컨테이너를 지원합니다. 현재 kubelet 구성 요소에 내장되어 있습니다.

  • kube-state-metrics: kube-state-metrics는 API 서버를 수신하여 배포, 노드 및 파드와 같은 리소스 개체에 대한 상태 메트릭을 생성합니다. kube-state-metrics는 단순히 메트릭 데이터를 제공하고 이 메트릭 데이터는 Prometheus를 사용하여 이 데이터를 가져와 저장할 수 있습니다. 주요 초점은 배포, 포드, 복제본 상태 등과 같은 비즈니스와 관련된 일부 메타데이터에 있습니다.

  • metrics-server:metrics-server는 또한 클러스터 전체 리소스 데이터 집계 도구로 Heapster를 대체합니다. 유사하게,metrics-server는 데이터만 표시하고 데이터 저장 서비스를 제공하지 않습니다. 주요 관심사는 CPU, 파일 설명자, 메모리, 요청 대기 시간 및 기타 지표와 같은 리소스 측정 API의 구현입니다.

Grafana 데이터 시각화

데이터 패널 유형

  • 시계열: 시간 기반 선, 영역 및 막대 차트의 데이터 시각화

  • 막대 차트: 데이터 분류의 시각화;

  • 통계: 데이터 통계와 관련된 데이터 시각화용

  • 게이지: 최소값 및 최대값과 관련된 현재 값을 보여주는 시각화.

  • 표: 데이터 내용이 표 레이아웃에 표시됩니다.

  • 파이 차트: 파이 차트 패널 시각화;

  • 히트맵: 값의 분포를 표시합니다.

Prometheus 고가용성

가용성 시나리오

Prometheus에서는 인스턴스가 끊기면 자동으로 LB에서 제거되고 로드 밸런싱 기능도 있어 Prometheus에 대한 부담을 줄일 수 있습니다. 하지만 이 모드는 데이터의 일관성과 지속성의 문제를 해결하지 못한다는 명백한 단점이 있는데, Prometheus는 Pull 방식이기 때문에 여러 인스턴스가 동일한 모니터링 지표를 캡처하더라도 캡처된 값이 그대로 유지된다고 보장할 수 없습니다. , 게다가 실제 사용 과정에서 약간의 네트워크 지연 문제가 발생하여 데이터 불일치 문제가 발생합니다. 그러나 모니터링 및 경보 시나리오의 경우 일반적으로 강력한 데이터 일관성이 필요하지 않으므로 이 방법은 비즈니스 관점에서 허용됩니다. Prometheus 가용성 시나리오는 모니터링 규모가 크지 않고 단기 모니터링 데이터만 저장하면 되는 시나리오에 적합합니다.

데이터 지속성 시나리오

Prometheus에 대한 원격 저장소를 구성한 후 데이터 손실에 대해 걱정할 필요가 없으며, Prometheus 인스턴스가 다운되거나 데이터가 손실된 경우에도 원격으로 저장된 데이터를 통해 복구할 수 있습니다.

연합 클러스터

단일 Promthues 인스턴스가 많은 수의 수집 작업을 처리할 수 없는 경우 개발자는 Prometheus 연합 클러스터 기반 접근 방식을 사용하여 모니터링 작업을 다른 Prometheus 인스턴스로 나눌 수 있습니다. 개발자는 다양한 유형의 수집 작업을 서로 다른 Prometheus 인스턴스로 분할하여 실행하고 기능적 샤딩을 수행할 수 있습니다.예를 들어, Prometheus 하나는 노드 지표 데이터 수집을 담당하고, 다른 Prometheus는 애플리케이션 비즈니스 관련 모니터링 지표 데이터 수집을 담당하고, 마지막으로 상위 계층 데이터는 Prometheus를 통해 집계됩니다.

단일 수집 작업의 대상 수가 너무 많으면 인스턴스 수준에서 기능적 분할을 고려할 수 있다는 점에 유의해야 합니다. 여러 작업 인스턴스의 모니터링 데이터 수집 작업을 다른 Prometheus 인스턴스로 나눕니다.

고가용성 아키텍처

  • 사이드카: 실시간 쿼리를 위해 Prometheus에 연결하고 Prometheus를 쿼리 게이트웨이(Querier/Query)에 노출하고 Prometheus 데이터를 클라우드 스토리지에 업로드하여 장기 저장합니다.

  • 쿼리/쿼리: Prometheus API를 구현하고 기본 구성 요소(사이드카 구성 요소 Sidecar 또는 스토리지 게이트웨이 Store Gateway 등)에서 데이터를 집계합니다.

  • 스토어 게이트웨이: 클라우드 스토리지의 데이터 콘텐츠를 노출합니다.

  • 압축기: 클라우드 스토리지에서 데이터를 압축 및 다운샘플링합니다.

  • 눈금자: 모니터링 데이터를 평가하고 경고합니다.

  • 쿼리/쿼리: Prometheus API를 구현하고 기본 구성 요소(사이드카 구성 요소 Sidecar 또는 스토리지 게이트웨이 Store Gateway 등)에서 데이터를 집계합니다.

  • 스토어 게이트웨이: 클라우드 스토리지의 데이터 콘텐츠를 노출합니다.

  • 압축기: 클라우드 스토리지에서 데이터를 압축 및 다운샘플링합니다.

  • 수신기: Prometheus의 원격 쓰기 WAL(Prometheus 원격 미리 쓰기 로그)에서 데이터를 가져와 노출하거나 클라우드 스토리지에 업로드합니다.

  • 눈금자: 모니터링 데이터 평가 및 경고

타노스의 장점

Thanos는 고가용성(HA), 스토리지 지속성, 다중 클러스터 쿼리 기능을 갖춘 Prometheus 기반 모니터링 솔루션으로 주로 다음과 같은 장점이 있습니다.

  • 통합 쿼리 입력: Querier를 통합 쿼리 입력으로 사용하여 Prometheus의 쿼리 인터페이스 및 StoreAPI를 구현하고 다른 쿼리에 대한 쿼리 서비스를 제공할 수 있습니다. 쿼리하는 동안 각 Prometheus 인스턴스의 Sidecar 및 Store Gateway에서 지표 데이터를 얻습니다. ;

  • 높은 공간 활용도: 각 Prometheus 자체는 장기 데이터를 저장하지 않으며 Sidecar는 Prometheus의 영구 데이터 블록을 개체 저장소에 업로드합니다. 압축기는 원격 개체 저장소의 장기 데이터를 정기적으로 압축하고 샘플링 시간에 따라 정리하여 저장 공간을 절약합니다.

  • 클러스터 간 쿼리: 여러 클러스터의 쿼리 결과를 결합해야 할 때 각 클러스터의 쿼리어 위에 쿼리어의 다른 레이어를 추가하기만 하면 됩니다.이러한 종류의 중첩은 클러스터의 규모를 제한 없이 확장할 수 있습니다.

  • 수평 확장: Prometheus의 지표 수집 압력이 너무 높으면 새 Prometheus 인스턴스를 만들고 스크래핑 작업을 여러 Prometheus로 분할할 수 있으며 Querier는 여러 Prometheus 쿼리의 결과를 집계하여 단일 Prometheus에 대한 압력을 줄입니다.

  • 고가용성: 쿼리어는 본질적으로 수평적 확장 및 고가용성을 지원하는 상태 비저장 서비스입니다. Store, Rule 및 Sidecar는 다중 복사본 배포의 경우에도 고가용성을 지원하지만 데이터 중복을 생성하고 저장 공간을 희생해야 하는 상태 저장 서비스입니다.

  • 쿼리 중복 제거: 각 데이터 블록에는 특정 클러스터 레이블이 있으며 쿼리자는 쿼리 시 클러스터 레이블을 제거하고 시간 순서에 따라 동일한 인덱스 이름과 레이블을 가진 시퀀스를 병합합니다. 지표 데이터는 다양한 수집 소스에서 제공되지만 여러 복제 대신 하나의 결과에만 응답합니다.

오픈 소스 혜택

현재 Cloud Wisdom은 오픈 소스 데이터 시각화 오케스트레이션 플랫폼 FlyFish를 보유하고 있습니다. 데이터 모델을 구성하여 사용자에게 수백 개의 시각적 그래픽 구성 요소를 제공하고 제로 코딩은 자신의 비즈니스 요구에 맞는 멋진 시각적 대형 화면을 구현할 수 있습니다. 동시에 FlyFish는 유연한 확장 기능을 제공하고 구성 요소 개발, 맞춤형 기능, 글로벌 이벤트 및 기타 구성을 지원하며 복잡한 수요 시나리오에 대한 효율적인 개발 및 제공을 보장할 수 있습니다.

아래 주소 링크를 클릭하고 FlyFish 에 좋아요를 표시 하고 별표를 보내려면 모두를 환영합니다. 부품 개발에 참여하면 10,000위안 이상의 현금이 여러분을 기다립니다.

GitHub 주소: https://github.com/CloudWise-OpenSource/FlyFish

Gitee 주소: https://gitee.com/CloudWise/fly-fish

만 위안 현금 혜택: http://bbs.aiops.cloudwise.com/t/Activity

위챗 스캔으로 아래 QR코드 확인, [플라잉피시] 참고 AIOps 커뮤니티 플라잉피쉬 개발자 교류회 가입, 플라이피쉬 프로젝트 PMC와 직접 소통하세요~

{{o.name}}
{{m.name}}

рекомендация

отmy.oschina.net/yunzhihui/blog/5530977
рекомендация