An uptime monitoring web application that is easy to understand, use, and extend.
Click here to view the live demo site.
uptime is easy to deploy to your AWS account, with a one-liner for deployment.
-
Make sure that the
AWS_REGIONandAWS_PROFILEenvironment variables are set, or that you have the appropriate AWS region and credentials configured elsewhere in your environment -
Make sure that you have
nodeandnpm -
Clone this repository, with
git clone https://github.com/khalidx/uptime -
Run the following command to build and deploy:
npm install && npm run deployAfter deployment, the WebsiteUrl for the status page and the ServiceEndpoint for the API will be logged to the console.
If you are just trying out uptime, you can easily remove it from your AWS account with npm run undeploy.
Public vs VPC deployments
By default, the status page site will be accessible to the internet.
If you'd like the site to only be accessible within your AWS network, set the following variables in the serverless.yml file before deployment.
...
custom:
uptime:
privacy: vpc
vpc: <your-vpc-id>
...**Using an IAM managed policy or permissions boundary
By default, IAM roles will be created as-is.
If your organization requires a permissions boundary to be associated to the roles created for Lambda functions when deploying, set the following variables in the serverless.yml file before deployment.
...
custom:
uptime:
permissionsBoundary: <your-managed-iam-policy-arn>
...This section contains information about what you'll find on each page of the uptime web application.
- relevant messages
- a listing of all services and their status
- incident history
- service status
- latency metrics
- error metrics
- scheduled checks
- message management
- service management
- settings
- logs
- data export
This section contains information about the uptime API and the operations it supports.
| Done | Operations | Path | Description |
|---|---|---|---|
| β | GET, PUT, DELETE | /settings |
Manage system settings, like the status page title |
| π§ | GET, POST | /services |
Get a list of monitored services or add a service |
| π§ | GET, PUT, DELETE | /services/{serviceId} |
Get or manage a specific service |
| π§ | GET, DELETE | /services/{serviceId}/metrics |
Get service metrics, or reset collected metrics data for a service |
| π§ | GET, POST | /services/{serviceId}/messages |
Get a list of operational status messages for a service, or add a new message |
| π§ | GET, PUT, DELETE | /services/{serviceId}/messages/{messageId} |
Get or manage a specific message |
| π§ | GET, POST | /services/{serviceId}/feedback |
Get a list of feedback messages for a service, or submit a feedback message |
| π§ | GET, POST | /services/{serviceId}/feedback/{feedbackId} |
Get or manage a specific feedback message |
| π§ | GET, POST | /services/{serviceId}/checks |
Get the configured checks for a service, like scheduled pings, or add a new service check |
| π§ | GET, PUT, DELETE | /services/{serviceId}/checks/{checkId} |
Get or manage a specific service check |
Open a GitHub issue to ask a question, report a bug, raise a concern, or request a new feature.
This section is for developers looking to develop, modify, or extend this project.
src/app/(the uptime serverless application backend)src/ui/(the uptime web application frontend)
Prerequisites:
nodeandnpm- Ensure the
AWS_REGIONandAWS_PROFILEenvironment variables are set, or that you have the appropriate AWS region and credentials configured elsewhere in your environment.
Clone the repository from GitHub.
git clone https://github.com/khalidx/uptime && cd uptimeInstall the project dependencies.
npm installDeploy the application and site to AWS.
npm run deployStarts the project with a development server and hot-reload, for developing the backend and front-end, locally.
Make sure the application is deployed first, so that non-local assets (like DynamoDb) are available for use.
npm run devRemove the site and application from AWS.
npm run undeployAlternatively, build, deploy the backend, and run the UI with Docker.
Make sure to provide your AWS credentials and target region as build arguments.
docker build \
--build-arg AWS_ACCESS_KEY_ID=<your-aws-key> \
--build-arg AWS_SECRET_ACCESS_KEY=<your-aws-secret> \
--build-arg AWS_REGION=us-east-1 \
-t uptime .
docker run --rm -p 8080:8080 uptime


