docker-compose.yml 파일의 volumes의 conf 폴더에는 elasticsearch.yml 파일과 cloudformation에서 이상하게 6.x 버전은 ingest-geoip이라는 plugin이 필요해서 그 폴더들을 넣어주었다.
kibana의 volumes도 마찬가지로 conf폴더엔 kibana.yml 파일이 존재한다.
단순히 test 용이라면 따로 설정파일을 생성해놓을 필요는 없을 것이다.
이제 elasticsearch, kibana를 실행시켜보자.
1
$ docker-compose up -d
지금까지는 elasticsearch, kibana를 실행한 것 뿐이다.
http://localhost:5601 로 접속해보면 kibana가 잘 뜰 것이다.
이제, Search Guard를 실행 시켜보자. 이 글에서는 docker-compose로 docker에서 실행 시켰기 때문에 docker-compose exec 명령으로 실행 시킨다. docker를 쓰지 않는다면 docker-compose exec -T ~~ 뒤 부터 실행하면 된다.
kibana plugin을 설치한다. 버전은 위의 elasticsearch 부분을 참조하길 바란다.
kibana.yml파일에 설정을 추가한다.
kibana.yml 파일을 적용하기 위해 kibana를 restart 한다.
여기까지 완료 했다면, localhost:5601 or {serverIP}:5601 로 kibana에 접속해보면
다음과 같이 login 화면이 나올 것이다. admin / admin으로 접속하면 된다.
ID / Password 는 따로 권한을 줄 수 있는데 여기서 다루지는 않겠다. ID마다 보여주는 log의 index를 달리할 수 있다.
보통 Fluentd -> Elasticsearch -> Kibana로 log를 보낼 것인데, 만약 Search Guard를 적용했을 경우 Fluentd의 설정도 변경해줘야한다. http가 아닌 https로 보내야 하기 때문에..
보통 fluentd.conf 파일을 다음과 같이 작성하고 있었다면,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<match **> # Add your log tag to show in <>. @type copy
<store> # Add your log tag to show in <>. @type file # Leave log file in path. path /fluentd/log/docker_data.log
</store>
<store>
@type elasticsearch
host {elasticsearch_ip} port 9200 logstash_format true index_name logstash
type_name logstash
logstash_prefix logstash
</store>
</match>
scheme https
ssl_verify false
user admin
password admin
ssl_version TLSv1_2
를 추가해서 다음과 같이 작성해야한다. 그러면 fluentd 에서 Elasticsearch로 log를 잘 보낼 것이다.
<match **> # Add your log tag to show in <>. @type copy
<store> # Add your log tag to show in <>. @type file # Leave log file in path. path /fluentd/log/docker_data.log
</store>
<store>
@type elasticsearch
host {elasticsearch_ip} port 9200 scheme https
ssl_verify false user admin
password admin
ssl_version TLSv1_2
logstash_format true index_name logstash
type_name logstash
logstash_prefix logstash
</store>
</match>