Elastic Stack · 8 min read · Nov 11, 2025
우분투 20.04 LTS에 Elastic Stack 설치하는 방법

Elastic Stack (이전 ELK Stack)은 다양한 소스에서 데이터를 수집하기 위해 Elastic에서 개발한 오픈 소스 소프트웨어 그룹입니다. 이를 통해 중앙 Elastic Stack 플랫폼에서 다양한 형식의 데이터를 수집, 저장, 처리, 분석 및 시각화할 수 있습니다.
Elastic Stack은 여러 소프트웨어 패키지로 구성됩니다: 데이터를 저장하기 위한 “Elasticsearch”, 데이터를 접근하고 시각화하기 위한 대시보드인 “Kibana”, 모든 데이터를 처리하기 위한 확장 가능한 플러그인을 갖춘 동적 데이터 수집 파이프라인 “Logstash”, 그리고 엣지 머신에서 데이터를 전송하는 경량 데이터 전송 플랫폼인 “Beats”입니다.
Elastic Stack은 서버에서 Promises에 배포할 수 있으며, 공식 Elastic Cloud의 SaaS(서비스형 소프트웨어)를 구매할 수도 있습니다.
이 튜토리얼에서는 우분투 20.04 서버에 Elastic Stack을 설치하는 방법을 보여줍니다. Elasticsearch와 Kibana를 동일한 서버에 설치한 후, 다른 서버에 “Filebeat”를 설치하고 구성하여 로그를 Elasticsearch 서버로 직접 전송합니다.
요구 사항
이 튜토리얼에서는 우분투 20.04를 실행하는 두 개의 서버를 사용할 것입니다. Elastic Stack 소프트웨어는 4GB RAM을 가진 서버에 설치되며, Filebeat의 클라이언트로 1GB의 다른 서버를 사용할 것입니다.
우리가 할 일
- Elastic Stack 저장소 추가
- Elasticsearch 설치 및 구성
- Kibana 설치 및 구성
- Kibana를 위한 Nginx를 리버스 프록시로 설정
- Filebeat 설치 및 구성
- Kibana 사용자에 대한 새 역할 설정
- Filebeat에 대한 새 인덱스 패턴 생성
1단계 - Elastic Stack 저장소 추가
먼저, 두 개의 우분투 서버에 Elastic Stack 소프트웨어의 GPG 키와 저장소를 추가합니다.
더 진행하기 전에, HTTPS 보안 연결을 통해 소프트웨어 설치를 보호하기 위해 ‘apt-transport-https’를 설치합니다.
sudo apt install apt-transport-https다음으로, 아래 명령어를 사용하여 Elastic Stack의 GPG 키와 저장소를 추가합니다.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list이제 우분투 시스템에서 모든 사용 가능한 저장소를 업데이트합니다.
sudo apt update이제 두 서버에서 모든 Elastic 소프트웨어 스택을 설치할 준비가 되었습니다.

2단계 - Elasticsearch 설치 및 구성
이 단계에서는 내부 IP 주소 ‘172.16.0.3’를 가진 단일 노드 서버 ‘ELK20’에 Elasticsearch를 설치하고 구성합니다.
Elasticsearch를 설치하기 전에, vim 편집기를 사용하여 ‘/etc/hosts’ 파일을 편집합니다.
vim /etc/hosts이제 아래와 같이 내부 IP 주소와 함께 호스트 이름을 입력합니다.
172.16.0.3 ELK20저장하고 닫습니다.
다음으로, 아래의 apt 명령어를 사용하여 Elasticsearch 패키지를 설치합니다.
sudo apt install elasticsearch모든 설치가 완료되면 ‘/etc/elasticsearch’ 디렉토리로 이동하여 ‘elasticsearch.yml’ 구성 파일을 편집합니다.
cd /etc/elasticsearch/
vim elasticsearch.yml‘node.name’의 주석을 제거하고 서버 호스트 이름을 입력합니다.
node.name: ELK20‘network.host’ 줄에서 Elasticsearch 서비스가 실행될 서버 IP 주소를 입력하며, 내부 IP 주소만 사용하는 것이 권장됩니다.
network.host: 172.16.0.3‘http.port’ 줄의 주석을 제거하고 기본값으로 두며, Elasticsearch 서비스는 기본 포트 ‘9200’에서 실행됩니다.
http.port: 9200‘cluster.initial_master_nodes’ 줄의 주석을 제거하고 서버 호스트 이름을 입력합니다.
cluster.initial_master_nodes: ["ELK20"]마지막으로, 아래 구성을 추가하여 Elasticsearch 보안을 활성화합니다.
xpack.security.enabled: true저장하고 닫습니다.
다음으로, systemd 서비스 관리자를 다시 로드한 후, Elasticsearch 서비스를 시작하고 시스템 부팅 시 자동으로 시작되도록 추가합니다.
systemctl daemon-reload
systemctl start elasticsearch
systemctl enable elasticsearchElasticsearch 서비스가 우분투 20.04 서버에서 실행 중입니다.

