Done
Pinned fields
Click on the next to a field label to start pinning.
Details
Assignee
Chongsun AhnChongsun AhnReporter
Chongsun AhnChongsun AhnSprint
NoneAffects versions
Priority
Major
Details
Details
Assignee
Chongsun Ahn
Chongsun AhnReporter
Chongsun Ahn
Chongsun AhnSprint
None
Affects versions
Priority
Time Assistant
Time Assistant
Time Assistant
Created June 1, 2016 at 8:42 PM
Updated June 3, 2016 at 8:55 PM
Resolved June 3, 2016 at 8:55 PM
Some research was done about how to do centralized logging in a containerized microservices architecture, using the options outlined here: https://www.loggly.com/blog/top-5-docker-logging-methods-to-fit-your-container-deployment-strategy/. The second, third and fourth options in particular were looked into.
Before the options were looked into, configuration of logging within the container was determined. SLF4J with Logback will be used, as SLF4J will abstract the exact logging framework and Logback comes default on Spring Boot. Logging will be done to a syslog so that logging from Spring Boot (Tomcat), as well as the microservice itself. A syslog appender will be defined in Logback configuration.
Option 3 (logging via docker logging driver):
This was the initial option chosen for research. This would require that each docker container would send its log events to the host's syslog. However, it created some challenges, particularly for development for Mac and Windows users, as they use boot2docker as their host, which does not have syslog installed.
Option 2 (data volumes):
This was researched next for its simplicity. rsyslog would be installed within the containers and data volumes would be host mounted. However, the challenge would be to get the OpenLMIS postgres image to also have rsyslog installed.
Option 3 (logging via a dedicated logging container):
This was chosen in the end. A logging container using rsyslog would be created and wired with other containers using docker compose.