Elastic의 ELKStack을 활용하여 데이터 파이프라인 구축하는 방법에 대해 알아봅니다.
내용을 보시기 전, ELKStack과 각 구성요소가 어떤 역할을 하는지 알고 수행하시면 이해에 도움이 됩니다.
이번 내용에서는 ELKStack 실행 > 수집 > 적재 > 조회하는 것이며, 상세히 말씀드리면, 다음과 같습니다.
1) Logstash를 프롬프트로 입력한 데이터를 2) ElasticSearch 적재하고, 3) Kibana를 DevTool을 통해 조회
먼저, ELK Stack 구축을 하기 전 ElasticSearch, Logstash, Kibana를 설치해야 합니다.
설치 방법은 다음과 같습니다.
1. ElasticSearch 설치 글
https://dogf.tistory.com/60?category=836735
[ElasticSearch] 설치
Elastic의 검색엔진 ElasticSearch를 설치하는 방법을 알려드리겠습니다. 다운로드 링크 접속 > 파일 다운로드 > 압축해제 (끝) 먼저, ElasticSearch 설치 경로로 들어갑니다. https://www.elastic.co/kr/download..
dogf.tistory.com
2. Logstash 설치 글
https://dogf.tistory.com/59?category=955635
[Logstash] 설치
Elastic의 데이터 수집기 Logstash를 설치하는 방법을 알려드리겠습니다. 다운로드 링크 접속 > 파일 다운로드 > 압축해제 (끝) 먼저, Logstash 설치 경로로 들어갑니다. https://www.elastic.co/kr/downloads/pas..
dogf.tistory.com
3. Kibana 설치 글
https://dogf.tistory.com/61?category=955636
[kibana] 설치
Kibana 설치 방법에 대해 알아봅니다. Elastic의 데이터 시각화 도구 Kibana를 설치하는 방법을 알려드리겠습니다. 다운로드 링크 접속 > 파일 다운로드 > 압축해제 (끝) 먼저, Kibana 설치 경로로 들어갑
dogf.tistory.com
저는 "C드라이브 밑에 elastic이란 디렉터리를 만들어 설치해두었습니다."
설치가 완료되었으면, 다음과 같은 순서를 지켜가며 실행을 시킵니다.
1) ElasticSearch
2) Kibana
3) Logstash
4) 다루고 있지는 않지만 Beats
순서를 지키는 이유는 조금 복잡하지만 간단히 아래 접은 글로 남기겠습니다.
기본적인 ELKStack을 통해 파이프라인을 구축하는 현재 상황에서 Kibana는 ElasticSearch를 기반으로 구동되기 때문에 의존적이라고 할 수 있습니다.
그래서, ElasticSearch가 먼저 띄워져 있어야 정상 구동됩니다.
2~4번은 순서가 바뀌어도 상관은 없습니다만,
목적 자체가 Logstash를 통해 수집해 ElasticSearch에 적재하고 Kibana로 확인하는 것이기 때문에 순서를 아래와 구동할 필요가 있습니다.
기본적인 ELKStack을 통해 파이프라인을 구축하는 현재 상황에서 Kibana는 ElasticSearch를 기반으로 구동되기 때문에 의존적이라고 할 수 있습니다.
그래서, ElasticSearch가 먼저 띄워져 있어야 정상 구동됩니다.
2~4번은 순서가 바뀌어도 상관은 없습니다만,
목적 자체가 Logstash를 통해 수집해 ElasticSearch에 적재하고 Kibana로 확인하는 것이기 때문에 순서를 아래와 구동할 필요가 있습니다.
실행시키는 방법은 다음과 같습니다.
1) ElasticSearch
ElasticSearch 설치 경로/bin 디렉터리에 "elasticsearch.bat" 파일을 실행시키거나,
명령 프롬프트 창을 열어 다음과 같이 설치 디렉터리에 이동해 명령어를 칩니다.
//설치 디렉터리 이동 후 (저는 cd C:\elastic\elasticsearch-7.6.0\bin 로 이동했습니다.)
C:\elastic\elasticsearch-7.6.0\bin>elasticsearch.bat
실행하면, 로그가 쭉 나오고 하얀색으로 하이라이팅 되어 있는 부분처럼
...
[node-1] started
...
라고 나오고 뒤에 에러가 없으면 정상적으로 실행된 겁니다.
실행 완료 후, 웹 브라우저를 켜고 URL 입력 창에 "localhost:9200"을 치면
다음과 같이 나왔을 때 정상적으로 구동되고 있음을 확인할 수 있습니다.
ElasticSearch 실행 끝
2) Kibana
Kibana 설치 경로/bin 디렉터리에 접근에 "kibana.bat" 파일을 실행시키거나,
명령 프롬프트 창을 열어 다음과 같이 설치 디렉터리에 이동해 명령어를 칩니다.
//설치 디렉터리 이동 후 (저는 cd C:\elastic\kibana-7.6.0\bin 로 이동했습니다.)
C:\elastic\kibana-7.6.0\bin>kibana.bat
실행하면, 로그가 쭉 나오고 하얀색으로 하이라이팅 되어 있는 부분처럼
...
Server running at http://0.0.0.0:5601
...
라고 나오고 뒤에 에러가 없으면 정상적으로 실행된 겁니다.
실행 완료 후, 웹 브라우저를 켜고 URL 입력 창에 "localhost:5601"을 치면
다음과 같이 나왔을 때 정상적으로 구동되고 있음을 확인할 수 있습니다.
Kibana 실행 끝
3) Logstash
Logstash는 위 실행 방법과는 다릅니다.
먼저, Logstash 설치 디렉터리 밑에 config 디렉터리에 logstash-sample.conf 파일이 있습니다.
이 파일을 수정해,
(Input) 수집 데이터 소스를 지정하고,
(Output) 데이터를 ElasticSearch로 보낼 수 있습니다.
파일을 열어보면,
이렇게 되어있는데, 우리는 Beats까지 연동하지 않을 거기 때문에
다음 내용으로 수정합니다.
input {
stdin{}
}
filter {
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "test"
}
}
간단하게 설명드리면
input 부분의 stdin {} 은 키보드 입력을 받겠다는 구문입니다.
filter는 입력된 데이터를 필터링(전처리, 정제 등) 할 때 활용되는데 일단 비워둡니다.
output 부분에는 elasticsearch의 접근 경로를 http 호출 형식으로 작성해주고, index를 "test"로 해줍니다.
이때 index는 RDMBS의 테이블과 비슷한 역할을 합니다.
index 명을 기준으로 실행 후 elasticsearch와 kibana를 통해 조회를 해볼 겁니다.
위 conf 파일을 수정한 후, 명령 프롬프트 창을 열어 다음과 같이 Lostash 설치 디렉터리에 이동해 명령어를 칩니다.
//설치 디렉터리 이동 후 (저는 cd C:\elastic\logstash-7.6.0\bin 로 이동했습니다.)
C:\elastic\logstash-7.6.0\bin>logstash.bat -f C:\elastic\logstash-7.6.0\config\logstash-sample.conf
위와 같이 config 디렉터리에 있는 내용과 함께 실행시킵니다.
실행하면, 로그가 쭉 나오고 하얀색으로 하이라이팅 되어 있는 부분처럼
...
Successfully started Logstash API endpoint {:port=>9600}
...
라고 나오고 뒤에 에러가 없으면 정상적으로 실행된 겁니다.
Logstash까지 실행 완료가 되면, ELKStack을 활용한 데이터 파이프라인 구축이 완료되었습니다.
이제 ELKStack이 정상적으로 작동하는지 확인해보도록 하겠습니다.
1) Logstash 수집
2) Elasticsearch 적재
3) Kibana 조회
1) Logstash 수집
실행 후에 입력이 가능해지는데, 하얀색으로 하이라이팅 되어 있는 부분처럼 아무 내용이나 입력합니다.
2) ElasticSearch 적재
웹 브라우저에 http://localhost:9200/test/_search?pretty 를 입력하면
test index 데이터를 조회해볼 수 있고, 성공적으로 적재되어 있는 모습을 볼 수 있습니다.
3) Kibana 조회
웹 브라우저에 http://localhost:5601/를 입력해 들어가서
좌측 하단 3번째에 위치한 Dev Tools 메뉴를 클릭하면 다음과 같은 화면이 나옵니다.
위 그림 좌측에 입력된 내용처럼 Query DSL 이라는 SQL과 비슷한 쿼리를 통해 test 인덱스의 내용을 조회합니다.
위 그림 우측에 하늘색으로 하이라이팅 된 것처럼 ElasticSearch에 들어간 내용이 조회되는 것을 볼 수 있습니다.
GET test/_search
{
"query": {
"match_all": {}
}
}
이렇게, ELKStack을 활용해 기본적인 데이터 파이프라인을 구축해보았습니다.
이제 지금까지 한 내용을 기반으로 추후에는
Logstash를 통해 다양한 소스의 데이터를 수집하여,
ElasticSearch에 적재하고,
Kibana로 쿼리를 만들거나 데이터 시각화를 할 수 있는 기반을 만들 수 있습니다.
이상입니다.
댓글