소개

안녕하세요 저는 오픈소스컨설팅 Solution Architect 1 팀 구병모입니다.

오늘은 Atlassian 설치형 제품들을 효과적으로 모니터링 할 수 있는 방법에 대해 소개해 보려 합니다.

Atlassian 제품을 사용하는 다수의 고객분들과 관리자분들은, Atlassian 시스템과 어플리케이션의 효과적인 모니터링 방법을 고민해 왔습니다. 오늘은 다양한 환경에 대해 유연하고 강력한 모니터링 도구인 Elastic Stack을 이용해 간단하게 Atlassian 제품이 설치된 서버의 시스템 리소스 모니터링과 제품 로그 모니터링을 할 수 있는 대시보드를 구성해 보는 실습을 진행 해 보고자 합니다.

이번 글에서는 기본적인 EFK 스택의 설치 및 Atlassian 제품의 Metricbeat 를 이용한 리소스 모니터링의 구성을 진행하는 방법을 알아보도록 하겠습니다.

구성

Elastic Stack은 그동안 흔히 사용되왔던 ELK(Elasticsearch + Logstash + Kibana) 스택을 일컫는 말이기도 합니다. 다만 Logstash나 Kibana에 국한되었던 시각화/수집/분석 도구들이 다양해짐에 따라 Elasitcsearch 생태계를 기반으로 한 구성을 Elastic Stack으로 부르게 되었습니다.

오늘 구성해볼 부분은 기존에 많이 사용되어 왔던 ELK형태의 스택에서 Logstash 대신 사용되는 Fluentd를 이용하여(EFK Stack) Atlassian 제품을 모니터링 해 보도록 할 텐데, 다음의 구성 요소들로 진행합니다.

구성역할
Elasticsearch데이터 적제 및 검색
Fluentd로그 데이터 수집 및 분석
Kibana데이터 시각화
Metricbeat시스템 리소스 정보 전송

준비된 서버로는 여러 아틀라시안 제품들이 설치된 서버(이하 AT서버) 1대와, Elastic Stack을 설치할 서버 1대(8 vCPU, 16GB RAM, 50 GB Storage)로 진행하였고, Elastic Stack의 서버(이하 ES서버)는 Rocky Linux 8에서 진행하였습니다.

AT 서버는 미리 준비되어있고 운영중이라는 가정 하에 Elastic Stack을 구성하는 것을 중점적으로 알아가보도록 합시다.

Elasticsearch 설치/기본설정

ES서버에 아래의 과정을 거쳐 Elasticsearch를 설치해줍니다.

dnf -y install java-11-openjdk java-11-openjdk-devel              #Java 11 설치
java -version                                                     #Java 버전확인
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch   #elastic 저장소 GPG 키 추가
cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo          #elastic 8.x 패키지 저장소 추가
[elasticsearch-8.x]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
dnf clean all                                                     #패키지 저장소 정보 업데이트
dnf makecache
dnf -y install elasticsearch                                      #엘라스틱서치 설치치
systemctl status elasticsearch                                  #설치 결과 확인

정상적으로 설치가 된다면 아래와 같은 결과를 얻을 수 있습니다.

vi /etc/elasticsearch/elasticsearch.yml 으로 설정파일을 열어 다음의 값들을 수정 또는 삽입 해 준 뒤 저장합니다.

network.host: 0.0.0.0
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
xpack.security.http.ssl:
  enabled: false
  keystore.path: certs/http.p12
xpack.security.transport.ssl:
  enabled: false
  verification_mode: certificate
  keystore.path: certs/transport.p12

설정 편집 후에는 다음의 순서로 명령어를 입력하여 elasticsearch를 기동합니다. (편의를 위해 리눅스 방화벽을 종료후 진행합니다.)

setenforce 0                            #리눅스 보안설정 비활성화
systemctl stop firewalld                #리눅스 방화벽 종료
systemctl disable firewalld             #리눅스 방화벽 자동시작 비활성화
systemctl enable elasticsearch          #엘라스틱서치 자동시작 활성화
systemctl start elasticsearch           #엘라스틱서치 기동

이후 브라우저를 통해 http://[ES서버 아이피]:9200 으로 접속 해 보면 기동중인 elasticsearch의 정보를 아래와 같이 얻을 수 있습니다.

Kibana 설치/기본설정

다음의 명령어로 설치 및 확인합니다.

dnf -y install kibana
systemctl status kibana

정상적으로 설치가 된다면 아래와 같은 결과를 얻을 수 있습니다.

vi /etc/kibana/kibana.yml 으로 설정파일을 열어 다음의 값들을 수정 또는 삽입 해 준 뒤 저장합니다.

server.host: "0.0.0.0"
server.name: "es"
elasticsearch.hosts: ["http://localhost:9200"]

설정 편집 후에는 다음의 순서로 명령어를 입력하여 kibana를 기동합니다.

systemctl enable kibana          #키바나 자동시작 활성화 
systemctl start kibana           #키바나 기동

이후 브라우저를 통해 http://[ES서버 아이피]:5601 으로 접속 해 보면 kibana에 접속할 수 있습니다.

