로그 관리 마이크로서비스 코드에 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라는 index에 logs라는 type으로 저장합니다(➍).