Nginx -> Filebeat -> Kafka -> Logstash -> Kibana -> Elasticsearch
각 서버의 로그를 분석하기 위한 구성으로 위와 같이 시스템을 구성 할 예정이며,
이번 편에서는 카프카 설치 및 테스트를 위해 Docker에서 Kafka까지 설치와 테스트를 해 볼 예정이다
Synology 나스의 도커에 설치를 했으며, 도커의 버젼은 아래와 같다
Docker version : 18.09.8, build 2c0a67b
Docker-compose version : 1.24.0, build 0aa59064
Base Image : centos7
우선 centos7를 컨테이너로 생성한 후 접속한다
(도커 명령어의 설명은 생략한다)
docker run -ti --name kafka -p 80:80 centos:7
생성한 컨테이너에 접속 후 yum 업데이트 및 필수 설치
yum -y update
yum -y install wget vim
# 파일 생성
vi /etc/yum.repos.d/nginx.repo
# 내용 입력
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
# Nginx 설치
yum install -y nginx
# Nginx 실행
/usr/sbin/nginx
# Nginx 명령어
/usr/sbin/nginx -s #stop, reopen,... etc
# 기본 log쌓이는곳
/var/log/nginx/access.log
* 참고사항 *
도커에서는 systemctl, service 와 같은 명령어를 사용하려면 관리자 권한을 얻어야 하지만
시놀리지에서 그러한 권한을 얻어 사용하는게 쉽지않다 (특히 네트워크는 안됨..)
그래서 실행파일을 직접호출하여 사용 한다
# 참고 URL
(https://www.elastic.co/guide/en/beats/filebeat/7.4/setup-repositories.html#_yum)
# 패키지 임포트
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
# 파일 생성
vi /etc/yum.repos.d/elastic.repo
# 내용 입력
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
# 패키지 설치
yum -y install filebeat
# 설정파일 열기
vi /etc/filebeat/filebeat.yml
# 설정 변경
paths:
#- /var/log/*.log
- /var/log/nginx/*.log
# 카프카 설정은 없으니 새로 만들어서 넣어줘야함
#-------------------------- Kafka output ------------------------------
output.kafka:
hosts: ["127.0.0.1:9092"]
codec.format:
string: '%{[message]}'
topic: 'nginx_log'
partition.round_robin:
reachable_only: false
required_acks: 1
compression: gzip
max_message_bytes: 1000000
# 실행 ( 마지막에 '&'를 붙이면 백그라운드 실행을 한다)
/usr/bin/filebeat --help
/usr/bin/filebeat run &
# 오픈jdk 자바 8설치
yum -y install java-1.8.0-openjdk
# kafka 다운로드
cd /etc/
wget http://apache.mirror.cdnetworks.com/kafka/2.3.0/kafka_2.12-2.3.0.tgz
# 압축 풀기
tar -xzvf kafka_2.12-2.3.0.tgz
# 폴더이름 변경
mv -f kafka_2.12-2.3.0/ kafka/
cd kafka/
# Zookeeper 설정
vi config/zookeeper.properties
dataDir=/var/lib/zookeeper
clientPort=2181
tickTime=2000
dataDir : 주키퍼의 상태, 스냅션, 트랜잭션 로그들을 저장하고 업데이트하는 디렉토리의 위치를 지정
clientPort : 클라이언트 포트번호 설정 kafka에서 접속할 포트번호 기본값 2181사용
tickTime : tick 단위 시간을 설정, milliseconds 단위. 위에서는 2초로 설정됨
추가 세팅 정보 : https://engkimbs.tistory.com/560
# Kafka 설정
vi config/server.properties
broker.id=0
listeners=PLAINTEXT://:9092
log.dirs=/var/lib/kafka/kafka-logs
zookeeper.connect=127.0.0.1:2181
broker.id : 클러스터내에서 브로커를 구분 하는 이름
listeners : 카프카에 접속할 URL, 포트번호 설정
log.dirs : 카프카 브로커가 메세지를 파일로 저장 할 디렉토리
zookeeper.connect : hostname:port 형식으로 주키퍼 커넥션을 지정
추가 세팅 정보 : https://ujfish-tools.tistory.com/entry/kafka-centos-%ED%99%95%EC%9D%B8%EC%82%AC%ED%95%AD
# 카프카 백그라운드 실행
/etc/kafka/bin/zookeeper-server-start.sh /etc/kafka/config/zookeeper.properties &
/etc/kafka/bin/kafka-server-start.sh /etc/kafka/config/server.properties &
# 토픽 테스트
/etc/kafka/bin/kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic test
/etc/kafka/bin/kafka-topics.sh --list --zookeeper 127.0.0.1:2181
/etc/kafka/bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic nginx_log --from-beginning
Apache Kafka - 설명 (0) | 2019.12.10 |
---|---|
Mac에서 SSH키 생성하기 (0) | 2019.11.25 |
Redmine CKEditor 설치 (0) | 2019.07.28 |
Synology Redmine 플러그인 설치 (0) | 2019.07.24 |
Synology Redmine 설치 하기 (1) | 2019.07.23 |