Prometheus를 이용한 모니터링
Prometheus는 오픈 소스 시계열 데이터베이스로, 메트릭 수집과 모니터링에 최적화된 도구입니다. Grafana와의 연동을 통해 시각화도 용이하게 할 수 있습니다. Elasticsearch 8과 통합하여 클러스터의 성능과 상태를 실시간으로 모니터링할 수 있습니다.
Prometheus의 장점
• 확장성: 대규모 클러스터에서도 성능 저하 없이 대량의 메트릭을 효율적으로 처리할 수 있습니다.
• 경고 기능: Prometheus Alertmanager를 통해 다양한 조건의 경고를 설정하고 관리할 수 있습니다.
• 강력한 시각화: Grafana와의 통합을 통해 고도화된 대시보드를 구축할 수 있습니다.
Prometheus의 단점
• 설치 및 설정 복잡성: Prometheus, Exporter, Grafana 등 여러 구성 요소를 설치하고 설정해야 합니다.
• 유지 관리 부담: 여러 도구를 관리해야 하므로 운영 복잡성이 증가합니다.
• 자원 소모: 대규모 환경에서는 Prometheus 자체의 모니터링 작업이 추가적인 시스템 자원을 요구할 수 있습니다.
Prometheus와 Elasticsearch 통합
Elasticsearch와 Prometheus를 통합하기 위해서는 Elasticsearch Exporter를 사용하여 Elasticsearch 메트릭을 Prometheus가 수집할 수 있는 형식으로 노출해야 합니다.
1단계: Prometheus 설치
- 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
- 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
- 설정 파일 복사 및 권한 설정
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
- 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
- 서비스 시작 및 활성화
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
sudo systemctl status prometheus
2단계: Elasticsearch Exporter 설치
- 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
- 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
- 서비스 시작 및 활성화
sudo systemctl daemon-reload
sudo systemctl start elasticsearch_exporter
sudo systemctl enable elasticsearch_exporter
sudo systemctl status elasticsearch_exporter
- 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를 이용한 시각화
- 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
- Grafana에서 Prometheus 데이터 소스 추가
- Grafana 웹 인터페이스(http://localhost:3000)에 접속하여 로그인합니다.
- 좌측 메뉴에서 “Configuration” > “Data Sources” > “Add data source”를 클릭합니다.
- Prometheus를 선택하고 URL을 http://localhost:9090으로 설정한 후 “Save & Test”를 클릭합니다.
- 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에 접속한 후, 다음 단계를 따라 모니터링 대시보드에 접근합니다.
- Kibana 메뉴에서 “Stack Monitoring” 선택
- 왼쪽 사이드바에서 “Stack Monitoring” 아이콘을 클릭합니다.
- 모니터링 설정 마법사
- 처음 접근 시 모니터링 설정 마법사가 나타날 수 있습니다.
- 마법사의 지시에 따라 Elasticsearch 클러스터를 모니터링하도록 설정합니다.
- 대시보드 확인
- 설정이 완료되면, 클러스터 상태, 노드 상태, 인덱스 성능, 검색 및 색인 속도 등 다양한 지표를 시각적으로 확인할 수 있습니다.
'DevOps > ElasticSearch' 카테고리의 다른 글
[ElasticSearch] 클러스터와 노드 (1) | 2024.10.20 |
---|---|
[ElasticSearch] 인덱스, 샤드, 세그먼트, 타입, 매핑 (0) | 2024.10.18 |