개발자로서 살아남기/ELK Stack 적용하기 12

ELK - 샤드개수 조정 (Failed to submit a listener notification task. Event loop shut down? java.util.concurrent.RejectedExecutionException: event executor terminated elastic)

개요 replaylog 관련 timeout 에러가 계속 발생하여, 확인해 본 결과, elasticSearch에 문제가 있었고, 정확히는 wb911 머신에 문제가 발생하였다. 머신에 들어가서 확인해보니, elasticsearch는 작동하고 있었지만, 알 수 없는 ERROR 로그들이 남고있었다. 그 중 하나는 아래 로그이다. Failed to submit a listener notification task. Event loop shut down? java.util.concurrent.RejectedExecutionException: event executor terminated elastic 일단 NSight를 확인해보니, 머신이 터지기 직전이여서, 재부팅을 부탁드렸다(다행히도 머신이 문제가 발생하자마자 메..

ELK - 엘라스틱 서치에 L4 붙일 때 문제점

개요 로그 수집 용도로 ELK를 사용하고 있었는데, 원래 보안 용도로 클라이언트에서 서버를 거쳐 로그를 수집하고 있었다. 로그 양이 많아지니, 서버의 부하가 몰려 성능 이슈가 발생할 수도 있었다. 방지를 위해, 클라에서 ELK로 바로 쏘도록 구조를 변경할 필요성을 느꼈고, VIP와 L4을 추가하도록 하였다. 원래 Elasticsearch는 자체 로드밸런싱 기능이 있어서, 1개의 머신으로 보내도 로드밸런싱을 하지만, 트래픽 양이 많을 때도, 제대로 작동할 지 몰라, 앞단에 로드밸런스를 놓기로 하였다. 문제 사내에서 ELK 구조는 머신 6대를 클러스터로 구성하여 사용하고 있다. 또한, 사용하는 L4 방식이 proxy 방식이다. 아래는 elasticsearch.yml의 일부 내용이다. bootstrap.mem..

ELK - primary shard is not active Timeout 에러

네트워크 팀에서 VM 머신 초기화로 인해 elastic이 꺼졌었다. 다시 재부팅 하는 과정에서 위와 같은 로그가 남았는데, 구글링 해보니 elasticsearch 구성파일 중cluster.initial_master_nodes 설정 문제였다. 해당 설정은 맨 처음 클러스터를 시작할 때만 적용하고 이후에, 지워야 하는 옵션임을 공식문서에서 확인하였다. https://www.elastic.co/guide/en/elasticsearch/reference/7.10/modules-discovery-settings.html 그 이후에 cluster의 상태를 보니 red 상태였다. 로그를 보니, 몇몇 샤드들이 활성화가 되지 않아있었다. 그말은 해당 샤드를 가지고 있는 노드가 클러스터에 안붙었다는 얘기인데, 계속 원인을..

ELK - Retrying individual bulk actions that failed or were rejected by the previous bulk request. retrying failed action with response code: 403 에러 발생

개요 6/11 09:17:33 이후부터 poker , classic, client 인덱스에 로그가 안남고 있는 걸 확인 logstash 로그 확인 결과, 아래와 같은 로그가 발생 중 [2023-06-12T16:00:13,910][INFO ][logstash.outputs.elasticsearch][main]{중략....} Retrying individual bulk actions that failed or were rejected by the previous bulk request.{중략....} retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"index [shrink-index-20..

ELK 인덱스 생명 주기(ILM) 설정하기

Index Lifecycle Policies(ILM)이란? 인덱스(다른 DB에선 테이블)을 사용자가 지정한 날짜, 크기, 문서 수 등에 도달하면 기존에 사용하던 인덱스를 처리(제거, 상태변경)하고, 새로운 인덱스를 할당한다. 현재 회사에서 사용하고 있는 ILM 정책은 인덱스 마다 다르지만, 제일 많이 사용하고 있는 게임 로그 데이터는 아래의 정책을 따른다. 인덱스 생성된지 15일이 지나면 warm 상태로 변경되어 단일 샤드로 축소 30일이 지나면 cold 상태로 변경되고, 읽기 전용 상태로 변하고, 용량이 감소 40일이 지나면 인덱스를 삭제 자세한 내용은 elastic 공식 문서를 참고하면 된다. https://www.elastic.co/guide/en/elasticsearch/reference/7.10..

ELK - Kibana 날짜별 데이터 비교하기

개요 팀에서 개발중인 서비스에 ELK을 붙인 이후, kibana에서 데이터를 이용해 다양한 종류의 visualize을 만들고 있었다. (유저 동접 추이, 특정 게임 동접수 등등) ELK와 비슷한 역할을 하는 NHN CLOUD의 Log N Crash 라는 서비스가 있는데, 여기서 제공해주는 visualize 중, 날짜별 데이터를 비교해주는 서비스가 있었다. 같은 기능을 kibana에서도 구현할 수 있을까 구글링을 해봤는데 kibana에서도 제공하는 기능이였다!! 하지만 역시.. 현재 사용하는 ELK 버전에는 존재하지 않은 기능 ㅎㅎ.. 결국 찾은 건 visualize 종류 중 Timelion이다. Timelion은 시계열 데이터 분석에 특화되어 있으며, 함수 형식의 표현식을 사용한다. 또한 코드가 직관적이..

Centos7에 ELK 설치하기 가이드

🔍개요 회사 내 ELK를 주도적으로 적용시킨지 어언 4개월이 지난 것 같다. 알파에서 적용시킨 이후, 리얼에도 적용하였고, 이후 보안 추가, 몇몇 로그가 보이지 않는 문제, 로그의 시간순대로 정렬 등등 다양한 문제들이 있었다. 다만, ELK 업무 외에 다른 업무들이 많았기 때문에 쉽게 손대지 못하고 있다가 시간이 나서, 대대로 개편을 했다. 먼저 회사 내 보안 문제로 irteamsu 계정을 사용하지 못하게 되었는데 대부분 가이드들이 sudo를 이용한 설치였기 때문에 일반 바이너리로 설치하는 가이드를 찾아서 진행하였다. 이 과정에서도 리눅스 머신 세팅을 할 수 있는 권한이 없기 때문에 상당히 애를 먹었다. 하지만 적용을 하였고, 개발 뿐만아니라 기획, 아트 등 다양한 직군이 사용할 수 있도록 계속 만들어 ..

ELK - 로그 발생 시간을 기준으로 Kibana 사용하기

🔍개요 ELK를 서버 로그를 분석하기 위해 구축한 이후에 Kibana 시간과 로그 발생 시간이 달라, 보기 불편한 점이 있었다. 이후, 문제를 해결하려 했으나, 여러 프로젝트를 진행 한 탓에 미루고 또 미뤘었다. 프로젝트가 끝나고, ELK 업무를 마무리 짓기 위해 새로운 서버 2대를 ES 클러스터에 추가하는 작업과, 로그 발생 시간에 대한 이슈를 처리하는 작업을 진행하였다. 로그 발생 시간을 Kibana @timestamp로 사용하기 로그 메시지에서 로그 발생 시간 파싱하기 (logstash 설정 변경) 서버팀에서 사용하고 있는 로그 메시지 시간 type은 ISO8601인데, grok패턴에서 TIMESTAMP_ISO8601 사용하면 쉽게 파싱할 수 있다. ## 원하는 filter가 있으면 설정한다. fi..

FileBeat VS Logstash

🔍개요 회사에서 기존 서버에 ELK 환경을 구축하는 업무를 받았다. Docker를 이용해서 ELK를 구축하면서 어느정도의 개념을 익혔으니 실제로 머신 2대를 받아서 ELK를 구축하려 했다. 이제 사용중인 기존 서버에 적용하려다 보니까 생각해야될 점이 많았다. 가장 먼저 생각이 드는건 트래픽 문제였다. 많은 트래픽이 ES로 들어올 텐데 어떤식으로 설계를 해야 트래픽을 감당할 수 있을까를 많이 생각했다. 그중 하나가 'logstash와 filebeat 중에 어떤 것을 사용할까' 였다. 이에 대해 알아본 내용을 정리해볼려한다. 🔍 FileBeat vs Logstash Filebeat의 사용 여부 요즘 ELK를 구축하는 방법을 찾아보면 각 서버에 Filebeat를 통해 로그 데이터를 수집하고 logstash로 ..

ELK 권한 문제 - ERROR Unable to loc ate appender "rolling" for logger ...

에러 메세지 다른 사람들 보니까 아래 에러메세지와 같이 2줄만 나오는게 아니라 여러줄이 나오는 경우가 많다. Sep 23 17:31:11 A04-R08-I245-163-BCPLLP2 elasticsearch[35226]: 2019-09-23 17:31:11,052 main ERROR Null object returned for RollingFile in Appenders. Sep 23 17:31:11 A04-R08-I245-163-BCPLLP2 elasticsearch[35226]: 2019-09-23 17:31:11,052 main ERROR Unable to locate appender "rolling" for logger config "root" Sep 23 17:31:11 A04-R08-I245-..

728x90