From 7738fab351da6e964f3475538edb67be0a87512b Mon Sep 17 00:00:00 2001 From: beckerinj Date: Sun, 12 Feb 2023 03:57:55 -0500 Subject: [PATCH] intro --- docs/introduction.md | 35 ++++++++++++++++++++++++++++++++++- docs/permissions.md | 0 docs/servers.md | 3 +-- readme.md | 3 ++- 4 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 docs/permissions.md diff --git a/docs/introduction.md b/docs/introduction.md index 728369cf2..8d4987994 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -1 +1,34 @@ -## introduction \ No newline at end of file +# introduction + +If you have many servers running many applications, it can be a challenge to keep things organized and easily accessible. Without structure, things can become messy quickly, which means operational issues are more likely to arise and they can take longer to resolve. Ultimately these issues hinder productivity and waste valuable time. + +## docker + +Monitor is a web app and API to provide structure to how applications are built and deployed. It is opiniated by design, and [docker](https://docs.docker.com/) is the tool of choice. Docker provides the ability to package applications and their runtime dependencies into a standalone bundle, called an *image*. This makes them easy to "ship" to any server and run without the hassle of setting up the necessary runtime environment. Docker uses the image as a sort of template to create *containers*. Containers are kind of like virtual machines but with different performance characteristics, namely that processes contained still run natively on the system kernel. The file system is seperate though, and like virtual machines, they can be created, started, stopped, and destroyed. + +## monitor + +Monitor is a solution for handling for the following: + + 1. Build application source into auto-versioned images. + 2. Create, start, stop, and restart Docker containers, and view their status and logs. + 3. All of the CRUD functionality that goes with the above, ie configuration management. + 4. View realtime and historical system resource usage. + 5. Alerting for server health, like high cpu, memory, disk, etc. + +## archetecture and components + +Monitor is composed of a single core and any amount of connected servers running the periphery application. + +### monitor core +The core is a web server that hosts the core API and serves the frontend to be accessed in a web browser. All user interaction with the connected servers flow through the core. It is the stateful part of the system, with the application state stored on an instance of MongoDB. + +### monitor periphery +The periphery is a stateless web server that exposes API called by the core. The core calls this API to get system usage and container status / logs, clone git repos, and perform docker actions. It is only intended to be reached from the core, and has an address whitelist limit the IPs allowed to call this API. + +## permissioning + +Monitor is a system designed to be used by many users, whether they are developers, operations personnel, or administrators. The ability to affect an applications state is very powerful, so monitor has a granular permissioning system to only provide this functionality to the intended users. + +The permissioning system is explained in detail in the [permissioning](https://github.com/mbecker20/monitor/blob/main/docs/permissions.md) section. + diff --git a/docs/permissions.md b/docs/permissions.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/servers.md b/docs/servers.md index 36d7b4be9..1e7d2b8df 100644 --- a/docs/servers.md +++ b/docs/servers.md @@ -1,2 +1 @@ -## connecting servers - +## connecting servers \ No newline at end of file diff --git a/readme.md b/readme.md index b0483a66f..cf3497550 100644 --- a/readme.md +++ b/readme.md @@ -7,4 +7,5 @@ a tool to build and deploy software across many servers 1. [introduction](https://github.com/mbecker20/monitor/blob/main/docs/introduction.md) 2. [connecting servers](https://github.com/mbecker20/monitor/blob/main/docs/servers.md) 3. [building](https://github.com/mbecker20/monitor/blob/main/docs/builds.md) - 4. [deploying](https://github.com/mbecker20/monitor/blob/main/docs/deployments.md) \ No newline at end of file + 4. [deploying](https://github.com/mbecker20/monitor/blob/main/docs/deployments.md) + 5. [permissioning](https://github.com/mbecker20/monitor/blob/main/docs/permissions.md) \ No newline at end of file