Docker 환경에서 ELK + MySQL 연동하기 #1 ELK + MySQL 설치
안녕하세요. 남산돈가스입니다.
지난 포스팅까지 Docker의 기본 사용법에 대해서 알아보았습니다.
이번에는, 2번의 포스팅으로 나누어 Docker 환경 위에서 ELK스택을 구성하는 법에 대해서 소개 해드릴까 합니다.
회차 별로 소개할 내용은 다음과 같습니다.
- #1. ELK + MySQL 설치
- #2. ELK + MySQL 연동
그 중 첫 번째 시간으로, ELK스택 환경과 연동을 위한 MySQL을 설치해보겠습니다.
Docker 환경 위에서 설치하기 때문에, Docker에 대한 기본 사용법은 숙지하고 계셔야합니다.
Docker(도커) 기본 사용법 을 참고하시면 될 것 같습니다.
자, 그럼 일단 환경설치를 위해서는 Docker 이미지를 설치해야합니다.
필요한 Docker 이미지는 ELK의 Elasticsearch, Logstash, Kibana 그리고 MySQL까지 총 4개입니다.
pull 명령어를 이용하여 해당하는 이미지를 다운받습니다.
* Elasticsearch
pull 명령어를 이용하여 해당하는 이미지를 다운받습니다.
* Elasticsearch
gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/es/data:> docker pull elasticsearch Using default tag: latest latest: Pulling from library/elasticsearch 0bd44ff9c2cf: Pull complete 047670ddbd2a: Pull complete ea7d5dc89438: Pull complete 4a05570971bb: Pull complete 66f679cd5859: Pull complete 89362eaac850: Pull complete d76c23323cb4: Pull complete f7a113d2d566: Pull complete aba04b0b43a6: Pull complete 9a29cd26e638: Pull complete 4e2a9305ca59: Pull complete 0687201a6469: Pull complete ccf428600204: Pull complete cb86c34e67e2: Pull complete 560b71b413d5: Pull complete Digest: sha256:08ae99808465a96359f861a0e8fbb08b5120a0b8030556be2525b9e7f1879baf Status: Downloaded newer image for elasticsearch:latest
* Logstash
gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/es/data:> docker pull logstash Using default tag: latest latest: Pulling from library/logstash 0bd44ff9c2cf: Already exists 047670ddbd2a: Already exists ea7d5dc89438: Already exists 4a05570971bb: Already exists 66f679cd5859: Already exists 89362eaac850: Already exists d76c23323cb4: Already exists f7a113d2d566: Already exists cb2dece5a7e2: Pull complete 8cf5a699244c: Pull complete c275eeaebd29: Pull complete 159e9a1395db: Pull complete 01be31fa2906: Pull complete 9b5ca62233e3: Pull complete 39280aea2b61: Pull complete 6bac8e5eed53: Pull complete Digest: sha256:edd49321633aff49b0f7d65f0f369b5555b467b1d8b7a29c629802beb9f0a68f Status: Downloaded newer image for logstash:latest
* kibana
gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/es/data:> docker pull kibana Using default tag: latest latest: Pulling from library/kibana 1c7fe136a31e: Pull complete 2ae044b11314: Pull complete c8f2070703d2: Pull complete 5cc92ab6db31: Pull complete ea2c37920862: Pull complete 43d9f974ea9c: Pull complete a88aa0abc175: Pull complete d8fc1dc2c1af: Pull complete 601b229b83db: Pull complete Digest: sha256:ced43063a16a9871d707cb6aa3afb073401eff40a65c44fb3a8bde739d02f637 Status: Downloaded newer image for kibana:latest
* mysql
gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/es/data:> docker pull mysql:5.7 5.7: Pulling from library/mysql 683abbb4ea60: Pull complete 0550d17aeefa: Pull complete 7e26605ddd77: Pull complete 9882737bd15f: Pull complete 999c06ab75f6: Pull complete c71d695f9937: Pull complete c38f847c1491: Pull complete 74f9c61f40bf: Pull complete 30b252a90a12: Pull complete 9f92ebb7da55: Pull complete 90303981d276: Pull complete Digest: sha256:1203dfba2600f140b74e375a354b1b801fa1b32d6f80fdee5f155d1e9f38c841 Status: Downloaded newer image for mysql:5.7
이렇게 네 개의 이미지를 모두 받은 뒤 images 명령어를 사용하여 설치 된 이미지들을 확인합니다.
gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/es/data:> docker images REPOSITORY TAG IMAGE ID CREATED SIZE elasticsearch latest 34e7bf3e65dc 24 hours ago 486MB logstash latest 1e33d1083609 24 hours ago 653MB mysql 5.7 66bc0f66b7af 31 hours ago 372MB kibana latest 755bc6d73213 31 hours ago 389MB
이미지들이 정상적으로 설치되었으므로, 하나 하나씩 구동을 해보겠습니다.
- MySQL 구동하기
gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/es/data:> docker run -d --name mysql -it -p 3306:3306 -e MYSQL_ROOT_PASSWORD=qwer1234 mysql:5.7 eca006b35c8209fd1c2982a8ee57a20d82b7388d4da77e174421ef293a9005d8 gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/es/data:> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES eca006b35c82 mysql:5.7 "docker-entrypoint.s…" Less than a second ago Up 2 seconds 0.0.0.0:3306->3306/tcp mysql
Docker 환경에서 Mysql 구성하는 법은 정말 간단하게 명령어 한줄로 해결됩니다.
$ docker run -d --name mysql -it -p 3306:3306 -e MYSQL_ROOT_PASSWORD=qwer1234 mysql:5.7
설명하자면, -d 옵션으로 백그라운드에서 Mysql 컨테이너가 실행되도록 했고, --name을 통해 mysql 이라는 이름의 컨테이너를 만들었습니다. 그리고 -p 옵션으로 호스트와 도커환경의 포트를 3306:3306으로 포트포워딩 설정시켰습니다. 그리고 -e 옵션으로 구동할 MYSQL_ROOT_PASSWORD 환경변수를 지정하였습니다.
run 명령을 실행한 뒤, ps 명령을 통해 mysql 컨테이너가 실행되고 있는 지 확인할 수 있습니다.
그렇다면 실제로 해당 mysql이 구동이 되었는 지 확인하기 위해서 mysql workbench에서 해당 호스트로 접속해보겠습니다.
mysql workbench를 실행하고, 새로운 연결을 설정합니다. mysql 구동 시 -p 옵션으로 제 로컬호스트의 3306포트를 mysql이 실행되고있는 도커컨테이너의 3306 포트로 포트포워딩을 했기 때문에
host의 제 로컬호스트인 (127.0.0.1)을, 포트는 3306, 사용자는 root로 설정하여 접속할 수 있게 되었습니다.
- Elastic search 구동하기
다음으로, Elastic Seach를 구동하겠습니다.
gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/es/data:> docker run -d --name elasticsearch -it -p 9200:9200 -p 9300:9300 elasticsearch cd8c709eb576d0fb10e2caecbf444ebd655278841f2dced41cfdeabd197d0c54 gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/es/data:> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cd8c709eb576 elasticsearch "/docker-entrypoint.…" 28 seconds ago Up 36 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch eca006b35c82 mysql:5.7 "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 0.0.0.0:3306->3306/tcp mysql gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/es/data:> curl -XGET localhost:9200 { "name" : "dm2Axi5", "cluster_name" : "elasticsearch", "cluster_uuid" : "vQyvOv3sTHKjsTWVhZUMpw", "version" : { "number" : "5.6.10", "build_hash" : "b727a60", "build_date" : "2018-06-06T15:48:34.860Z", "build_snapshot" : false, "lucene_version" : "6.6.1" }, "tagline" : "You Know, for Search" }
$ docker run -d --name elasticsearch -it -p 9200:9200 -p 9300:9300 elasticsearch
elasticsearch 역시도 명령어 한 줄로 가볍게 구동할 수 있었습니다. -p 옵션으로 9200, 9300 포트를 포트포워딩하였습니다.
ps명령을 통해 elasticsearch가 실행 중인 것을 확인했고,
실제 elasticsearch가 기능을 하는 지 알아보기 위해 curl으로 요청을 보냈습니다.
$ curl -XGET 127.0.0.1:9200
을 요청하면 위 화면과 같이 설치 된 elasticsearch의 기본 정보를 반환해주고 있습니다.
- Kibana 구동하기
다음은, Kibana 입니다.
gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/es/data:> docker run -d -it --name kibana -p 5601:5601 --link elasticsearch:elasticsearch kibana c7e8d59cdf120724cf5edc1fcab2af59bfea505cb760f6da045667e69b20602d gimseongsin@gimseongsin-ui-MacBook-Pro:~/Desktop/es/data:> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c7e8d59cdf12 kibana "/docker-entrypoint.…" Less than a second ago Up 1 second 0.0.0.0:5601->5601/tcp kibana cd8c709eb576 elasticsearch "/docker-entrypoint.…" 9 minutes ago Up 9 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch eca006b35c82 mysql:5.7 "docker-entrypoint.s…" 20 minutes ago Up 21 minutes 0.0.0.0:3306->3306/tcp mysql
$ docker run -d -it --name kibana -p 5601:5601 --link elasticsearch:elasticsearch kibana
명령어로 kibana를 구동했습니다. 특이한 점은, kibana의 경우 --link옵션으로 도커컨테이너끼리의 연결해줬다는 점입니다. kibana는 내부적으로 elasticsearch의 정보를 시각화해주는 도구이므로 elasticsearch에 연결할 수 있는 상태여야하기 때문에 --link [환경명]:[별칭] 옵션을 통해 elasticsearch와 연결을 한 것입니다.
이렇게 구동을 한 뒤, 웹 브라우저에서 http://localhost:5601 로 접속하면 kibana 에 접속되는 것을 확인하실 수 있습니다.
오늘은 여기까지 mysql, elasticsearch, kibana 까지 설치해보았습니다. logstash같은 경우 다음 포스팅에서 진행 될 mysql 연동과 관련이 있기 때문에 다음 포스팅에서 함께 다루도록 하겠습니다.
감사합니다.
댓글
댓글 쓰기