DevOps/ElasticSearch

[ElasticSearch]모니터링: Prometheus와 X-Pack

kyoulho 2024. 10. 19. 12:37

Prometheus를 이용한 모니터링

Prometheus는 오픈 소스 시계열 데이터베이스로, 메트릭 수집과 모니터링에 최적화된 도구입니다. Grafana와의 연동을 통해 시각화도 용이하게 할 수 있습니다. Elasticsearch 8과 통합하여 클러스터의 성능과 상태를 실시간으로 모니터링할 수 있습니다.

Prometheus의 장점

확장성: 대규모 클러스터에서도 성능 저하 없이 대량의 메트릭을 효율적으로 처리할 수 있습니다.
경고 기능: Prometheus Alertmanager를 통해 다양한 조건의 경고를 설정하고 관리할 수 있습니다.
강력한 시각화: Grafana와의 통합을 통해 고도화된 대시보드를 구축할 수 있습니다.

Prometheus의 단점

설치 및 설정 복잡성: Prometheus, Exporter, Grafana 등 여러 구성 요소를 설치하고 설정해야 합니다.
유지 관리 부담: 여러 도구를 관리해야 하므로 운영 복잡성이 증가합니다.
자원 소모: 대규모 환경에서는 Prometheus 자체의 모니터링 작업이 추가적인 시스템 자원을 요구할 수 있습니다.

Prometheus와 Elasticsearch 통합

Elasticsearch와 Prometheus를 통합하기 위해서는 Elasticsearch Exporter를 사용하여 Elasticsearch 메트릭을 Prometheus가 수집할 수 있는 형식으로 노출해야 합니다.

1단계: Prometheus 설치

  1. Prometheus 사용자 및 디렉토리 생성
sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus
  1. Prometheus 바이너리 다운로드 및 설치
wget https://github.com/prometheus/prometheus/releases/download/v2.44.0/prometheus-2.44.0.linux-amd64.tar.gz
tar xvfz prometheus-2.44.0.linux-amd64.tar.gz
sudo cp prometheus-2.44.0.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.44.0.linux-amd64/promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
  1. 설정 파일 복사 및 권한 설정
sudo cp -r prometheus-2.44.0.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-2.44.0.linux-amd64/console_libraries /etc/prometheus
sudo cp prometheus-2.44.0.linux-amd64/prometheus.yml /etc/prometheus/
sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
  1. Prometheus 서비스 파일 생성
sudo nano /etc/systemd/system/prometheus.service

# 내용 추가
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus/ \
  --web.console.templates=/etc/prometheus/consoles \
  --web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target
  1. 서비스 시작 및 활성화
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
sudo systemctl status prometheus

2단계: Elasticsearch Exporter 설치

  1. Elasticsearch Exporter 다운로드 및 설치
wget https://github.com/prometheus-community/elasticsearch_exporter/releases/download/v1.3.0/elasticsearch_exporter-1.3.0.linux-amd64.tar.gz
tar xvfz elasticsearch_exporter-1.3.0.linux-amd64.tar.gz
sudo cp elasticsearch_exporter-1.3.0.linux-amd64/elasticsearch_exporter /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/elasticsearch_exporter
  1. Elasticsearch Exporter 서비스 파일 생성
sudo nano /etc/systemd/system/elasticsearch_exporter.service

# 내용 추가
[Unit]
Description=Elasticsearch Exporter
After=network.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/elasticsearch_exporter --es.uri=http://localhost:9200

[Install]
WantedBy=multi-user.target
  1. 서비스 시작 및 활성화
sudo systemctl daemon-reload
sudo systemctl start elasticsearch_exporter
sudo systemctl enable elasticsearch_exporter
sudo systemctl status elasticsearch_exporter
  1. Elasticsearch CORS 설정 수정

Elasticsearch가 Exporter와 통신할 수 있도록 CORS 설정을 활성화해야 합니다. elasticsearch.yml 파일을 편집합니다.

sudo nano /etc/elasticsearch/elasticsearch.yml

# 설정 수정
http.cors.enabled: true
http.cors.allow-origin: "*"

