/docker_logs

A short script written in Crystal lang that will incrementally upload all of your docker logs to a Postgres database

Primary LanguageCrystal

docker_logs

A short script written in Crystal lang that will incrementally upload all of your docker logs to a Postgres database

To build on Ubuntu 18

  • Make sure you have Crystal 0.27 installed
  • Make sure logtail2 is installed - on Ubuntu apt get install logtail2
  • Clone the repo: git clone https://github.com/weirdbricks/docker_logs.git
  • Edit the settings file to point to your Postgres database
  • Get shards (Crystal lang dependencies): shards install
  • Build: crystal build --static --release docker_logs.cr
  • Run: ./docker_logs

Sample run:

./docker_logs 
[ INFO ] - Check if the "docker" command exists...
[  OK  ] - the "docker" command has been found
[ INFO ] - Check if the "logtail2" command exists...
[  OK  ] - the "logtail2" command has been found
[ INFO ] - Check if we can get the hostname...
[  OK  ] - I got the hostname: "lampros-HP-Notebook"
[ INFO ] - Check if docker is running...
[  OK  ] - the docker service is running
[ INFO ] - Checking if we got the docker root directory...
[  OK  ] - I got the docker root directory: "/var/lib/docker"
[ INFO ] - Get list of containers...
[  OK  ] - Got 4 containers.
[ INFO ] - Check that you can connect to postgres...
[  OK  ] - Successfull connection to Postgres
[ INFO ] - Getting the list of tables in the "$PG_DATABASE" database...
[ INFO ] - 4 tables were found - these are:
[ INFO ] - lampros_hp_notebook_lampros_postgres
[ INFO ] - lampros_hp_notebook_metabase
[ INFO ] - lampros_hp_notebook_dependency_test
[ INFO ] - lampros_hp_notebook_headless
[ INFO ] - Getting the container logs...
[  OK  ] - The table "lampros_hp_notebook_lampros_postgres" already exists
[ INFO ] - Found the file "/var/lib/docker/containers/bab263ac495fe664e1329f5201ace3d53d71b4b1896bf6f0170d0c3bc80c791e/bab263ac495fe664e1329f5201ace3d53d71b4b1896bf6f0170d0c3bc80c791e-json.log"
[  OK  ] - No new lines for container "lampros_postgres"
[  OK  ] - The table "lampros_hp_notebook_metabase" already exists
[ INFO ] - Found the file "/var/lib/docker/containers/bdec2e0360433e2143192d3ae34fad2cd6f9de19545ad6b7d39bf0bab3ab216b/bdec2e0360433e2143192d3ae34fad2cd6f9de19545ad6b7d39bf0bab3ab216b-json.log"
[  OK  ] - 14011 new lines for container "metabase"
Processing line 1000 of 14011 (7.1%) - Seconds: 2.02
Processing line 2000 of 14011 (14.3%) - Seconds: 2.06
Processing line 3000 of 14011 (21.4%) - Seconds: 2.11
Processing line 4000 of 14011 (28.5%) - Seconds: 2.09
Processing line 5000 of 14011 (35.7%) - Seconds: 2.18
Processing line 6000 of 14011 (42.8%) - Seconds: 2.14
Processing line 7000 of 14011 (50.0%) - Seconds: 2.16
Processing line 8000 of 14011 (57.1%) - Seconds: 2.16
Processing line 9000 of 14011 (64.2%) - Seconds: 2.1
Processing line 10000 of 14011 (71.4%) - Seconds: 2.08
Processing line 11000 of 14011 (78.5%) - Seconds: 2.21
Processing line 12000 of 14011 (85.6%) - Seconds: 2.16
Processing line 13000 of 14011 (92.8%) - Seconds: 2.19
Processing line 14000 of 14011 (99.9%) - Seconds: 2.13
[  OK  ] - The table "lampros_hp_notebook_dependency_test" already exists
[ INFO ] - Found the file "/var/lib/docker/containers/dc88fa0d2688b294147196769ae667746900b7e7a98c538ee8bc474e0dd74dc5/dc88fa0d2688b294147196769ae667746900b7e7a98c538ee8bc474e0dd74dc5-json.log"
[  OK  ] - No new lines for container "dependency-test"
[  OK  ] - The table "lampros_hp_notebook_headless" already exists
[ INFO ] - Found the file "/var/lib/docker/containers/5179d9a4750dc66dc861cee234dfeccf9e45f7652c3ad1e74af4f70157269364/5179d9a4750dc66dc861cee234dfeccf9e45f7652c3ad1e74af4f70157269364-json.log"
[  OK  ] - No new lines for container "headless"