더북(TheBook)

로그 관리 마이크로서비스 코드에 Elasticsearch 연동 코드를 추가합니다.

코드 12-6 로그 관리 마이크로서비스 Elasticsearch 연동

예제 파일 : microservice_logs_elasticsearch.js

'use strict';

const cluster = require('cluster');
const fs = require('fs');
const elasticsearch = new require('elasticsearch').Client({  // ➊ lasticsearch 인스턴스 생성
    host: '127.0.0.1:9200',
    log: 'trace' });

class logs extends require('./server.js') {
    ......

    onRead(socket, data) {
        const sz = new Date().toLocaleString() + '\t' + socket.remoteAddress + '\t' +
                   socket.remotePort + '\t' + JSON.stringify(data) + '\n';
        console.log(sz);
        this.writestream.write(sz);
        data.timestamp = new Date().toISOString();          // ➋ imestamp 설정
        data.params = JSON.parse(data.params);              // ➌ SON 포맷 변환
        elasticsearch.index({                               // ➍ 그 저장
            index: 'microservice',
            type: 'logs',
            body: data
        });
    }
}

......

설치한 elasticsearch 모듈을 로드하고 client 인스턴스를 생성합니다. 우리는 로컬에 Elasticsearch를 설치했기 때문에 접속 정보를 로컬로 하고 기본 포트 정보는 9200번으로 지정했습니다(). 로그의 시간 정보를 저장하려고 ISO 형식의 날짜 포맷으로 timestamp 값을 설정합니다(). Elasticsearch는 JSON 형식을 지원하기 때문에 로그 내용을 JSON 형식으로 변환하고(), microservice라는 indexlogs라는 type으로 저장합니다().

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.