Code By
Lucas Mouilleron

62 projects - An Open Source selection

TSDataCenter

Java 99.7% - PHP 0.2% - Dockerfile 0.1% - Shell 0%
Last update : 22/09/2018 - 09:11
TSDataCenter software.
Project is private, can't show more.

TSAnalysisWorld

Python 99.6% - CSS 0.3% - Shell 0.1%
Last update : 21/09/2018 - 18:25
Analysis framework.
Project is private, can't show more.

TSMagellan

Python 97.4% - Shell 1.2% - Dockerfile 0.9% - CSS 0.5%
Last update : 21/09/2018 - 17:04
TSMagellan environment. Main software, scripts and docs.
Project is private, can't show more.

TSSysAdmin

Python 90.6% - Shell 4.9% - Scheme 3.2% - Dockerfile 1.2% - Vim script 0.1%
Last update : 21/09/2018 - 10:36
System administration tools.
Project is private, can't show more.

siteERAAM

PHP 55.2% - HTML 20.4% - JavaScript 13.5% - CSS 9% - Shell 1.9%
Last update : 19/09/2018 - 15:15
Project is private, can't show more.

TSDeGama

Python 96.7% - CSS 1.2% - Dockerfile 1.1% - Shell 1%
Last update : 12/09/2018 - 11:44
Interactive analysis framework.
Project is private, can't show more.

+ watchTower

Python 56.2% - JavaScript 16.2% - Java 13.4% - HTML 5.8% - CSS 4.4% - Dockerfile 3.3% - Shell 0.8%
Last update : 22/08/2018 - 13:08

Screenshot

A simple watchtower service.
Heartbeat monitoring + event agregator.

Hearbeat definitions

  • The server is in charge of monitoring services
  • When a service is considered dead, the server then alerts its owner
  • A service is a pulsing agent
  • A pulse is a sign of aliveness
  • When a service pulse the server, it tells him when he will pulse again in the worst case
  • If the service has not pulsed again in time, the server considers the service dead and alerts its owner
  • When a service is no longer required, it must inform the server to avoid a false dead alerts
  • An alert can be a mail, a pushover message, etc.

Event definitions

  • The server is in charge or recieving events
  • When a service sends an event, the server stores it
  • On demand, events can be retrieved for consultation
  • An event is: service + message + level + date of registration

Implementation

  • HTTP client / server architecture
  • All queries protected by password set in HTTP headers under "password"
  • Heartbeat protocol:
    • Pulse:
      • POST /
      • {"service":"SERVICE_NAME","alertType":"ALERT_TYPE","alertTarget":"TARGET_NAME","nextIn":EXPECTED_NEXT_HEARTBEAT_IN_SECS}
    • Cancel:
      • DELETE /
      • {"service":"SERVICE_NAME"}
    • List:
      • GET /
  • Event protocol:
    • Add:
      • POST /add-event
      • {"service":"SERVICE_NAME", "level":"level", "message":"the message"}
    • List:
      • GET /list-events
      • optional params: service (is), from (above), to (below), level (above), message (contains)

Server

  • ./server
  • python3
  • Dependencies: pip install -r requirements.txt
  • Config:
    • config/config.json: main config (cp config/sample.json config/config.json)
    • config/server.crt, config/server.key: SSL certificate, used only if SSL activated
  • Datas: data
  • Deploy:
    • Install dependencies
    • Setup config
    • Generate ssl certificates (optional)
    • Hook in with upstart (optional, ./server/config/sample.upstart.conf, http://upstart.ubuntu.com/getting-started.html)
  • Run: python server.py
  • Docker:
    • ./docker
    • Config: place server config files in ./docker/config
    • Interactive: cd docker && tools/dockerBuild && tools/dockerRun
    • Detached: cd docker && tools/dockerBuild && tools/dockerRunDetached

Server GUI

  • https://hostname.com:443/gui

Java Client

  • ./clientJava
  • Java 7+
  • No dependencies
  • Run test:

Python Client

  • ./clientPython
  • python3
  • Dependencies: requests (pip install requests)
  • Run test: python test.py

Javascript client

  • ./clientJavascript
  • client.js is a node module
  • Dependencies: packages.json -> devDependencies (npm install)
  • Run test: node test.js
  • Run test in browser: browserify test.js -o bundle.js and open test.html in browser

Certificates

  • Self signed: openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
  • Letsencrypt: TODO

TODO

  • Put data writing in a queue
  • Put alert sending in a queue
  • (Way) better events persister

TSDashboard

HTML 70.6% - CSS 9.6% - JavaScript 9.5% - Python 6.9% - Shell 2.5% - PHP 0.8%
Last update : 07/08/2018 - 14:44
Content agnostic dashboard app.
Project is private, can't show more.

TSDataCenterWebUI

JavaScript 66.1% - HTML 28.1% - CSS 3.5% - Dockerfile 1.3% - PHP 0.7% - Shell 0.3%
Last update : 06/08/2018 - 11:11
TSDataCenter web UI.
Project is private, can't show more.

devResources

Python 100%
Last update : 26/07/2018 - 09:56
Non exhaustive shitily agregated dev resources. Sorry.
Project is private, can't show more.