[Devops] Kafka 로컬 실습 3. ELK로 Kafka에서 전송한 log 보기

Walter Mitty·2023년 9월 22일
0

Kafka

목록 보기
3/4

참고자료 by Jeffrey Oh

시작전에,

만약 실습 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

시작 후

Elasticsearch + Kibana

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) Elasticsearch9200 포트를 사용하므로 웹브라우저 하나켜서 localhost:9200 로 접속해보자


8) Kibana5601 포트를 사용하므로 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


Logstash

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 토픽으로 메시지가 들어오는걸 확인하면 끝이다.

0개의 댓글