다음으로, Elasticsearch의 내장 사용자에 대한 비밀번호를 생성합니다.
‘/usr/share/elasticsearch’ 디렉토리로 이동하여 아래와 같이 Elasticsearch 유틸리티 명령 ‘elasticsearch-setup-passwords’를 실행합니다.
cd /usr/share/elasticsearch/
bin/elasticsearch-setup-passwords auto -u "http://172.16.0.3:9200"비밀번호 생성을 확인하기 위해 ‘y’를 입력합니다.
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N] y아래는 얻을 수 있는 결과입니다.
Changed password for user apm_system
PASSWORD apm_system = DP5RpFfbCyL6UpIFO8Q3
Changed password for user kibana_system
PASSWORD kibana_system = U6gDLoJCqqChqcbD1IY
Changed password for user kibana
PASSWORD kibana = U6gDLoJCqqChqcbD1IYV
Changed password for user logstash_system
PASSWORD logstash_system = KrHaGvHGfkAz12dcSeWo
Changed password for user beats_system
PASSWORD beats_system = VnUUOtShQoFAGEZ62G7m
Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = xgaLXw6jp3Ses6CZ2hEB
Changed password for user elastic
PASSWORD elastic = elu2ZlMm4mOkM7fgCeUM보시다시피, Elasticsearch의 일부 내장 사용자에 대한 비밀번호가 생성되었습니다.
Gambar
Elasticsearch 설치를 테스트하기 위해 기본 사용자 ‘elastic‘와 함께 curl 명령을 실행합니다.
curl -X GET -u elastic "http://172.16.0.3:9200/?pretty"‘elastic‘ 사용자에 대한 비밀번호를 입력하면 아래와 같은 결과를 얻을 수 있습니다.

결과적으로, Elasticsearch 서버가 인증이 활성화된 상태로 실행되고 있습니다.
3단계 - Kibana 설치 및 구성
이 단계에서는 Elasticsearch와 동일한 서버에 Kibana를 설치하고 구성합니다. Kibana를 Elasticsearch 서버에 연결하고 기본 사용자 ‘kibana_system’과 위에서 생성된 비밀번호를 사용합니다.
아래의 apt 명령어를 사용하여 Kibana를 설치합니다.
sudo apt install kibana모든 설치가 완료되면 ‘/etc/kibana’ 디렉토리로 이동하여 vim 편집기를 사용하여 ‘kibana.yml’ 구성 파일을 편집합니다.
cd /etc/kibana/
vim kibana.yml다음 줄의 주석을 제거하고 자신의 값으로 변경합니다. Nginx를 Kibana의 리버스 프록시로 사용할 것이기 때문에 Kibana를 로컬 네트워크에서 실행하는 것이 권장됩니다.
server.port: 5601
server.host: "172.16.0.3"
server.name: "ELK20"그 후, ‘elasticsearch.url’을 Elasticsearch IP 주소로 변경합니다.
elasticsearch.url: "http://172.16.0.3:9200"다음으로 “elasticsearch.username”과 ‘elasticsearch.password’ 줄의 주석을 제거하고 자신의 사용자와 비밀번호로 변경합니다.
elasticsearch.username: "kibana_system"
elasticsearch.password: "N88VBkkelfSV3mBfO6Vh"저장하고 닫습니다.
다음으로, 아래 명령어를 사용하여 systemd 관리자를 다시 로드합니다.
systemctl daemon-reload그 후, Kibana 서비스를 시작하고 시스템 부팅 시 자동으로 시작되도록 추가합니다.
systemctl start kibana
systemctl enable kibanaKibana 서비스가 우분투 20.04 시스템에서 실행되고 있습니다.

