From b85c3e22205f8023fd58ced099ae35b3863223f6 Mon Sep 17 00:00:00 2001 From: sshipway Date: Fri, 4 Mar 2016 03:34:25 +0000 Subject: [PATCH] Add community logspout template --- templates/logspout/0/README.md | 14 ++++++++ templates/logspout/0/docker-compose.yml | 14 ++++++++ templates/logspout/0/rancher-compose.yml | 33 ++++++++++++++++++ templates/logspout/catalogIcon-gliderlabs.png | Bin 0 -> 19599 bytes templates/logspout/config.yml | 5 +++ 5 files changed, 66 insertions(+) create mode 100644 templates/logspout/0/README.md create mode 100644 templates/logspout/0/docker-compose.yml create mode 100644 templates/logspout/0/rancher-compose.yml create mode 100644 templates/logspout/catalogIcon-gliderlabs.png create mode 100644 templates/logspout/config.yml diff --git a/templates/logspout/0/README.md b/templates/logspout/0/README.md new file mode 100644 index 0000000..c985949 --- /dev/null +++ b/templates/logspout/0/README.md @@ -0,0 +1,14 @@ +# Add Logspout Stack + +Glider Labs Logspout with Logstash adapter + +### Info: + +For any services launched from the Rancher UI to use Logspout, please make sure to disable the '-t' [tty] option in the Advanced Options of the service definition. + +### Community Version + +This version adds the Environment option, where you can specify the name of the Environment. +All Syslogs will then be sent with this as the Source Hostname rather than the hostname of +the Docker Host on which the container is running. + diff --git a/templates/logspout/0/docker-compose.yml b/templates/logspout/0/docker-compose.yml new file mode 100644 index 0000000..f6005e9 --- /dev/null +++ b/templates/logspout/0/docker-compose.yml @@ -0,0 +1,14 @@ +logspout: + restart: always + environment: + ROUTE_URIS: "${route_uri}" + LOGSPOUT: 'ignore' + SYSLOG_HOSTNAME: "${envname}" + volumes: + - '/var/run/docker.sock:/var/run/docker.sock' + labels: + io.rancher.scheduler.global: 'true' + io.rancher.container.hostname_override: container_name + tty: true + image: rancher/logspout-logstash:v0.2.0 + stdin_open: true diff --git a/templates/logspout/0/rancher-compose.yml b/templates/logspout/0/rancher-compose.yml new file mode 100644 index 0000000..f4e0ad4 --- /dev/null +++ b/templates/logspout/0/rancher-compose.yml @@ -0,0 +1,33 @@ +.catalog: + name: Logspout + version: 0.2.0-1 + description: | + Logspout is a log router for Docker containers. This community template + allows you to log against the Rancher Environment rather than the hostname for + easier analysis. + questions: + - variable: "route_uri" + label: "Logspout route for logs" + type: "string" + required: true + default: "syslog://syslog.example.com:514" + description: | + This will be the target where all logs are sent. + - variable: "envname" + label: "Environment" + type: "string" + required: true + default: "Rancher:" + description: | + This is the environment name, which will be used as the Hostname + label in Syslog instead of the Host or Container name. + - variable: "format" + label: "Format" + type: "enum" + options: + - "rfc5424" + - "rfc3164" + required: true + default: "" + description: | + The Syslog format to use. If not certain, use rfc5424 diff --git a/templates/logspout/catalogIcon-gliderlabs.png b/templates/logspout/catalogIcon-gliderlabs.png new file mode 100644 index 0000000000000000000000000000000000000000..585830245cb3c6b30b6d0c76f24c5a94c1cec1b2 GIT binary patch literal 19599 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