다음 라인에서 설명하는필드의 Kibana에서 문제가 있습니다. 나는 상황을 설명하려고 노력할 것이다.실제 값이 인식되지 않습니다. Kinesis Firehose에서 elasticsearch까지 JSON 데이터를 전송합니다.
나는 DynamoDB 스트림을 람다에게 보낸 다음 Kenesis Firehouse로 보내고 Firehose에서 Elasticsearch로 보냅니다. 데이터를 시각화하는 데 Kibana를 사용하고 있으며 여기에 문제가 있습니다. 람다에서
나는 다음과 같은 나타납니다 :
내가 DynamoDB의이 JSON을 보내고있다 말할 수 있습니다
{
"data": {
"M": {
"machine": {
"M": {
"application": {
"S": "application"
},
"brand": {
"S": "band"
}
}
},
"description": {
"S": "This is the description"
},
"id": {
"S": "identificator"
},
"units": {
"S": "units"
},
"value": {
"N": "33"
},
"_msgid": {
"S": "85209b75.f51ee8"
},
"timestamp": {
"S": "2017-05-09T06:38:00.337Z"
}
}
},
"id": {
"S": "85209b75.f51ee8"
}
}
나는 경우 키바의 운동성 파이어 호스이 마지막으로 JSON을 전달하는 경우 인덱스 패턴을 구성하면 "timestamp"
이 자동으로 인식됩니다. 여기서 문제는 필드 "value"
이 문자열과 같아서 인식되지 않는다는 것입니다.
"timestamp"
:
{
"data": {
"machine": {
"application": "application",
"brand": "brand"
},
"description": "This is the description",
"id": "identificator",
"units": "KWh",
"value": 33,
"_msgid": "85209b75.f51ee8",
"timestamp": "2017-05-09T06:38:00.337Z"
},
"id": "85209b75.f51ee8"
}
내가이 데이터를 보낼 수있는 방법을 알고 싶습니다
및 키바는 인식 " timestamp "및"value "필드에 표시됩니다.
var AWS = require('aws-sdk');
var unmarshalJson = require('dynamodb-marshaler').unmarshalJson;
var firehose = new AWS.Firehose();
exports.lambda_handler = function(event, context) {
var record = JSON.stringify(event.Records[0].dynamodb.NewImage);
console.log("[INFO]:"+JSON.stringify(event.Records[0].dynamodb.NewImage));
var params = {
DeliveryStreamName: 'DeliveryStreamName',
Record:{
Data: record
}
};
firehose.putRecord(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(JSON.stringify(data)); // successful response
context.done();
});
};