diff --git a/.travis.yml b/.travis.yml index 0cd43df..5d83933 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,10 @@ language: python +sudo: required +services: + - docker python: - "2.7" install: "pip install -r dev-requirements.pip" -script: pylint lecli && py.test tests +script: + - pylint lecli && py.test tests + - cd docker && docker-compose run lecli diff --git a/docker/.gitignore b/docker/.gitignore new file mode 100644 index 0000000..26dd539 --- /dev/null +++ b/docker/.gitignore @@ -0,0 +1 @@ +root/.config/lecli/config.ini \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..fd752a0 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,13 @@ +FROM python:2.7-slim-jessie + +WORKDIR /usr/src/app + +RUN apt-get update && apt-get install -y jq && rm -rf /var/lib/apt/lists/* + +COPY . . +RUN pip install --no-cache-dir -r requirements.txt + +RUN cp logentries_tail.sh /usr/bin/letail +RUN chmod +x /usr/bin/letail + +CMD [ "lecli", "--version" ] diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000..3ec1b0b --- /dev/null +++ b/docker/README.md @@ -0,0 +1,24 @@ +# Logentries CLI Docker container +A simply container with lecli installed + +## setup +`cp root/.config/config.ini.sample cp root/.config/config.ini` + +then edit `root/.config/config.ini` and add your logentries api keys + +## lecli arbitrary command +`docker-compose run --rm lecli lecli {lecli command args}` + +## test if api keys are working +`docker-compose run --rm lecli lecli get apikeys` + +## live tail +`docker-compose run --rm lecli letail {logs_name}` + +## tested on +ubuntu 16.04 LTS + +Docker version 17.05.0-ce, build 89658be + +docker-compose version 1.17.1, build 6d101fb + diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..107fc35 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,8 @@ +version: '3' +services: + lecli: + build: . + volumes: + - ./root/.config/lecli/config.ini:/root/.config/lecli/config.ini + dns: + - 8.8.8.8 \ No newline at end of file diff --git a/docker/logentries_tail.sh b/docker/logentries_tail.sh new file mode 100755 index 0000000..8ebd294 --- /dev/null +++ b/docker/logentries_tail.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +display_usage() { + echo "Require JQ(https://stedolan.github.io/jq/) and lecli(https://github.com/rapid7/lecli)" + echo -e "\nUsage:\n ./logentries_tail.sh [logs_name] \n" + echo -e "\nUsage:\n ./logentries_tail.sh my_production_logs_name \n" +} + +# if less than two arguments supplied, display usage +if [ $# -le 0 ] +then + display_usage + exit 1 +fi + +# check whether user had supplied -h or --help . If yes display usage +if [[ ( $# == "--help") || $# == "-h" ]] +then + display_usage + exit 0 +fi + +logs_name=$1 + +echo -e "tail of ${logs_name}" + +# https://github.com/stedolan/jq/issues/1124#issuecomment-205346895 +jq_logs_key_query=(jq -r '.logsets[] | select(has("logs_info")) | select(.logs_info | length > 0) | .logs_info[] | select(.name | contains("'${logs_name}'") ) .id') +logs_key=`lecli get logsets | "${jq_logs_key_query[@]}" | uniq | sort | paste -s -` + +echo -e "${logs_name} log key: ${logs_key}\n" + +lecli tail events ${logs_key} \ No newline at end of file diff --git a/docker/requirements.txt b/docker/requirements.txt new file mode 100644 index 0000000..e94fecc --- /dev/null +++ b/docker/requirements.txt @@ -0,0 +1 @@ +logentries-lecli \ No newline at end of file diff --git a/docker/root/.config/lecli/config.ini.sample b/docker/root/.config/lecli/config.ini.sample new file mode 100644 index 0000000..47cd9ca --- /dev/null +++ b/docker/root/.config/lecli/config.ini.sample @@ -0,0 +1,11 @@ +[Auth] +account_resource_id = +owner_api_key_id = +owner_api_key = +rw_api_key = +ro_api_key = + +[Cli_Favorites] + +[Url] +api_url = https://rest.logentries.com \ No newline at end of file