다음으로, Kibana 대시보드에 로그인하는 데 사용할 새 사용자를 생성합니다.
아래와 같이 ‘hakase’라는 이름의 새 사용자와 비밀번호 ‘hakasepasskibana’를 ‘kibana_admin’ 역할로 생성합니다.
curl -X POST -u elastic "http://172.16.0.3:9200/_security/user/hakase?pretty" -H 'Content-Type: application/json' -d'
{
"password" : "hakasepasskibana",
"roles" : [ "kibana_admin" ]
}
'‘elastic’ 사용자에 대한 비밀번호를 입력하면 아래와 같은 결과를 얻을 수 있습니다.

결과적으로, 새 사용자 ‘hakase’가 생성되었으며 Kibana 대시보드에 로그인할 수 있습니다.
4단계 - Kibana를 위한 Nginx 리버스 프록시 설정
이 단계에서는 Kibana를 위한 Nginx를 리버스 프록시로 설치하고 구성합니다.
아래의 apt 명령어를 사용하여 Nginx 패키지를 설치합니다.
sudo apt install nginx -y모든 설치가 완료되면 ‘/etc/nginx/sites-available/‘ 디렉토리로 이동하여 vim 편집기를 사용하여 ‘kibana’라는 이름의 새 가상 호스트 파일을 생성합니다.
cd /etc/nginx/sites-available/
vim kibana도메인 이름과 ‘proxy_pass’ IP 주소를 자신의 것으로 변경한 후, 아래 내용을 붙여넣습니다.
server {
listen 80;
server_name elk.hakase-labs.io;
location / {
proxy_pass http://172.16.0.3:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}저장하고 닫습니다.
다음으로, Kibana를 위한 Nginx 가상 호스트를 활성화하고 Nginx 구성을 확인합니다.
ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
nginx -t오류가 없으면 Nginx 서비스를 재시작합니다.
systemctl restart nginx결과적으로, Kibana를 위한 리버스 프록시로서 Nginx의 설치 및 구성이 완료되었습니다. 이제 Kibana 대시보드는 도메인 이름 ‘elk.hakase-labs.io’를 통해 접근할 수 있습니다.

웹 브라우저를 열고 주소 표시줄에 Kibana 설치의 도메인 이름을 입력합니다.
그러면 아래와 같은 Kibana 로그인 페이지가 나타납니다.

사용자 ‘hakase’와 비밀번호 ‘hakasepass’를 입력하고 ‘로그인‘ 버튼을 클릭합니다.
로그인하면 샘플 데이터를 가져오거나 데이터를 탐색하라는 메시지가 표시됩니다.

‘내 데이터 탐색‘ 버튼을 클릭합니다.
이제 아래와 같은 Kibana 대시보드를 얻을 수 있습니다.

결과적으로, Kibana와 Nginx 설치가 완료되었습니다.
5단계 - Filebeat 설치 및 구성
이 단계에서는 호스트 이름 “client01”과 IP 주소 “xxx.xxx.xxx.xxx”를 가진 클라이언트 머신에 “Filebeat”를 설치합니다. Filebeat는 로그를 Elasticsearch 서버로 직접 전송합니다.
“Filebeat”를 설치하기 전에 Elastic Stack 저장소가 시스템에 추가되었는지 확인합니다.
이제 아래의 apt 명령어를 사용하여 filebeat 패키지를 설치합니다.
sudo apt install filebeat모든 설치가 완료되면 ‘/etc/filebeat’ 디렉토리로 이동하여 vim 편집기를 사용하여 ‘filebeat.yml’ 구성 파일을 편집합니다.
cd /etc/filebeat/
vim filebeat.yml‘filebeat.inputs’ 구성의 맨 위에서 ‘enabled: false’를 ‘enabled: true’로 변경합니다.
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log다음으로, Kibana 구성으로 이동하여 Kibana IP 주소와 포트로 호스트를 변경하고, 사용자 이름을 기본 사용자 ‘kibana’로, 위에서 생성된 비밀번호로 변경합니다.
setup.kibana:
host: "172.16.0.3:5601"
username: "kibana"
password: "U6gDLoJCqqChqcbD1IYV"그 후, ‘output.elasticsearch’ 구성으로 이동하여 자신의 세부정보로 변경합니다.
output.elasticsearch:
hosts: ["172.16.0.3:9200"]
username: "elastic"
password: "elu2ZlMm4mOkM7fgCeUM"저장하고 닫습니다.
이제 systemd 관리자를 다시 로드하고, filebeat 서비스를 시작하고 시스템 부팅 시 자동으로 시작되도록 추가합니다.
systemctl daemon-reload
systemctl start filebeat
systemctl enable filebeatFilebeat 서비스가 “client01“ 머신에서 실행되고 있습니다.

다음으로, 아래 명령어를 사용하여 Elasticsearch 서버에 filebeat 인덱스 템플릿을 로드해야 합니다.
filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["http://172.16.0.3:9200"]'아래는 얻을 수 있는 결과입니다.
결과적으로, filebeat 인덱스 템플릿이 Elasticsearch 서버에 로드되었으며, Kibana 대시보드에서 ‘filebeat-*’ 인덱스 패턴으로 사용할 수 있습니다.
6단계 - Kibana 사용자에 대한 새 역할 설정
이 단계에서는 Elasticsearch API를 통해 사용자 ‘hakase’가 Elasticsearch 서버의 모든 인덱스에 접근하고 관리할 수 있도록 하는 새 Elasticsearch 역할을 생성합니다.
사용자가 Elasticsearch 서버에서 인덱스를 관리할 수 있도록 허용하는 ‘ events_index ‘라는 새 역할을 생성합니다.
curl -XPOST -u elastic 'http://172.16.0.3:9200/_security/role/events_index' -H "Content-Type: application/json" -d '{
"indices" : [
{
"names" : [ "*" ],
"privileges" : [ "all" ]
}
]
}'
그 후, 아래 명령어를 사용하여 역할 ‘ events_index ‘를 확인합니다.
curl -X GET -u elastic "http://172.16.0.3:9200/_security/role/events_index?pretty"아래는 얻을 수 있는 결과입니다.

보시다시피, 역할 ‘events_index’는 인덱스를 관리할 수 있는 권한만 가집니다.
다음으로, 아래 명령어를 사용하여 ‘hakase’ 사용자에게 ‘events_index’ 역할을 추가합니다.
curl -X POST -u elastic "http://172.16.0.3:9200/_security/user/hakase?pretty" -H 'Content-Type: application/json' -d'
{
"password" : "hakasepasskibana",
"roles" : [ "kibana_admin", "events_index" ]
}
'‘elastic‘ 사용자에 대한 비밀번호를 입력하면 역할 ‘events_index‘가 ‘hakase‘ 사용자에게 할당됩니다.
아래 명령어를 사용하여 ‘hakase’ 사용자 아래의 모든 사용 가능한 역할을 확인합니다.
curl -X GET -u elastic "http://172.16.0.3:9200/_security/user/hakase?pretty"아래는 얻을 수 있는 결과입니다.

결과적으로, Elasticsearch 서버에서 인덱스를 관리하는 새 역할을 생성했습니다.
7단계 - Filebeat에 대한 새 인덱스 패턴 생성
‘events_index’라는 새 역할을 생성한 후, ‘ hakase ‘ 사용자를 통해 Filebeat에 대한 새 인덱스 패턴을 생성합니다.
- 인덱스 패턴 생성
Kibana 대시보드에서 왼쪽 메뉴 옵션을 클릭하고 “ 관리 “ 섹션으로 이동한 후 “ 스택 관리 “를 클릭합니다.
“ Kibana “ 섹션에서 “ 인덱스 패턴 “을 클릭합니다.

“인덱스 패턴 생성” 버튼을 클릭하여 새 인덱스 패턴을 생성합니다.
“인덱스 패턴” 필드에 “ filebeat-* “를 입력하고 “ 다음 단계 “ 버튼을 클릭합니다.

“시간 필터 필드 이름”에서 “ @timestamp “를 선택하고 “ 인덱스 패턴 생성 “ 버튼을 클릭합니다.

그리고 “ filebeat-* “ 인덱스 패턴이 생성되었으며, 기본 인덱스 패턴으로 선택되었습니다(이전 인덱스 패턴이 없는 경우).

- Kibana에서 데이터 표시
Filebeat가 수집한 데이터를 표시하려면, 왼쪽 상단의 옵션 메뉴를 클릭한 후 “ 발견 “을 클릭합니다.
그러면 “ client01 “ 머신에서 Filebeat가 수집한 모든 데이터가 표시됩니다.

필터를 기반으로 데이터를 표시하려면 “ KQL “ 또는 Kibana 쿼리 언어를 사용할 수 있습니다.
“ KQL “ 필드에 다음 쿼리를 입력합니다.
host.name : client01 and log.file.path: "/var/log/auth.log"그러면 “client01” 머신에서 SSH 인증에 대한 모든 정보를 얻을 수 있습니다.

결과적으로, 우분투 20.04에서 보안이 활성화된 Elastic Stack 설치가 성공적으로 완료되었습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.