#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))