diff --git a/changelog.md b/changelog.md new file mode 100644 index 000000000..8e0489fe3 --- /dev/null +++ b/changelog.md @@ -0,0 +1,83 @@ +# Changelog + +## v1 (Spring 2024) + +- **New resource types**: + - **Repo**: Clone / pull configured repositories on desired Server. Run shell commands in the repo on every clone / pull to acheive automation. Listen for pushes to a particular branch to automatically pull the repo and run the command. + - **Procedure**: Combine multiple *executions* (Deploy, RunBuild) and run them in sequence or in parallel. *RunProcedure* is an execution type, meaning procedures can run *other procedures*. + - **Builder**: Ephemeral builder configuration has moved to being an API / UI managed entity for greater observability and ease of management. + - **Alerter**: Define multiple alerting endpoints and manage them via the API / UI. + - Slack support continues with the *Slack* Alerter variant. + - Send JSON serialized alert data to any HTTP endpoint with the *Custom* Alerter variant. + - **Template**: Define a template for your cloud provider's VM configuration + - Launch VMs based on the template and automatically add them as Monitor servers. + - Supports AWS EC2 and Hetzner Cloud. + - **Sync**: Sync resources declared in toml files in Github repos. + - Manage resources declaratively, with git history for configuration rollbacks. + - See the actions which will be performed in the UI, and execute them upon manual confirmation. + - Use a Github webhook to automatically execute syncs on git push. + +- **Resource Tagging** + - Attach multiple *tags* to resources, which can be used to group related resources together. These can be used to filter resources in the UI. + - For example, resources can be given tags for *environment*, like `Prod`, `Uat`, or `Dev`. This can be combined with tags for the larger system the resource is a part of, such as `Authentication`, `Logging`, or `Messaging`. + - Proper tagging will make it easy to find resources and visualize system components, even as the number of resources grows large. + +- **Variables** + - Manage global, non-secret key-value pairs using the API / UI. + - These values can be interpolated into deployment `environments` and build `build_args` + +- **Core Accounts and Secrets** + - Docker / Github accounts and Secrets can now be configured in the Core configuration file. + - They can still be added to the Periphery configuration as before. Accounts / Secrets defined in the Core configuration will be preferentially used over like ones defined in Periphery configuration. + +- **User Groups** + - Admins can now create User Groups and assign permissions to them as if they were a user. + - Multiple users can then be added to the group, and a user can be added to multiple groups. + - Users in the group inherit the group's permissions. + +- **Monitor CLI + Sync** + - Introduces the [monitor cli](https://crates.io/crates/monitor_cli), which can sync resources declared across multiple toml files. + - Implements granular diffing of local and remote resources, producing detailed logs of the changes which will be made before user confirm. + - Resource files can be checked into git and managed via PR, enabling easy scaling even with large numbers of resources. + - All UI resources include button to export the resource to TOML for easy addition to your resource file. There is also a button to export all resources + to make the move to file managed resources. + +- **Builds** + - Build log displays the **latest commit hash and message**. + - In-progress builds are able to be **cancelled before completion**. + - Specify a specific commit hash to build from. + +- **Deployments** + - Filter log lines using multiple search terms. + +- **Alerting** + - The alerting system has been redesigned with a stateful model. + - Alerts can be in an Open or a Resolved state, and alerts are only sent on state changes. + - For example, say a server has just crossed 80% memory usage, the configured memory threshold. An alert will be created in the Open state and the alert data will be sent out. Later, it has dropped down to 70%. The alert will be changed to the Resolved state and the alert data will again be sent. + - In addition to server usage alerts, Monitor now supports deployment state change alerts. These are sent when a deployment's state changes without being caused by a Monitor action. For example, if a deployment goes from the Running state to the Exited state unexpectedly, say from a crash, an alert will be sent. + - Current and past alerts can be retrieved using the API and viewed on the UI. + +- **New UI**: + - The Monitor UI has been revamped to support the new features and improve the user experience. + +## v0 (Winter 2022) + +- Move Core and Periphery implementation to Rust. +- Add AWS Ec2 ephemeral build instance support. + - Configuration added to core configuration file. +- Automatic build versioning system, supporting image rollback. +- Realtime and historical system stats - CPU, memory, disk. +- Simple stats alerting based on out-of-bounds values for system stats. + - Support sending alerts to Slack. + +## Pre-versioned releases + +- Defined main resource types: + - Server + - Deployment + - Build +- Basics of Monitor: + - Build docker images from Github repos. + - Manage image deployment on connected servers, see container status, get container logs. + - Add account credentials in Periphery configuration. +- Core and Periphery implemented in Typescript. \ No newline at end of file diff --git a/readme.md b/readme.md index 325cce259..a0c6e6d6a 100644 --- a/readme.md +++ b/readme.md @@ -6,84 +6,7 @@ Docs for periphery setup script can be found in [scripts/readme.md](https://gith ## Changelog -### v1 (Spring 2024) - -- **New resource types**: - - **Repo**: Clone / pull configured repositories on desired Server. Run shell commands in the repo on every clone / pull to acheive automation. Listen for pushes to a particular branch to automatically pull the repo and run the command. - - **Procedure**: Combine multiple *executions* (Deploy, RunBuild) and run them in sequence or in parallel. *RunProcedure* is an execution type, meaning procedures can run *other procedures*. - - **Builder**: Ephemeral builder configuration has moved to being an API / UI managed entity for greater observability and ease of management. - - **Alerter**: Define multiple alerting endpoints and manage them via the API / UI. - - Slack support continues with the *Slack* Alerter variant. - - Send JSON serialized alert data to any HTTP endpoint with the *Custom* Alerter variant. - - **Template**: Define a template for your cloud provider's VM configuration - - Launch VMs based on the template and automatically add them as Monitor servers. - - Supports AWS EC2 and Hetzner Cloud. - -- **Resource Tagging** - - Attach multiple *tags* to resources, which can be used to group related resources together. These can be used to filter resources in the UI. - - For example, resources can be given tags for *environment*, like `Prod`, `Uat`, or `Dev`. This can be combined with tags for the larger system the resource is a part of, such as `Authentication`, `Logging`, or `Messaging`. - - Proper tagging will make it easy to find resources and visualize system components, even as the number of resources grows large. - -- **Variables** - - Manage global, non-secret key-value pairs using the API / UI. - - These values can be interpolated into deployment `environments` and build `build_args` - -- **Core Accounts and Secrets** - - Docker / Github accounts and Secrets can now be configured in the Core configuration file. - - They can still be added to the Periphery configuration as before. Accounts / Secrets defined in the Core configuration will be preferentially used over like ones defined in Periphery configuration. - -- **User Groups** - - Admins can now create User Groups and assign permissions to them as if they were a user. - - Multiple users can then be added to the group, and a user can be added to multiple groups. - - Users in the group inherit the group's permissions. - -- **Monitor CLI + Sync** - - Introduces the [monitor cli](https://crates.io/crates/monitor_cli), which can sync resources declared across multiple toml files. - - Implements granular diffing of local and remote resources, producing detailed logs of the changes which will be made before user confirm. - - Resource files can be checked into git and managed via PR, enabling easy scaling even with large numbers of resources. - - All UI resources include button to export the resource to TOML for easy addition to your resource file. There is also a button to export all resources - to make the move to file managed resources. - -- **Builds** - - Build log displays the **latest commit hash and message**. - - In-progress builds are able to be **cancelled before completion**. - - Specify a specific commit hash to build from. - -- **Deployments** - - Filter log lines using multiple search terms. - -- **Alerting** - - The alerting system has been redesigned with a stateful model. - - Alerts can be in an Open or a Resolved state, and alerts are only sent on state changes. - - For example, say a server has just crossed 80% memory usage, the configured memory threshold. An alert will be created in the Open state and the alert data will be sent out. Later, it has dropped down to 70%. The alert will be changed to the Resolved state and the alert data will again be sent. - - In addition to server usage alerts, Monitor now supports deployment state change alerts. These are sent when a deployment's state changes without being caused by a Monitor action. For example, if a deployment goes from the Running state to the Exited state unexpectedly, say from a crash, an alert will be sent. - - Current and past alerts can be retrieved using the API and viewed on the UI. - -- **New UI**: - - The Monitor UI has been revamped to support the new features and improve the user experience. - -### v0 (Winter 2022) - -- Move Core and Periphery implementation to Rust. -- Add AWS Ec2 ephemeral build instance support. - - Configuration added to core configuration file. -- Automatic build versioning system, supporting image rollback. -- Realtime and historical system stats - CPU, memory, disk. -- Simple stats alerting based on out-of-bounds values for system stats. - - Support sending alerts to Slack. - -### Pre-versioned releases - -- Defined main resource types: - - Server - - Deployment - - Build -- Basics of Monitor: - - Build docker images from Github repos. - - Manage image deployment on connected servers, see container status, get container logs. - - Add account credentials in Periphery configuration. -- Core and Periphery implemented in Typescript. - +View the [changelog](https://github.com/mbecker20/monitor/blob/main/changelog.md) ## Screenshots