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_REGION
andAWS_PROFILE
environment variables are set, or that you have the appropriate AWS region and credentials configured elsewhere in your environment -
Make sure that you have
node
andnpm
-
Clone this repository, with
git clone https://github.com/khalidx/uptime
-
Run the following command to build and deploy:
npm install && npm run deploy
After 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:
node
andnpm
- Ensure the
AWS_REGION
andAWS_PROFILE
environment 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 uptime
Install the project dependencies.
npm install
Deploy the application and site to AWS.
npm run deploy
Starts 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 dev
Remove the site and application from AWS.
npm run undeploy
Alternatively, 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