만약 접속이 안된다면, 글 위로 올라가서 리눅스 보안 해제 설정 및 방화벽 설정을 다시 확인 해 주세요.

위 화면이 떴다면 ‘Explore on my own’ 을 클릭 해 둡니다.

Metricbeat 설치

이제는 ES서버쪽이 아닌 AT 서버쪽에 시스템 리소스 사용량 정보를 보내줄 수 있는 Metricbeat를 설치 해 보겠습니다.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch   #elastic 저장소 GPG 키 추가
cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo          #elastic 8.x 패키지 저장소 추가
[elasticsearch-8.x]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
dnf clean all                                                     #패키지 저장소 정보 업데이트
dnf makecache
dnf -y install metricbeat                                         #메트릭비트 설치
systemctl status metricbeat                                       #설치 결과 확인

정상적으로 설치가 된다면 아래와 같은 결과를 얻을 수 있습니다.

vi /etc/metricbeat/metricbeat.yml 으로 설정파일을 열어 다음의 값들을 수정 또는 삽입 해 준 뒤 저장합니다.

setup.kibana:

  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  host: "<ES서버 IP>:5601"
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["<ES서버 IP>:9200"]

다음의 순서로 metricbeat를 기동합니다. (편의를 위해 리눅스 방화벽을 종료후 진행합니다.)

setenforce 0                            #리눅스 보안설정 비활성화
systemctl stop firewalld                #리눅스 방화벽 종료
systemctl disable firewalld             #리눅스 방화벽 자동시작 비활성화
systemctl enable metricbeat             #메트릭비트 자동시작 활성화
systemctl start metricbeat              #메트릭비트 기동

Metricbeat는 표준화된 리소스 분석 모듈들이 있습니다. metricbeat modules list 명령어로 확인 가능합니다.

기본적으로는 시스템 리소스 정보만 활성화 되어있음을 볼 수 있습니다. 리스트를 내려가면서, 해당 서버에 모니터링 가능한 서비스가 있는 지 확인 후 enable하면 해당 서비스에 대한 메트릭 정보도 전송됩니다.
metricbeat modules enable {모듈명}으로 원하는 모듈을 활성화 할 수 있지만, 지금은 기본적인 사용만 해볼것이기 때문에 따로 추가 모듈을 구동하지는 않고 진행합니다.
metricbeat setup을 하면 분석된 데이터를 볼 수 있는 대시보드를 kibana에 만들어줍니다. ‘Loaded dashboards‘ 메시지가 나올때 까지 시간이 좀 걸리므로 인내심을 가지고 기다립니다.

이후에 ‘키바나에 접속 → 좌측 三 클릭 → Discover로 진입’하면 시스템 리소스 정보가 아래와 같이 수집되고 있는 것을 확인할 수 있습니다.

심지어 setup 과정을 거쳤기 때문에, 따로 설정하지 않고 리소스 모니터링이 되는 Dashboard도 확인 가능합니다. 다시 좌측 상단 메뉴에 진입하여 Dashboard로 진입해 ‘System’ 으로 검색 후 ‘[Metricbeat System] Host overview ECS’를 클릭하면 우리가 등록한 AT서버에 대한 다양한 실시간 리소스 정보를 확인할 수 있습니다.

확인하다보니, 중간에 Disk used 100% 가 찍혀있어서 급하게 서버 디스크 용량이 가득 찼음을 확인 할 수 있었습니다. 모니터링 데이터를 모으기 위해 며칠 리소스 수집을 했는데, 스크린샷을 찍다가 발견하여 급하게 서버의 디스크 용량 확보를 진행해 줄 수 있었습니다.
이처럼 서버에 일일히 들어가 보지 않고, 대상 서버의 문제점을 파악할 수 있어 리소스 모니터링 대시보드를 유용하게 활용할 수 있습니다.

계속…

지금까지 Elastic Stack 을 활용하여 Atlassian Data Center 제품들이 설치된 서버에 대한 리소스 모니터링을 진행해 보았습니다. 주로 사용하는 리소스 모니터링 항목들에 대해 자동 생성해주는 부분이 매우 편리한 이점으로 다가오기 때문에, 간편하게 서버의 상태를 모니터링 하는 환경을 구축 할 수 있었습니다. 구축 중에도 위 예시처럼 Disk Full 등의 상황을 바로 잡을 수 있었습니다.

다만, 단순 리소스 모니터링의 용도로만 사용하기에는 Elastic에 포함된 기능들이 좀 더 있기 때문에, 더 Atlassian 제품에 대해 특화되어 분석 할 수 있는 방향에 대해 다음 글에서부터 공유해 드리고자 합니다.
다음 글에서는 Atlassian 제품의 로그를 받아 분석하여 대시보드를 이용해 시각화 하는 것까지 진행 해 보도록 하겠습니다.

안녕하세요 오픈소스컨설팅 Solution Architect 1팀의 구병모입니다. 아틀라시안 엔지니어로, 다양한 환경에서의 아틀라시안 제품의 활용 및 통합을 추구합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *