невозможно подключиться к Elastic Search через SSL из node.js применение

#node.js #elasticsearch #kibana #winston

#node.js #elasticsearch #kibana #winston

Вопрос:

Я использую winston-elasticsearch для отправки журналов в кластер elastic search.

Я сгенерировал самоподписанные сертификаты для своего приложения node, и вот код для него.

 import * as winston from 'winston';
import * as fs from 'fs';
import { ElasticsearchTransport} from 'winston-elasticsearch';
  
const esTransportOpts = {

  level: 'info',
  index: 'someIndex', 
  ssl: { 
      ca: [fs.readFileSync('./src/utils/server.cert'), fs.readFileSync('./src/utils/server.key')],
      // This ensures that certificates that are not signed by the 'ca' above get rejected
      rejectUnauthorized: false
        },
  clientOpts: {
    node: process.env.ELASTICSEARCH_URLS,// TODO: Make Variable. 
    // ssl: 'true'
  } 
};
const esTransport = new ElasticsearchTransport(esTransportOpts);
const logger = winston.createLogger({
    
  transports: [
    esTransport
  ]
});
// Compulsory error handling
logger.on('error', (error) => {
  console.error('Error caught', error);
});
esTransport.on('warning', (error) => {
  console.error('Error caught', error);
});


export default logger;
  

К сожалению, я получаю следующую ошибку в консоли, когда она пытается отправить журналы:

 kyc-79945845d6-8mqfl: Error caught ResponseError: security_exception
kyc-79945845d6-8mqfl:     at IncomingMessage.<anonymous> (/package/node_modules/@elastic/elasticsearch/lib/Transport.js:257:25)
kyc-79945845d6-8mqfl:     at IncomingMessage.emit (events.js:323:22)
kyc-79945845d6-8mqfl:     at IncomingMessage.EventEmitter.emit (domain.js:482:12)
kyc-79945845d6-8mqfl:     at endReadableNT (_stream_readable.js:1204:12)
kyc-79945845d6-8mqfl:     at processTicksAndRejections (internal/process/task_queues.js:84:21) {
kyc-79945845d6-8mqfl:   name: 'ResponseError',
kyc-79945845d6-8mqfl:   meta: {
kyc-79945845d6-8mqfl:     body: { error: [Object], status: 401 },
kyc-79945845d6-8mqfl:     statusCode: 401,
kyc-79945845d6-8mqfl:     headers: {
kyc-79945845d6-8mqfl:       'www-authenticate': 'Bearer realm="security", ApiKey, Basic realm="security" charset="UTF-8"',
kyc-79945845d6-8mqfl:       'content-type': 'application/json; charset=UTF-8',
kyc-79945845d6-8mqfl:       'content-length': '549'
kyc-79945845d6-8mqfl:     },
kyc-79945845d6-8mqfl:     meta: {
kyc-79945845d6-8mqfl:       context: null,
kyc-79945845d6-8mqfl:       request: [Object],
kyc-79945845d6-8mqfl:       name: 'elasticsearch-js',
kyc-79945845d6-8mqfl:       connection: [Object],
kyc-79945845d6-8mqfl:       attempts: 0,
kyc-79945845d6-8mqfl:       aborted: false
kyc-79945845d6-8mqfl:     }
kyc-79945845d6-8mqfl:   }
kyc-79945845d6-8mqfl: }
  

Я буду признателен за любые замечания о том, как я могу это решить.

Комментарии:

1. Можете ли вы распечатать содержимое meta.body.error объекта?

2. Я не уверен, как это сделать??

3. Попробуйте console.error('Error caught', JSON.stringify(error))