만약 실습 2까지 하고 도커를 꺼놓으셨다면 아래를 실행해주세요.
다시 실행할 땐 카프카 터미널에서 다시 docker-compose up 으로 도커 컴포즈부터 실행시켜준다.


Stopped > Created!
터미널 1,2에서
docker ps
docker exec -it kafka /bin/bash
까지 실행 후 bin 까지 이동
cd opt/kafka/bin
터미널 1에서는
./kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
터미널 2에서는
./kafka-topics.sh --create --bootstrap-server localhost:9092 --topic test
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
1) kafak, 메시지 실습용 터미널1,2 말고 또 다른 새로운 터미널을 하나 켜준다.
2) 원하는 경로에 elk 폴더 하나 생성
cd Desktop
mkdir elk
3) elk 폴더로 이동해서 docker-compose.yml 파일 생성
cd elk
vi docker-compose.yml
3-1) 내용
version: '2.2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2
container_name: elasticsearch
environment:
- node.name=elasticsearch
- discovery.seed_hosts=elasticsearch
- cluster.initial_master_nodes=elasticsearch
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65535
hard: 65535
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- 9200:9200
kibana:
image: docker.elastic.co/kibana/kibana:7.3.2
container_name: kibana
environment:
ELASTICSEARCH_URL: "http://elasticsearch:9200"
ports:
- 5601:5601
depends_on:
- elasticsearch
volumes:
esdata1:
driver: local
4) 도커 컴포즈 실행
docker-compose up
5) 터미널 하나 새로 띄우기
6) 도커 띄우기
docker ps

7) Elasticsearch는 9200 포트를 사용하므로 웹브라우저 하나켜서 localhost:9200 로 접속해보자

8) Kibana는 5601 포트를 사용하므로 localhost:5601 로 접속해보자
첫 접속시 샘플 데이터로 할래 너걸로 할래 클릭해야하는데 explore on my own 였나 그걸 클릭하자.

아무것도 안뜨는게 맞다.
9) 5)에서 만든 터미널에서 Logstash Install 하기
난 rpm 명령어가 안먹여서 Logstash Download Link로 접속해서 다운받았다.
만약 rpm 명령어 사용이 가능하다면 아래 명령어 사용
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

10) 기본적으로 Downloads 폴더에 들어가보면 다운받은 logstash 폴더가 있을 것이다. 그 폴더의 config까지 이동!
cd Downloads/logstash-{각자버전}/config

11) logstash.conf 파일 생성
vi logstash.conf
11-1) 내용
input {
kafka {
bootstrap_servers => "{ip address}:9092"
topics => ["registered_user"]
}
}
output {
elasticsearch {
hosts => ["{ip address}:9200"]
index => "registered_user" # 사실 output 이름은 원하는걸로 해도된다. 그러나 실제 서비스시에는 헷갈릴 수도 있으니 input과 동일하게!
workers => 1
}
}
여기서 {ip address} > localhost로, registered_user > test로 변경해준다.
아래처럼 원하는 단어를 replaceAll 처럼 치환 할 수 있다.
:%s/{ip address}/localhost/g
:%s/registered_user/test/g
12) 그리고 config 경로 그대로 pipelines.yml를 삭제 후 재생성 해준다.
rm -rf pipelines.yml
vi pipelines.yml
12-1) 내용
- pipeline.id: test
pipeline.workers: 1
path.config: "logstash.conf" // 만약 다른 config 기준으로 다른 경로에 있다면 상대경로 잘 적어줄것
13) logstash-8.10.2 경로로 이동해서 실행
cd .. // 만약 config경로에 있다면 상위 경로로 이동
bin/logstash -f config/logstash.conf

이러면 실패한건데, 위에 bin, config 경로에 들어가서 저 파일들이 잘 있나 확인해보자. 경로도 확인, 내가 logstash.yml나 다른파일이 아닌 conf파일을 실행한건지 확인
14) 메시지 퍼블리싱용으로 썼던 터미널1에서 메시지를 보내고 Kibana를 확인해보자
아래처럼 우리가 설정한 test라는 이름으로 새로운 값이 생성되어있는 것을 확인!

15) 위에까지 확인이 되었다면, Kibana 메뉴에서 Index Patterns > Create index pattern을 선택

16) 쫄지말고 index-name-*엔 아래에도 힌트가 나와있지만 아까 우리가 설정한 test 를 적어준다. Success! 가 뜨면 Next step


17) Time Filter field name에 @timestamp로 지정하고 Create index pattern 클릭

18) 인덱스 패턴 확인 한번 해주고

19) 마지막으로는 왼쪽 메뉴에서 Discover 메뉴로 들어가 test 토픽으로 메시지가 들어오는걸 확인하면 끝이다.
