728x90
반응형
Kafka Sink Connector + Elasticsearch + Kibana를 Docker-compose를 이용해 Xpack이 적용된 형태로 구축했다.
아래 스크립트는 카프카 싱크 커넥터를 설치하는 스크립트이다.
#!/bin/bash
FILE="./connect-plugins/confluentinc-kafka-connect-elasticsearch-14.0.3"
curl -X DELETE http://localhost:8083/connectors/elasticsearch-sink
if [ ! -e $FILE ]; then
curl -o ./connect-plugins/confluentinc-kafka-connect-elasticsearch-14.0.3.zip https://d1i4a15mxbxib1.cloudfront.net/api/plugins/confluentinc/kafka-connect-elasticsearch/versions/14.0.3/confluentinc-kafka-connect-elasticsearch-14.0.3.zip
unzip ./connect-plugins/confluentinc-kafka-connect-elasticsearch-14.0.3.zip
rm -f ./connect-plugins/confluentinc-kafka-connect-elasticsearch-14.0.3.zip
fi
curl -X POST http://localhost:8083/connectors -H 'Content-Type: application/json' -d \
'{
"name": "elasticsearch-sink",
"config": {
"connector.class": "io.confluent.connect.elasticsearch.ElasticsearchSinkConnector",
"tasks.max": "1",
"topics": "log",
"key.ignore": "true",
"schema.ignore": "true",
"connection.url": "http://000.000.000.000:9200",
"type.name": "_doc",
"name": "elasticsearch-sink",
"key.converter": "org.apache.kafka.connect.json.JsonConverter",
"value.converter": "org.apache.kafka.connect.json.JsonConverter",
"key.converter.schemas.enable": "false",
"value.converter.schemas.enable": "false",
"connection.username": "elastic",
"connection.password": "changeme"
}
}'
connection.username과 connection.password 쪽을 보면 인증에 필요한 정보를 전달하는 것을 볼 수 있다. 이제 카프카 커넥트 설정이 완료 되었으니 엘라스틱서치랑 키바나에 설정을 해주자.
version: '3.9'
services:
elasticsearch:
container_name: elastic
image: docker.elastic.co/elasticsearch/elasticsearch:8.8.1
ports:
- '9200:9200'
- '9300:9300'
environment:
- xpack.security.enabled=true
- discovery.type=single-node
- bootstrap.memory_lock=true
- 'ES_JAVA_OPTS=-Xms1024m -Xmx1024m'
- 'LS_JAVA_OPTS=-Xmx1024m -Xms1024m'
- cluster.routing.allocation.disk.threshold_enabled=false
- TZ=Asia/Seoul
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- ./data:/usr/share/elasticsearch/data
kibana:
container_name: kibana
image: docker.elastic.co/kibana/kibana:8.8.1
ports:
- 5601:5601
environment:
- ELASTICSEARCH_HOSTS=http://000.000.000.000:9200
- ELASTICSEARCH_USERNAME=kibana_system
- ELASTICSEARCH_PASSWORD="changeme"
volumes:
- ./kibana:/usr/share/kibana/data
# - type: bind
# source: ./kibana/config/kibana.yml
# target: /usr/share/kibana/config/kibana.yml
엘라스틱서치의 docker-compose.yml 파일이다.
xpack.security.enabled=true
로 설정해 xpack을 활성화 시켰으며
키바나에서는
- ELASTICSEARCH_USERNAME=kibana_system
- ELASTICSEARCH_PASSWORD="changeme"
를 추가해서 인증에 필요한 정보를 설정했다.
주석된 부분은 키바나의 설정 파일을 바인딩 하는 부분으로써 설정 파일을 직접 적용할 경우 주석을 해제한다. 아닐 경우엔 자동 생성된 설정 파일을 사용해도 무관하다.
이제 docker-compose up --build -d 명령어를 이용해 도커 컨테이너를 생성하면
docker exec -it elastic /bin/bash
명령어를 이용해 엘라스틱서치 ssh로 연결할 수 있다.
아래 명령어를 엘라스틱서치 쉘에서 입력하면 비밀번호를 변경할 수 있다.
./bin/elasticsearch-setup-passwords interactive
이제 changeme 부분을 변경한 비밀번호로 바꿔주자. 그리고 도커를 다시 빌드해주면 키바나가 정상적으로 작동하는 것을 볼 수 있다.
docker-compose up --build -d
이제 엘라스틱서치 주소로 접속하면 아래와 같이 인증 메세지를 확인할 수 있다.
키바나에서도 마찬가지로 로그인 화면을 볼 수 있다.
728x90
반응형
'SRE > ELK' 카테고리의 다른 글
[elasticsearch] grok 이용해서 string에서 값 추출해서 필드로 매핑하기 (0) | 2023.06.21 |
---|---|
[Elasticsearch] 인덱스 필드 정리 및 리인덱싱 (0) | 2023.06.20 |