본문 바로가기
CSP (Cloud Service Provider)/AWS

AWS MSK 설치 및 prometheus 모니터링 활성화

by BTC_KSH 2022. 12. 21.

안녕하세요~~ 저희는 공공의 적 팀입니다~~<(*^.^*)/

AWS MSK ?

-> Amazon Managed Streaming for Apache Kafka(Amazon MSK)는 Apache Kafka를 사용하여 스트리밍 데이터를 처리하는 애플리케이션의 구축 및 실행을 위해 사용할 수 있는 완전관리형 서비스입니다

설치

  1. MSK 클라이언트 머신이 아직 없는 경우 생성**

(1) 인스턴스 생성

  • 퍼블릭 IP할당 또는 고정 IP(EIP) 할당 받아서 생성(이미지에서는 임시로 퍼블릭 ip 할당)
  • 인스턴스 시작 클릭

(2) 보안그룹 지정

보안그룹을 방금 생성한 MSK 클라이언트 EC2 인스턴스와 MSK의 통신이 이루어질 수 있도록

상호간 통신 오픈

이미지 상에서는 MSK 보안그룹에 대하여 모든 트래픽을 허용하였기 때문에 같은 보안그룹을 소지하고 있는 클라이언트 인스턴스와 MSK가 통신이 가능하다

aws docs : https://docs.aws.amazon.com/msk/latest/developerguide/create-client-machine.html

  • 새 규칙 의 유형 열 에서 모든 트래픽 을 선택합니다. 소스 열의 두 번째 필드에서 클라이언트 컴퓨터의 보안 그룹을 선택합니다. 클라이언트 머신 인스턴스를 시작한 후 이름을 저장한 그룹입니다.
  • 규칙 저장을 선택합니다 . 이제 클러스터의 보안 그룹은 클라이언트 시스템의 보안 그룹에서 오는 트래픽을 수락할 수 있습니다.

  1. 클라이언트 시스템 에 권한arn:aws:iam::aws:policy/AmazonMSKReadOnlyAccess자격 증명

정책가 부여 되었거나 이에 상응하는 정책을 사용할 수 있는지 확인

AmazonMSKReadOnlyAccess 정책 IAM 역할에 추가

  • 인스턴스에 IAM 적용

 2. JmxExporter 및 NodeExporter를 활성화 하려면 MSK 측에서 Prometheus로 개방형 모니터링 을 활성화

(1) 클러스터 생성

AWS MSK 콘솔 접속 후 클러스터 생성 클릭

사용자 정의 생성으로 해야만 클러스터가 제대로 설치된다(프로비저닝이 아닌 서버리스 선택 시 모니터링 활성화 불가능)

원하는 설정 선택후 MSK 클라이언트 인스턴스와 같은 보안그룹 지정

**** Prometheus 모니터링 활성화 (필수)**

(2) 클라이언트 인스턴스에서 Prometheus 호스트 설정(Prometheus 설치 및 실행)

https://prometheus.io/download/#prometheus 에서 Prometheus 서버를 다운로드

  • Prometheus 다운로드

wget https://github.com/prometheus/prometheus/releases/download/v2.37.0/prometheus-2.37.0.linux-amd64.tar.gz 입력

  • Prometheus 압축해제

tar -zxvf prometheus-2.37.0.linux-amd64

  • 압축 해제한 파일로 이동

cd prometheus-2.37.0.linux-amd64/

  • Prometheus yml 파일 생성

vi prometheus.yml

# file: prometheus.yml
# my global config
global:
  scrape_interval:     60s

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    static_configs:
    # 9090 is the prometheus server port
    - targets: ['localhost:9090']
  - job_name: 'broker'
    file_sd_configs:
    - files:
      - 'targets.json'
  • AWS 콘솔 MSK 속성 탭에서 클러스터의 브로커 ID 확인

브로커가 2개에 ID는 각각 1, 2 이다 (aws kafka list-nodes --cluster-arn 명령어로도 확인가능하나 aws cli와 연동하고 mfa를 활성화 하여야 한다)

  • prometheus.yml 같은 파일위치에서 targets.json 생성

vi targets.json

[
  {
    "labels": {
      "job": "jmx"
    },
    "targets": [
      "broker_dns_1:11001",      # broker dns자리에  브로커 ID 1 입력
      "broker_dns_2:11001",      # broker dns자리에  브로커 ID 2 입력
      .
      .
      .
      "broker_dns_N:11001"
    ]
  },
  {
    "labels": {
      "job": "node"
    },
    "targets": [
      "broker_dns_1:11002",    # broker dns자리에  브로커 ID 1 입력
      "broker_dns_2:11002",    # broker dns자리에  브로커 ID 2 입력
      .
      .
      .
      "broker_dns_N:11002"
    ]
  }
]
  • Amazon EC2 인스턴스에서 Prometheus 서버를 시작
  • ./prometheus
  • Prometheus 서버 확인

퍼블릭, 또는 고정 ip 주소:9090 입력하여 웹으로 접속( 보안그룹에서 9090 포트 오픈)

 

이후 웹에서  Prometheus 서버 상태 확인

'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글

AWS Windows 서버 설치 및 접속방법  (0) 2022.12.21
AWS S3 엑세스 로깅 활성화  (0) 2022.12.21
EFS (Amazon Elastic File System)  (0) 2022.12.20
AWS Backup  (0) 2022.12.20
CPU/디스크/메모리 (1)  (0) 2022.12.20

댓글