# 재시작 
sudo systemctl restart elasticsearch

3단계: Grafana를 이용한 시각화

  1. Grafana 설치

Grafana 공식 문서를 참고하여 운영 체제에 맞게 Grafana를 설치합니다.

sudo tee /etc/yum.repos.d/grafana.repo <<EOF
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
EOF

sudo dnf install grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo systemctl status grafana-server
  1. Grafana에서 Prometheus 데이터 소스 추가
  • Grafana 웹 인터페이스(http://localhost:3000)에 접속하여 로그인합니다.
  • 좌측 메뉴에서 “Configuration” > “Data Sources” > “Add data source”를 클릭합니다.
  • Prometheus를 선택하고 URL을 http://localhost:9090으로 설정한 후 “Save & Test”를 클릭합니다.
  1. Elasticsearch 대시보드 임포트
  • Grafana에서 **“Create” > “Import”**를 클릭합니다.
  • Grafana Dashboards에서 Elasticsearch 관련 대시보드 ID를 선택하여 임포트 합니다.
  • 대시보드 ID를 입력하고 지시에 따라 임포트를 완료합니다.

X-Pack 모니터링 (Elastic Stack Monitoring)

X-Pack은 Elastic Stack에 통합된 모니터링, 보안, 경고 기능을 제공하는 확장 기능입니다. Elasticsearch 8에서는 X-Pack 모니터링이 기본적으로 활성화되어 있으며, 별도의 설정 없이 Kibana를 통해 손쉽게 모니터링할 수 있습니다.

X-Pack 모니터링의 특징

종합적인 메트릭 수집: 클러스터 건강 상태, 노드 성능, 인덱스 통계 등 상세한 메트릭을 수집합니다.
중앙 집중식 모니터링: 여러 Elasticsearch 클러스터의 상태를 하나의 인터페이스에서 통합적으로 모니터링할 수 있습니다.
경고 기능: 사전 정의된 조건이나 사용자 정의 조건에 따라 경고를 설정할 수 있습니다.
보안 통합: Elastic Stack의 보안 기능과 원활하게 통합되어 모니터링 데이터에 대한 접근을 제어할 수 있습니다.
Kibana에서의 시각화: Kibana 내에 통합된 대시보드를 통해 클러스터 성능과 건강 상태를 시각화합니다.

X-Pack의 장점

Elastic Stack 통합: 별도의 추가 설정 없이 Elastic Stack 내에서 완벽하게 통합된 모니터링 기능을 제공합니다.
사용자 친화적 대시보드: Kibana를 통해 쉽게 클러스터 상태를 시각화하고 분석할 수 있습니다.
보안 기능 통합: Elastic Security와 통합되어 모니터링 데이터에 대한 안전한 접근을 보장합니다.

X-Pack의 단점

라이선스 요구: 일부 고급 기능은 유료 Elastic 라이선스를 요구합니다.
커스터마이징 제한: Prometheus와 Grafana에 비해 시각화와 경고 기능의 유연성이 떨어질 수 있습니다.
자원 소모: 상세한 메트릭 수집으로 인해 추가 시스템 자원을 소비할 수 있습니다.

X-Pack 설치 및 구성

Kibana를 엘라스틱서치와 연결하면 기본적으로 사용할 수 있습니다.

모니터링 대시보드 접근

Kibana에 접속한 후, 다음 단계를 따라 모니터링 대시보드에 접근합니다.

  1. Kibana 메뉴에서 “Stack Monitoring” 선택
    1. 왼쪽 사이드바에서 “Stack Monitoring” 아이콘을 클릭합니다.
  1. 모니터링 설정 마법사
    1. 처음 접근 시 모니터링 설정 마법사가 나타날 수 있습니다.
    2. 마법사의 지시에 따라 Elasticsearch 클러스터를 모니터링하도록 설정합니다.
  1. 대시보드 확인
    1. 설정이 완료되면, 클러스터 상태, 노드 상태, 인덱스 성능, 검색 및 색인 속도 등 다양한 지표를 시각적으로 확인할 수 있습니다.
728x90