I've implemented logstash ( in testing ) as below mentioned architecture.

Component Break Down
- Rsyslog client: By default syslog installed in all Linux destros, we just need to configure rsyslog to send logs to remote server.
- Logstash: Logstash will received logs from syslog client and it will store in Redis.
- Redis: Redis will work as broker, broker is to hold log data sent by agents before logstash indexes it. Having a broker will enhance performance of the logstash server, Redis acts like a buffer for log data, till logstash indexes it and stores it. As it is in RAM its too fast.
- Logstash: yes, two instance of logstash, 1st one for syslog server, 2nd for read data from redis and send out to elasticsearch.
- Elasticsearch: The main objective of a central log server is to collect all logs at one place, plus it should provide some meaningful data for analysis. Like you should be able to search all log data for your particular application at a specified time period.Hence there must be a searching and well indexing capability on our logstash server. To achieve this, we will install another opensource tool called as elasticsearch.Elasticsearch uses a mechanism of making an index, and then search that index to make it faster. Its a kind of search engine for text data.
- Kibana : Kibana is a user friendly way to view, search and visualize your log data
But I'm little bit confuse with redis. using this scenario I'll be running 3 java process on Logstash server and one redis, this will take hugh ram.
Question Can I use only one logstash and elastic search ? Or what would be the best way ?