
sudo apt update
sudo apt install openjdk-17-jdk -y
java -version
sudo apt install curl
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elastic-archive-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update
sudo apt install elasticsearch
sudo nano /etc/elasticsearch/elasticsearch.yml
network.host 주석 제거 및 ip 변경
network.host: 0.0.0.0
sudo ufw allow 9200
sudo ufw status
elasticsearch에서 사용되는 9200 포트를 열어준다.
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
curl -X GET "http://localhost:9200"
트러블 슈팅
→ 위 명령어 입력 시 서버 응답으로 empty reply 이 response 된다.
로그 확인 결과 ssl 관련 문제
curl -X GET "https://localhost:9200" -k
이렇게 했을 때 security_exception, 401 에러 발생했음
elastic search 는 install 하면 elastic 이라는 user가 자동으로 생성되고 비밀번호가 존재함
요청을 보낼때 elastic 유저와 비밀번호를 명시해서 호출해서 에러 해결했음
비밀번호를 모른다면
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
해당 파일을 통해서 비밀번호를 초기화하면서 화면에 비밀번호를 보여줌
최종적으로
curl -u elastic:c6SVlTVh3dyrA8lIKqSM -X GET "https://localhost:9200" -k
명령어를 실행했을 때 올바른 서버 응답을 불러왔음
같은 네트워크의 다른 PC에서 접속하는 테스트
url: https://172.30.1.13:9200/
접속 시에 사용자 이름과 비밀번호 입력하는 화면이 나온다

사용자 이름: elastic
비밀번호: 위에서 확인된 비밀번호
다른 PC에서 접속 성공
sudo apt install logstash
sudo nano /etc/logstash/conf.d/logstash.conf
input {
kafka {
bootstrap_servers => "localhost:9092" # Kafka 브로커 주소
topics => ["your-topic-name"] # Kafka 토픽 이름
group_id => "logstash_consumer_group" # Kafka 컨슈머 그룹 ID
}
}
filter {
# 필요한 필터 추가 (예: grok, mutate 등)
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "kafka-log-%{+YYYY.MM.dd}" # 인덱스 패턴
}
stdout { codec => rubydebug }
}
bootstrap_servers: Kafka 브로커 주소 (IP 주소 또는 호스트 이름과 포트).topics: Logstash가 구독할 Kafka 토픽 이름.group_id: Logstash의 Kafka 컨슈머 그룹 ID.sudo systemctl enable logstash
sudo systemctl start logstash
sudo apt install kibana
sudo nano /etc/kibana/kibana.yml
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
sudo systemctl enable kibana
sudo systemctl start kibana

같은 네트워크의 다른 PC에서 ip로 접속 성공
실행중인 PC에서는 localhost로 접속 가능
Kafka는 Zookeeper를 사용하여 클러스터 관리를 한다.
Kafka는 Java가 필요하기 때문에 jdk 없으면 설치
sudo apt update
sudo apt install openjdk-17-jdk -y
java -version
sudo apt install zookeeperd -y
systemctl status zookeeper
wget https://downloads.apache.org/kafka/3.8.1/kafka-3.8.1-src.tgz
tar -xzf kafka_3.8.1-src.tgz
sudo mv kafka_3.8.1-src /usr/local/kafka
echo 'export PATH=$PATH:/usr/local/kafka/bin' >> ~/.bashrc
source ~/.bashrc
sudo nano /usr/local/kafka/config/server.properties
broker.id=0
log.dirs=/usr/local/kafka/logs # 로그 저장 위치
zookeeper.connect=localhost:2181
listeners=PLAINTEXT://:9092
localhost:2181로 설정합니다.9092입니다.# Kafka 서버 시작
/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
위 명령어 입력했을 때 “Classpath is empty. Please build the project first e.g. by running ‘./gradlew jar -PscalaVersion=2.13.14’ 라는 문구 나옴
java 설치되어 있으면 /usr/local/kafka 경로에서 gradlew 실행
./gradlew jar -PscalaVersion=2.13.14
gradle 실행 시에 jdk 8로 잡혀 있으면 지원하지 않는다고 에러 발생함
11 이상 설치 후 JAVA_PATH 환경변수 설정을 해준다.
echo "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" ~/.bashrc
echo "export PATH=\$JAVA_HOME/bin:\$PATH" ~/.bashrc
변경 적용
source ~/.bashrc
JAVA_HOME 잡아준 자바의 버전으로 바뀌었는지 확인
java -version
gradle 실행 (/usr/local/kafka 경로에서 실행)
./gradlew jar -PscalaVersion=2.13.14
Kafka 실행
/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
Kafka 서버 확인
kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
b. 테스트 메시지 전송 및 수신: 두 개의 터미널을 열고, 하나는 메시지를 produce하고 다른 하나는 consume 하도록 설정합니다.
Producer (터미널 1)
kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092
메시지 입력하고 엔터 눌러서 kafka 서버에 전송
Consumer (터미널 2)
kafka-console-consumer.sh --topic test-topic --bootstrap-server localhost:9092 --from-beginning
Producer 터미널에서 입력해서 전송한 메시지가 Consumer 터미널에서 보이는지 확인