ROXstack - Part 2: ROXcomposer 0.4.0
In our ongoing effort to deliver a microservice framework that gives you an immediate, out of the box access to working microservice architectures we completed our next big step.
This new version has three corner stones which go hand in hand to provide easier access to runtime information on your services:
- a dockerized Elastic Stack monitoring environment which is up and running with one command and gives you a dashboard to monitor service KPIs
- log observation API endpoint that allow you to receive log lines from selected services
- an overhauled command line interface that takes advantage of the new API capabilities
The main goal is to give newcommers as well as experienced users an immediate understanding on what happens inside the system.
ROXcomposer meets Elastic Stack
The setup we have included consists of 3 file beats, one logstash instance, a single elasticsearch node and kibana. The beats ship service logs, the API gateway log and message traces and logstash is responsible for feeding those into
elasticsearch. The resulting kibana dashboard looks like this:
It gives you handy metrics on your system as a whole in context of the selected time frame:
- how many services have been actively processing messages
- how many messages were processed - as a single metric or histogram
- how long is the average processing time over all messages - metric and histogram
and metrics concerning single services:
- average time a service needs to process a single message (ranked block chart) - this gives you a good indicator for services that would benefit the most from optimization
- the cumulative processing for all messages in the time frame per service - which services are needed the most and might be a potential target of load balancing
- the number of times a service has received a message - this is not unique, meaning if a service appear multiple times in a pipeline all processing instances per message are counted.
Log observation API
In addition to the
get_message_history endpoints that were introduced earlier we now have an endpoint called
log_observer. It allows you to register services from which you'd like to receive log updates. You will
get a session id, which you can use to poll for updates. Services can easily be added to or removed from an active session.
We replaced the old CLI with a new interactive version that gives you handy feedback on the messages you post and handles log observation for you:
In addition to the commands supported by the old CLI it comes packed with helpful new functionality:
- an online help on its commands
- a command history
- a watch service command, which will create a log observation session and will poll it automatically for you
- upon posting a message into a pipeline a trace widget will open and update you on the progress of your message
We are very happy about this new version und are looking forward to v0.5.0 which will take the leap into distributed systems and a public release (as open-source software).