{
key,
value
}
-> Log[]
There are couple of choices.
Mornitor and alerting storage:
Firstly, we should have some log collecting server, which can be partitioned by log_key.
We have two options, push model vs pull model.
In application server that will send logs, we can have a daemon or side-car container to push logs to log server.
We can also let log collecting server to pull the log in X amount of time.
Secondly, we can persists the log injection request to a message queue like kafka.
Then, we will have consumer group subscribed to different topics which is the log_key.
Then the workers will inject the data into different data sinks like NoSQL and TimeSeries DB as well as Elastic Search.
We will have a Mornitoring Service which notified by CDC(change data capture) in NoSQL db and also check the correspoding alerting rules in RDMS. If condition is met, we can notify an Alerting service to send alert to the subscribers.
App server -> log collecting server -> kafka -> nosql data sink
-> mornitoring service -> alerting service