자바 는 Prometheus 로 실시 간 모니터링 시스템 구축 과정 에 대한 상세 한 설명

하느님 의 불
이 시 리 즈 는 오픈 소스 실시 간 감시 경고 솔 루 션 인 프로 메 테 우 스 를 다 루 고 있다.매번 나 는 하느님 의 불 을 가 져 온 그리스의 신 프로 메 테 우 스 를 연상 할 수 있다.이 오픈 소스 로고 도 불 이 라 개인 적 으로 이 로고 디자인 을 좋아 합 니 다.
본 시 리 즈 는 Prometheus 와 그 주변의 생태 로 자신 만 의 실시 간 모니터링 경고 플랫폼 을 구축 하 는 데 중심 을 두 고 있다.
본 시리즈 의 시청자 대상 은 Prometheus 를 처음 접 하 는 사용자 이 고 큰 신 은 뿌리 지 않 으 며 조작 과 실전 에 편중 되 지만 중요 한 개념 도 언급 된다.시 리 즈 는 주로 다음 과 같은 몇 조각 으로 나 뉜 다.
  • Prometheus 의 각 개념 소개 와 구축,데이터 캡 처 방법(이번 공유 내용)
  • 어떻게 데 이 터 를 Prometheus 로 전송 하 는 지,푸 시 와 끌 어 당 기 는 것 은 각각 어떤 장면 에 사용 하 는 지
  • Prometheus 데이터 의 구조 및 조회 언어 PromQL 의 사용
  • 자바 응용 프로그램 이 Prometheus 와 어떻게 통합 되 고 서 비 스 를 어떻게 사용 하 는 지 알 수 있 습 니 다.사용자 정의 업무 기준
  • Prometheus 는 Grafana 시각 화 세트 와 어떻게 통합 하고 경고
  • 을 설정 합 니까?
  • Dubbo 의 각 지 표를 통합 적 으로 감시 하 는 자바 세트
  • 을 손 으로 쓰 는 방법 을 가르쳐 드 립 니 다.
  • 실제 사례 공유,각 업무 단 과 시스템 단의 모니터링 을 어떻게 하 는 지
  • Prometheus 및 순차 데이터베이스 의 기본 개념
    Prometheus 는 현재 Github 에서 3w 가 넘 는 star 를 가지 고 있 습 니 다.대체적으로 수많은 스타 의 오픈 소스 도 구 를 가지 기 때문에 지역사회 에서 절대적 인 주류 라 고 할 수 있 고 지역사회 도 상당히 활발 하 며 많은 경험 을 참고 할 수 있 습 니 다.기업 급 시스템 에 서 는 안심 하고 사용 할 수 있다.

    Prometheus 는 SoundCloud 가 개발 한 오픈 소스 모니터링 경보 시스템 과 시간 시퀀스 데이터베이스 다.말 그대로 Prometheus 는 두 부분 으로 구성 되 는데 하 나 는 감시 경보 시스템 이 고 다른 하 나 는 자체 적 으로 가지 고 있 는 순차 데이터베이스(TSDB)이다.
    순차 데이터베이스(TSDB)에 대해 서 는 시간 서열 데 이 터 를 최적화 한 후에 처리 하 는 데이터 베이스 로 간단하게 이해 할 수 있 고 데이터 중의 배열 은 시간 에 의 해 색인 된다.전통 적 인 구조 화 데이터베이스 에 비해 몇 가지 장점 이 있다.
  • 시간 서열 데 이 터 는 대량의 데이터 의 빠 른 섭취 에 집중 된다.타 이 밍 데이터 베 이 스 는 데이터 의 매번 변 화 를 새로운 데이터 로 보고 변 화 를 평가 할 수 있다.과거의 변 화 를 분석 하고 현재 의 변 화 를 감 측 하 며 미래 에 어떻게 변화 할 지 예측 할 수 있다.전통 적 인 구조 화 데 이 터 는 데이터 양 이 적 을 때 할 수 있 고 데이터 양 이 많 을 때 대량의 원 가 를 써 야 한다.
  • 고 정밀도 데이터 저장 시간 이 비교적 짧 고 중간 또는 더 낮은 정밀도 의 요약 데이터 보존 시간 이 비교적 길다.실시 간 모니터링 에 있어 모든 정확 한 데이터 가 필요 하지 않 고 고정 시간 대 데이터 의 요약 이다.이것 은 구조 화 된 데이터 베 이 스 를 선별 하 는 것 을 의미 하고 대량의 기록 을 확보 하 는 동시에 멋 진 선택 을 해 야 한다.이것 은 구조 화 된 데이터 베이스 디자인 을 초과 하여 처리 하 는 작업량 이다.
  • 데이터베이스 자 체 는 고정 밀 데이터 의 요약 을 연속 적 으로 계산 하여 장기 적 으로 저장 해 야 한다.이 계산 들 은 간단 한 집합 을 포함 할 뿐만 아니 라 복잡 한 계산 도 있다.전통 적 인 데이터 베 이 스 는 그렇게 많은 계산 을 감당 할 수 없다.이 집합 과 복잡 한 연산 을 실시 간 으로 통계 해 야 하기 때문이다.
  • Prometheus 구축 시작https://prometheus.io/Prometheue 홈 페이지 에서 탭 을 다운로드 합 니 다.여 기 는 Liux 버 전 을 예 로 들 면:

    다운로드 후,압축 해제,실행
    
    nohup /data/prometheus/prometheus --web.listen-address=0.0.0.0:9090 --config.file=/data/prometheus/prometheus.yml --web.enable-lifecycle --storage.tsdb.path=/data/prometheus/data --storage.tsdb.retention.time=15d &
    
    이렇게 해서 간단하게 Prometheus 서버 를 만 들 었 습 니 다.이때,우 리 는 웹 에서 방문 할 수 있다.http://127.0.0.1:9090관리 페이지 에 접근 할 수 있 습 니 다.

    화면 위의 몇 개의 태그 설명:
    Alert:경고 규칙 을 설정 하 는 데 사용 합 니 다.이후 에 우 리 는 Grafana 자체 의 경고 인터페이스 설정 으로 이것 을 대체 할 것 이다.
    Graph:PromQL 문 구 를 실행 하 는 콘 솔 입 니 다.실행 중인 문 구 를 도형 화 할 수 있 습 니 다.이 블록 은 다음 장 에서 소개 합 니 다.
    Status:시스템 정보,시스템 상태,설정 정보,목표 노드 의 상태,서비스 발견 상태 등 메타 정 보 를 조회 합 니 다.
    Prometheus 전체 구조 및 생태

    이 그림 은 정부의 전체적인 구조 도이 다.베이지색 부분 은 Prometheus 자체 의 구성 요소 이 고 녹색 은 제3자 의 미들웨어 와 응용 이다.
    전체 Prometheus 의 생태 구 조 를 간단하게 소개 합 니 다.
  • Prometheus 가 데 이 터 를 얻 는 방식 은 한 가지 밖 에 없다.바로 scrape 이 고 pull 이 라 고도 부 르 며 끌 어 당 기 는 뜻 이다.Prometheus 는 일정 시간 마다 목표(target)에서 Http 프로 토 콜 로 기준(metrics)을 끌 어 옵 니 다.이 목 표 는 응용 일 수도 있 고 에이전트,캐 시 미들웨어,데이터 베이스 등 미들웨어 일 수도 있 습 니 다.
  • 에서 추출 한 데 이 터 는 Prometheus 가 자신의 TSDB 데이터베이스 에 저장 합 니 다.자신의 WebUI 콘 솔 과 Grafana 는 그 데 이 터 를 시간 범위 내 에서 계속 조회 하여 실시 간 도표 로 그 려 보 여줄 수 있다.
  • Prometheus 지원 예 를 들 어 zookeeper,consul 과 같은 서비스 에서 미들웨어 를 발견 하여 목표(target)에 대한 자동 발견 을 사용 합 니 다.하나씩 target 을 설정 하지 않 아 도 됩 니 다.
  • alertManager 구성 요 소 는 사용자 정의 경고 규칙 을 지원 하고 경고 채널 도 여러 가지
  • 을 지원 합 니 다.
    데 이 터 를 끌어당기다
    Prometheus 는 주로 끌 어 당 기 는 방식 으로 데 이 터 를 가 져 옵 니 다.쉽게 말 하면 설정 한 target 에 고정 시간 마다 접근 하 는 것 입 니 다.target 은 데 이 터 를 가 져 오 는 url 입 니 다.
    지금 우 리 는 데이터 원본 을 모 의 해서 prometheus 에 게 가 져 오 라 고 할 것 이다.
    springboot 웹 프로젝트 를 새로 만 듭 니 다.pom 의존 플러스
    
    <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
    <dependency>
     <groupId>io.micrometer</groupId>
     <artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
    application.properties 에
    
    server.port=8080
    anagement.endpoints.web.exposure.include=*
    시작 이 끝 난 후에 우 리 는 페이지 에서 다음 주 소 를 방문 할 수 있 습 니 다.http://127.0.0.1:8080/actuator/prometheus다음 데 이 터 를 가 져 옵 니 다:

    actuator 가 응용 지표 와 사용자 정의 지 표를 어떻게 감시 하 는 지 에 대해 저 는 다음 시리즈 에서 단독으로 분석 할 것 입 니 다.여 기 는 저희 가 서 비 스 를 시작 했다 고 이해 하고 url 을 제공 하면 kv 형식의 지 표를 열거 할 수 있 습 니 다.
    예 를 들 어 jvmmemory_max_bytes{area="heap",id="PS Old Gen",}2.863661056E 9 이 지 표 는 앞 에는 key 이 고 뒤 에는 value 입 니 다.
    그 중에서 key 는 key name 과 key labels 로 나 뉘 는데 key name 은 바로'jvm'입 니 다.memory_max_bytes,key labels 는 두 개 있 습 니 다.
    이 지 표 는 jvm 의 최대 메모 리 를 제공 합 니 다.그 중에서 area 는 힙 입 니 다.이것 은 메모리 영역 임 을 나타 내 고 id 는 PS Old Gen 이 며 이것 은 오래된 시대 임 을 나타 냅 니 다.종합 적 으로 보면 이 지 표 는 jvm 에서 오래된 시대 의 최대 치 이다.수치 유형 은 byte 로 환산 해 보면 약 286 M 정도 입 니 다.
    저 희 는 지표 데이터 원본 이 있 으 면 prometheus 의 루트 디 렉 터 리 에서 prometheus.yml 파일 을 편집 하고 다음 과 같은 설정 을 추가 합 니 다.
    
    - job_name: 'test'
     scrape_interval: 5s
     metrics_path: '/actuator/prometheus'
     static_configs:
     - targets: ['localhost:8080']
      labels:
       instance: demo
    이 설정 은 prometheue 가 5 초 간격 으로http://localhost:8080/actuator/prometheus이 url 은 지 표를 끌 어 내 고 모든 지표 에 intance 라 는 탭 을 추가 합 니 다.
    추가 완료 후 prometheus 를 다시 시작 합 니 다.웹 페이지 의 targets 페이지 에 들 어 갑 니 다.앞의 절차 에 문제 가 없다 면 다음 과 같이 볼 수 있 습 니 다.

    상 태 는 UP 이 prometheue 가 이 target 의 데 이 터 를 성공 적 으로 얻 었 음 을 나타 낸다.
    검색 페이지 에 방금 그 지표의 키 를 입력 하 십시오:

    여기 있 는 모든 value 는 prometheus 가 최근 에 캡 처 한 데이터 입 니 다.네가 매번 실행 할 때마다 데이터 가 변 한다.
    여기 에는 왜 여러 개의 데이터 가 있 을 까?지표 마다 라벨 이 다 르 기 때문이다.똑 같은 라벨 은 하나의 지표 로 분류 된다.
    그래프 를 누 르 면 시간 서열 에서 특정한 지표의 변화 추 세 를 볼 수 있 습 니 다.

    위의 그림 은 시스템 cpu 지표의 변화 도 를 보 여 준다.
    마지막.
    현재 마이크로 서비스 가 유행 하고 소 규모 기업 의 마이크로 서비스 노드 도 백 개가 다 되 어 가 며 Prometheus 생태 는 최소 의 대가 로 모든 데 이 터 를 실시 간 으로 시각 화 할 수 있다.이것 은 개발 과 운영 에 있어 모든 데 이 터 는 더 이상 블랙박스 가 아니 라 적어도 저 는 개인 적 으로 모든 데이터 가 관측 되 고 분석 되 며 안정 감 을 가진다 고 생각 합 니 다.
    이 시 리 즈 는 실전 조작 을 이용 하여 한 걸음 한 걸음 자신의 시스템 과 업무 감 시 를 구축 하 는 것 을 가 르 치 는 데 목적 을 둔다.나중에 계속 업데이트 할 게 요.다음 장 에 서 는 pushgateway 를 구축 하여 push 데 이 터 를 prometheus 에 구축 하고 2 가지 서로 다른 데이터 획득 방식 을 각각 어떤 장면 에 사용 하 는 지 분석 할 것 이다.
    프로 메 테 우 스 로 실시 간 모니터링 시스템 을 구축 하 는 과정 에 대한 상세 한 하나님 의 불,프로 메 테 우 스 의 굴기 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.프로 메 테 우 스 로 실시 간 모니터링 시스템 을 구축 하 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기