반응형

logstash 9

AWS SDK(cpp/c#/js) - Kinesis에 데이터 전송하고 Logstash로 받기

이전에 SQS로 데이터를 보내는 방법을 기록해 보았는데, 이번에는 유사한 kinesis로 데이터를 보내는 과정을 살펴보겠습니다. SQS는 Queue 서비스로 Application 통합, 분산 시스템 연계에 적합하며, Kinesis는 로그, 스트림 데이터 등의 실시간 분석, 전송 목적에 적합합니다. Kinesis Data Streams 생성 데이터 스트림 중 Kinesis Data Streams를 선택 후 생성을 합니다. 저는 어플리케이션의 로그를 전송하고 추후 이를 logstash로 가져와 별도 구축된 Elasticsearch에 저장하기 위해 사용하기 때문에 Kinesis Data Streams를 사용합니다. 생성할 스트림 이름은 "test_stream"으로 명명합니다. 데이터 스트림 용량을 설정할 때 ..

윈도우 Logstash 에서 Kinesis 연동하기

일반적으로 linux에서 logstash를 운영하지만 테스트를 위해 windows에서 실행해 봤습니다. AWS 계정 설정 c:\users\사용하는계정\.aws에 config , credentials 파일을 생성합니다. config파일에는 아래와 같이 default resion을 설정합니다. [default] region = ap-northeast-2 credentials 파일에는 kinesis에 접근 가능한 인증정보를 삽입합니다. [default] aws_access_key_id = access_key_id_from_iam_account aws_secret_access_key = access_key_id_from_iam_account kinesis 플러그인 설치 logstash 플러그인 툴로 아래와 같이..

Logstash sqs plugin 설정

(ELK 7.2 버전에서 테스트 되었습니다.) 이미 logstash와 elasticsearch가 설치되어 있다고 가정하고 진행하겠습니다. 7.x에 적용된 SQS plugin 3.x 버전은 logstash 5.0부터 적용되었으니 5.0 미만 버전 사용자분은 공식 문서를 참고하시기 바랍니다. https://www.elastic.co/guide/en/logstash/current/plugins-inputs-sqs.html Sqs input plugin | Logstash Reference [7.5] | Elastic Plugin version: v3.1.2 Released on: 2018-11-12 Changelog For other versions, see the Versioned plugin docs. F..

logstash tcp로 데이터 전송 시 손실없는 데이터 전달 흐름 설계

비지니스 로직에서 logstash로 tcp를 바로 데이터를 전송한다면 아래와 같은 흐름으로 설계가 될 것입니다. 이 경우 logstash 혹은 elasticsearch에 문제가 있을 경우 바로 데이터 손실이 발생할 수 있습니다. logstash와 elasticsearch의 문제 발생 혹은 점검 중 데이터 손실이 발생하지 않도록 전송할 데이터를 일시적으로 혹은 일정 기간 동안 보관했다가 logstash와 elasticsearch가 정상화 되었을 때 다시 전달할 수 있도록 아래와 같이 만들어 보겠습니다. 임시 저장소로는 Redis를 사용하고, 데이터 전송 흐름을 제어하기 위해 nodejs로 간단한 agent를 만들어 사용해 보겠습니다. 전달받은 로그는 모두 JSON 포멧의 텍스트로 가정합니다. const h..

좌충우돌 ELK 7.1.1 롤링 업그레이드

기존에 사용하던 ELK 6.3을 7.1.1 버전으로 업그레이드하며 그 사이 발생했던 문제들을 정리해 보았습니다. 참고로 모두 수동 설치되어 있는 상태입니다. 1. 설치 및 사용 환경 2. 신규 장비 세팅하기 3. 신규 장비에 ES 설치하기 (ver 6.3) 4. Rolling 업그레이드 시작 - 6.3에서 6.8로 5. Rolling 업그레이드 시작 - 6.8에서 7.1.1로 6. Kibana, Logstash 업그레이드 [1. 설치 및 사용 환경 ] 현재 ELK를 사내 시스템에 설치하여 사용중에 있습니다. 돈이 많으면 그냥 편하게 Cloud 서비스를 사용하고 싶은 마음은 간절했으나 사정상 외부에서 서비스하는 시스템들이 보내는 raw data를 모두 가져와 사내의 ES에 밀어 넣고 있습니다. 운영비용도 ..

ES의 shard initialize 에 대해...

며칠 전 데이타 손실이 발생하여 내용을 공유하기 위해 기록합니다. 일단 구축한 시스템은 사내에 ES로 시스템을 구축해두고, 각 컨텐츠 별로 REST API 서버 + Redis로 중간 저장소를 만들어 둔 상태입니다. 그리고 사내의 세팅된 Logstash에서 방화벽이 열리는 시간에 컨텐츠 별 중간 저장소로 접속해 그동안 쌓여있는 로그를 가져오도록 되어 있습니다. 이렇게 세팅된 이유는 Node 별 초기/유지 비용을 줄이고 (사내에서 PC로 시스템을 구축해 둠. 서버와 비슷한 성능의 시스템을 저렴하게 구축할 수 있으며, IDC의 상면비 등을 절감할 수 있기 때문입니다. 문제 발생 시 접근성도 용이합니다.), 운영자들의 접근 속도도 높이기 위함입니다. ES외에도 리포트 사이트를 구축하여 Kibana로는 결과를 만..

logstash와 mysql 연동

ES에서 제공하는 결과물은 대부분 멋지지만 가끔 odbc의 기능들이 필요한 경우가 있다. (X-pack을 사용하면 sql like query가 가능하지만 비용이 ..) kibana 등에서는 결과를 실시간 쿼리를 통해 보기 때문에 반응성이 항상 아쉽다. 이런 저런 이유로 리포트용 솔루션을 별도 구축하게 되었다. 만드는 김에, 일부 sql query가 필요한 경우를 위해, 필요한 로그들을 ES로 보냈다가 가져오기는 추가적인 절차가 필요해서, logstash에서 ES로 보내면서 필요한 일부분만 바로 mysql에 직접 보내기로 했다. 플러그인을 만들어야 하나 찾아보니... https://www.elastic.co/guide/en/logstash/current/input-plugins.html >> input에는..

logstash 인덱스 수정, 조건 설정하는 방법

'logstash-' 날짜 형태로 인덱스를 자동 생성하는데, 여러 타이틀 혹은 용도 별로 분리하려면 수정이 필수적임. 만약 새롭게 생성하는 상황이라면, 원하는 곳에 pipelines에 적용할 config 파일을 하나 만들자. ( https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html 참고) 만약 이미 만들어 두었다면 config/pipelines.yml을 열어 pipeline.id의 path.config를 확인해보자. 이제 기본적인 pipeline config를 구성했다면 원하는 조건과 이름을 활용해 인덱스를 수정해보자. 만약 logstash에서 elasticsearch로 바로 보낸다면 output 부분이 아래와 같을 것이다. ou..

Elasticsearch 설치기

CentOS에 Elasticsearch를 설치해 보았다. 정리할 생각이 없었는데, 하다보니 중간에 막히는 것들이 처리하면서 정리 한번 해둬야겠단 생각이 들었다. 일단 처음 설치할 때 주의할 점은 Elasticsearch는 root 계정으로 실행할 수 없다. (실행 가능하게 하는 옵션이 있던데, 최신 버전에서는 안되는 듯. 그리고 보안의 측면에서도 당연히 좋지 않아 추천하지 않는다.) 그러므로 전용 계정을 설정해서 설치, 실행하자. 설치 환경 및 각종 버전은 아래와 같다. CentOS 7.5.x Elasticsearch 6.3.0 (https://www.elastic.co/downloads/elasticsearch) plugin, Elastic-HQ (https://github.com/ElasticHQ/e..

반응형