이번시간에는 저번에 설명해 드렸던 부분을 실제로 돌려보는 작업을 할 예정입니다.
* 설명한 부분이란 : nodejs로그를 kibana에서 검색 및 시각화
제 개발환경은 윈도우 10 이고 docker 와 docker-compose는 이미 설치하였습니다.
순서대로 따라해보시면 테스트해보실 수 있습니다.
순서는 다음과 같습니다
1. git clone https://github.com/baaaaaaaaaaaaam/logsystem
2. docker-compose 설명 및 실행
3. nodejs 접속 및 로그 확인
4. kibana 접속
5. 패스워드 초기화 & 파일 수정 & 재실행
6. filebeat 에서 nodejs 로그파일 확인
시작합니다
1. git clone https://github.com/baaaaaaaaaaaaam/logsystem
clone 아니까 위처럼 생겻습니다.
2. docker-compose 설명 및 실행
샘플로 두가지만 설명드릴게요
------------------------------------------------------중간 생략 --------------------------------------------------------

추후에 실제 경로에 로그가 잇는지 확인해 봅시다.
설명은 이정도로하고 실행해볼게요
docker-compose up -d
3. nodejs 접속 및 로그확인
위처럼 정상 실행되고 브라우져를 통해 localhost:3000으로 접속하면 hello world가 보일것 입니다.
이제 nodejs에 로그를 확인해 볼게여
a. docker container에서 로그확인
b. docker volume에서 로그확인
경로 검색
해당 파일
4. kibana 접속
localhost:5601 로 접속하시면됩니다
아 접속이안되네요.
kibana container 로그를 보시면 아래와 같이 표시되는데
{"type":"log","@timestamp":"2022-01-02T03:52:00+00:00","tags":["warning","plugins","security","config"],"pid":7,"message":"Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in the kibana.yml or use the bin/kibana-encryption-keys command."}
간단하게 패스워드 초기화해주면됩니다.. 다른방법을 못찾앗어요.. 방법을 다시 찾아봐야할듯..
5. 패스워드 초기화 & 파일 수정 & 재실행
명령어 : docker-compose exec -T elasticsearch bin/elasticsearch-setup-passwords auto --batch
그리고 kibana/config/kibana.yml 과 logstash/config/logstash.yml , logstash/pipeline/logstash.conf 의 패스워드를 위에서 받은 console의 값과 매칭 하여 를 각각 바꿔주세요
그리고
docker-compose restart kibana logstash
그리고 나서 다시
localhost:5601 로 접속하면 kibana가 열리는걸 볼수잇습니다.
elastic 유저 정보로 로그인 gogo
6. filebeat에서 nodejs로그 파일 확인
7. filebeat에서 logstash로 파일 전송하는지 확인.
.
.
2022-01-02T04:33:38.699Z INFO log/input.go:152 Configured paths: [/var/log/server/*/*.log]
.
.
2022-01-02T04:33:38.701Z INFO log/harvester.go:251 Harvester started for file: /var/log/server/info/2022-01-02.log
2022-01-02T04:33:38.701Z INFO log/harvester.go:251 Harvester started for file: /var/log/server/error/2022-01-02.error.log
2022-01-02T04:33:39.701Z INFO pipeline/output.go:95 Connecting to backoff(async(tcp://logstash:5044))
.
.
2022-01-02T04:35:08.655Z INFO [monitoring] log/log.go:145 Non-zero metrics in the last 30s {"monitoring": {"metrics": {"beat":{"cpu":{"system":{"ticks":30,"time":{"ms":3}},"total":{"ticks":170,"time":{"ms":12},"value":170},"user":{"ticks":140,"time":{"ms":9}}},"handles":{"limit":{"hard":1048576,"soft":1048576},"open":8},"info":{"ephemeral_id":"aa13ea0a-6b42-4c95-a070-655d622de608","uptime":{"ms":90124}},"memstats":{"gc_next":10565664,"memory_alloc":5767472,"memory_total":12981600},"runtime":{"goroutines":30}},"filebeat":{"harvester":{"open_files":2,"running":2}},"libbeat":{"config":{"module":{"running":0}},"pipeline":{"clients":1,"events":{"active":0}}},"registrar":{"states":{"current":2}},"system":{"load":{"1":2.1,"15":0.99,"5":1.71,"norm":{"1":0.2625,"15":0.1238,"5":0.2138}}}}}}
.
.
2022-01-02T04:38:43.715Z INFO log/harvester.go:276 File is inactive: /var/log/server/error/2022-01-02.error.log. Closing because close_inactive of 5m0s reached.
2022-01-02T04:38:43.715Z INFO log/harvester.go:276 File is inactive: /var/log/server/info/2022-01-02.log. Closing because close_inactive of 5m0s reached.
8.kibana에서 log 파일 검색 및 확인
만약 위 화면이 안뜨고 다른 3개의 선택지를 고르라는 화면이 뜨면 filebeat로부터 log index를 못받은것입니다
nodejs를 다시접속해서 로그를 만들어내던가 index생성부분이 잘못된것입니다.
name에 *log* , timestamp filed 는 @timestamp로 하고 생성해주시면되요
그리고 다시 discover로 이동하면 아래처럼 시간별 로그기록이 볼수있습니다.
저는 메시지를 선택한후 검색을 할예정입니다.
다음에는 실제 운영하는 테스트서버에 적용해보도록하겟습니다
============================================================================추가 - 1
패스워드 변경 방법
kibana.yml , logstash.yml , logstash.conf 에 사용할 패스워드 입력한 후
docker-compose up -d 실행
(대기)
docker-compose exec -T elasticsearch bin/elasticsearch-setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
>>패스워드입력
Please confirm that you would like to continue [y/N]Did not understand answer '패스워드입력'
y
패스워드입력
.
.
.
(12번 반복)
Changed password for user [apm_system]
oChanged password for user [kibana_system]
Changed password for user [kibana]
bChanged password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
하고 다시 좀 기다렷다가 kibana로 접속하면 바로 접속이 되는것을 볼수 잇습니다.!!!!!!!!!!!!
추가-2
docker-compose 실행시킬떄 ELK 를 다 활성화 시킨후에 filebeat를 실행해주세요.
아직 정확한 원인은 못찾앗으나 docker-compose 로 ELK + filebeat를 동시에 실행시키니 로그일부가 kibana에서 보이지않았습니다 ㅜㅜ