웹 백엔드 서비스의 중요성
웹 백엔드 서비스는 인터넷 상에서 서비스를 제공하는데 가장 중요한 부분이다. 이 서비스는 사용자가 요청한 데이터를 처리하고 응답을 제공하는데 관여한다. 웹 백엔드 서비스는 사용자가 기대하는 대로 작동하기 위해서는 안정적이고 성능이 우수해야한다. 이를 위해서는 서버의 상태를 모니터링하고 감사 로그를 수집하는 것이 필요하다.
서버의 상태를 모니터링하는 것은 서버가 어떤 일을 하고 있는지 파악할 수 있어야 하기 때문이다. 서버가 충분히 빠르게 응답하고 있는지, 에러가 발생하는지 등을 파악할 수 있어야 한다. 감사 로그를 수집하는 것은 서비스를 제공하는데 있어서 중요한 부분이다. 이를 통해 사용자들의 요청에 따라 어떤 일이 일어났는지 파악할 수 있기 때문이다.
감사 로깅과 모니터링 필요성
감사 로깅과 모니터링은 서비스를 제공하는데 필수적인 요소이다. 이를 통해 서버의 상태를 파악하고, 사용자들의 요청에 따른 로그를 수집할 수 있다. 이를 통해 다음과 같은 이점을 얻을 수 있다.
- 서버의 상태 파악: 서버의 상태를 모니터링하면 서버가 어떤 일을 하고 있는지 파악할 수 있다. 이를 통해 서버의 상태를 파악하여 적절한 대응을 취할 수 있다.
- 사용자 요청 로그 수집: 사용자들이 요청한 데이터에 대한 로그를 수집하면 사용자들이 어떤 요청을 하는지 파악할 수 있다. 이를 통해 사용자들의 요구에 대응하는 서비스를 제공할 수 있다.
- 서비스 개선: 서버의 상태를 파악하고 사용자 요청 로그를 수집하면 서비스를 개선할 수 있다. 이를 통해 사용자들이 더욱 만족하는 서비스를 제공할 수 있다.
ELK 스택의 개요와 구축 방법
ELK 스택은 ElasticSearch, Logstash, Kibana를 합쳐서 만든 로그 분석 플랫폼이다. ElasticSearch는 분산 검색 엔진으로, 대량의 데이터를 빠르게 검색할 수 있다. Logstash는 다양한 소스에서 데이터를 수집하고, ElasticSearch로 전송한다. Kibana는 ElasticSearch로 전송된 데이터를 시각화하고, 검색할 수 있게 해준다.
ELK 스택을 구축하는 방법은 다음과 같다.
ElasticSearch 설치
ElasticSearch는 Java 기반으로 동작하기 때문에 Java를 설치해야 한다. Java가 설치되어 있지 않은 경우 다음 명령어로 설치할 수 있다.
sudo apt-get install openjdk-8-jdk
Java가 설치되었으면, ElasticSearch를 다운로드하여 설치한다.
wget //artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-linux-x86_64.tar.gz
tar xvzf elasticsearch-7.10.1-linux-x86_64.tar.gz
cd elasticsearch-7.10.1/
./bin/elasticsearch
위와 같이 실행하면 ElasticSearch가 실행된다.
Logstash 설치
Logstash 역시 Java 기반으로 동작하기 때문에 Java를 설치한다. Java가 설치되어 있지 않은 경우 ElasticSearch 설치 과정에서 설치할 수 있다.
Logstash를 다운로드하여 설치한다.
wget //artifacts.elastic.co/downloads/logstash/logstash-7.10.1.tar.gz
tar xvzf logstash-7.10.1.tar.gz
cd logstash-7.10.1/
Kibana 설치
Kibana도 Java 기반으로 동작하기 때문에 Java를 설치한다. Java가 설치되어 있지 않은 경우 ElasticSearch 설치 과정에서 설치할 수 있다.
Kibana를 다운로드하여 설치한다.
wget //artifacts.elastic.co/downloads/kibana/kibana-7.10.1-linux-x86_64.tar.gz
tar xvzf kibana-7.10.1-linux-x86_64.tar.gz
cd kibana-7.10.1-linux-x86_64/
Logstash 설정
Logstash에서는 다양한 소스에서 데이터를 수집하고, ElasticSearch로 전송한다. 이를 위해서는 Logstash 설정 파일을 작성해야 한다.
Logstash 설정 파일은 다음과 같이 작성한다.
input {
tcp {
port => 5000
codec => json
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-%{+YYYY.MM.dd}"
user => "elastic"
password => "changeme"
}
}
위 설정 파일에서는 5000번 포트로 들어오는 JSON 형태의 로그 데이터를 수집하여 ElasticSearch로 전송한다. ElasticSearch 호스트는 localhost:9200이며, 인덱스는 logstash-날짜 형태로 저장된다.
Kibana 설정
Kibana에서 ElasticSearch로 전송된 데이터를 시각화하고, 검색할 수 있게 해준다. 이를 위해서는 Kibana 설정 파일을 작성해야 한다.
Kibana 설정 파일은 다음과 같이 작성한다.
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["//localhost:9200"]
위 설정 파일에서는 Kibana를 5601번 포트로 실행하며, ElasticSearch 호스트는 localhost:9200이다.
ELK 스택을 활용한 웹 백엔드 서비스 모니터링 방법
ELK 스택을 활용하여 웹 백엔드 서비스를 모니터링하는 방법은 다음과 같다.
웹 백엔드 서비스 로그 설정
웹 백엔드 서비스에서는 로그를 설정해야 한다. 로그는 다양한 레벨(DEBUG, INFO, WARN, ERROR, FATAL)로 설정할 수 있으며, 각 레벨에 따라 다른 로그를 출력할 수 있다.
로그 설정 예시는 다음과 같다.
import logging
logging.basicConfig(
format='%(asctime)s [%(levelname)s] %(message)s',
level=logging.INFO
)
logging.info('Hello, World!')
위 코드에서는 INFO 레벨의 로그를 출력한다.
Logstash 설정
Logstash에서는 다양한 소스에서 데이터를 수집하고, ElasticSearch로 전송한다. 이를 위해서는 Logstash 설정 파일을 작성해야 한다.
Logstash 설정 파일은 다음과 같이 작성한다.
input {
tcp {
port => 5000
codec => json
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-%{+YYYY.MM.dd}"
user => "elastic"
password => "changeme"
}
}
위 설정 파일에서는 5000번 포트로 들어오는 JSON 형태의 로그 데이터를 수집하여 ElasticSearch로 전송한다. ElasticSearch 호스트는 localhost:9200이며, 인덱스는 logstash-날짜 형태로 저장된다.
Kibana 설정
Kibana에서 ElasticSearch로 전송된 데이터를 시각화하고, 검색할 수 있게 해준다. 이를 위해서는 Kibana 설정 파일을 작성해야 한다.
Kibana 설정 파일은 다음과 같이 작성한다.
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["//localhost:9200"]
위 설정 파일에서는 Kibana를 5601번 포트로 실행하며, ElasticSearch 호스트는 localhost:9200이다.
웹 백엔드 서비스 모니터링
웹 백엔드 서비스의 모니터링은 다음과 같이 할 수 있다.
CPU 모니터링
top
위 명령어를 실행하면 현재 CPU 사용량이 출력된다.
메모리 모니터링
free -m
위 명령어를 실행하면 현재 메모리 사용량이 출력된다.
로그 모니터링
Kibana에서 로그를 시각화하고, 검색할 수 있다. 원하는 로그를 검색하여 확인할 수 있다.
ELK 스택으로 모니터링한 로그 시각화
ELK 스택으로 모니터링한 로그는 다음과 같이 시각화할 수 있다.
위 이미지는 ELK 스택으로 모니터링한 로그를 시각화한 예시이다.
결론
ELK 스택을 활용하면 웹 백엔드 서비스를 모니터링하는데 용이하다. 감사 로그와 모니터링을 통해 서비스를 안정적이고 성능이 우수하게 제공할 수 있다. 웹 백엔드 서비스를 운영하는데 있어서 ELK 스택은 필수적인 도구이다.