У меня есть централизованная настройка регистрации с ELK и RabbitMQ. У всех микросервисов есть один AMQP Appender (JAVA, NodeJS, PHP), и они загружают журналы в RabbitMQ. Из RabbitMQ его потребляет Logstash, а затем его подталкивают к упругому поиску. Я запускаю эластичный поиск на одном узле.
В RabbitMQ журналы отправляются ровно один раз, как я проверял в интерфейсе администратора RabbitMQ. Но когда я вижу логи через Кибану, я вижу дубликаты логов.
Я также установил плагин для отпечатков пальцев Logstash, но после этого он также создает дублирующиеся журналы вasticsearch. Для первой записи document_id заменяется на отпечаток пальца, но для дублированных записей document_id - это случайное число.
Пожалуйста, найдите logstash conf:
input {
rabbitmq {
user => "guest"
password => "guest"
queue => "axon_log_node"
host => "localhost"
port => 5672
durable => true
}
}
filter{
fingerprint {
source => "[meta]"
target => "fingerprint"
method => "SHA1"
key => "Centralized Logging"
base64encode => true
}
mutate {
convert => {"level" => "string"}
rename => {"[text]" => "message" }
rename => {"[meta][module]" => "module" }
rename => {"[meta][correlation_id]" => "correlation_id" }
rename => {"[meta][appId]" => "component" }
rename => {"[meta][userId]" => "userId" }
rename => {"[meta][source]" => "source" }
rename => {"[meta][action]" => "action" }
rename => {"[meta][level_name]" => "level_name" }
}
mutate {
convert => {"timestamp" => "string"}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
sniffing => true
manage_template => false
document_type => "log"
document_id => "%{fingerprint}"
template_overwrite => "true"
}
}
Logs in kibana :
{
"_index": "logstash-2018.09.03",
"_type": "log",
"_id": "tLVzn2UBo4M6JkGUkRaW",
"_version": 1,
"_score": null,
"_source": {
"@version": "1",
"action": "Prevalidate",
"message": "actual perform",
"component": "Notification",
"fingerprint": "KqWJGt4m3KabAp8aKO+xWroltQE=",
"module": "BaseInteractor",
"correlation_id": "6c9987ed-d714-441f-a7ba-63d52fbcb35b",
"meta": {},
"source": "ms-axon-install.local",
"@timestamp": "2018-09-03T12:41:14.768Z",
"level_name": "info"
},
"fields": {
"@timestamp": [
"2018-09-03T12:41:14.768Z"
]
},
"highlight": {
"component.keyword": [
"@kibana-highlighted-field@Notification@/kibana-highlighted-field@"
]
},
"sort": [
1535978474768
]
}
{
"_index": "logstash-2018.09.03",
"_type": "log",
"_id": "KqWJGt4m3KabAp8aKO+xWroltQE=",
"_version": 4,
"_score": null,
"_source": {
"@version": "1",
"action": "Prevalidate",
"message": "actual perform",
"component": "Notification",
"fingerprint": "KqWJGt4m3KabAp8aKO+xWroltQE=",
"module": "BaseInteractor",
"correlation_id": "6c9987ed-d714-441f-a7ba-63d52fbcb35b",
"meta": {},
"source": "ms-axon-install.local",
"@timestamp": "2018-09-03T12:41:14.768Z",
"level_name": "info"
},
"fields": {
"@timestamp": [
"2018-09-03T12:41:14.768Z"
]
},
"highlight": {
"component.keyword": [
"@kibana-highlighted-field@Notification@/kibana-highlighted-field@"
]
},
"sort": [
1535978474768
]
}
{
"_index": "logstash-2018.09.03",
"_type": "log",
"_id": "zbVzn2UBo4M6JkGUkhbM",
"_version": 1,
"_score": null,
"_source": {
"@version": "1",
"action": "Prevalidate",
"message": "actual perform",
"component": "Notification",
"fingerprint": "KqWJGt4m3KabAp8aKO+xWroltQE=",
"module": "BaseInteractor",
"correlation_id": "6c9987ed-d714-441f-a7ba-63d52fbcb35b",
"meta": {},
"source": "ms-axon-install.local",
"@timestamp": "2018-09-03T12:41:14.768Z",
"level_name": "info"
},
"fields": {
"@timestamp": [
"2018-09-03T12:41:14.768Z"
]
},
"highlight": {
"component.keyword": [
"@kibana-highlighted-field@Notification@/kibana-highlighted-field@"
]
},
"sort": [
1535978474768
]
}