Skip to content
Scalable system to check other systems
Branch: master
Clone or download
Pull request Compare This branch is 23 commits behind MattJeanes:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.nuget
SystemChecker.Migrations
SystemChecker.Model
SystemChecker.Service
SystemChecker.Web
.gitignore
.travis.yml
LICENSE
README.md
SystemChecker.code-workspace
SystemChecker.sln
meta.json

README.md

SystemChecker

Scalable system to check other systems

TravisCI

SystemChecker.Web

Docker Stars - SystemChecker.Web Docker Pulls - SystemChecker.Web

SystemChecker.Service

Docker Stars - SystemChecker.Service Docker Pulls - SystemChecker.Service

SystemChecker.Migrations

Docker Stars - SystemChecker.Migrations Docker Pulls - SystemChecker.Migrations

Features

  • Scalable - multiple instances of frontend and backend can run simultaneously to split the load
  • Runs "checks", e.g. check if google.com responds within 2000ms and the response contains the word "Google"
  • Different types of checks
    • HTTP Check with optional authentication
    • Database Check
    • Ping Check
  • Sub-checks, e.g. check if response contains 'Hello' or SQL result is greater than 5
  • Schedules using cron expressions, e.g. run every weekday every hour between 6am-8pm
  • Notifications, e.g. if check fails for 5 minutes send slack message to #failures
  • Different notification types
    • Slack
    • Email
    • SMS
  • Dashboard
    • Shows a summary of all checks with pie charts on which are succeeding/failing/warning
    • Easily filterable by clicking on the pie chart or by using the filters on the table
    • Can goto the results view by clicking on it, or press the edit/copy/run buttons
  • Results view ("details")
    • Shows in a graph all of the results for a particular check between configurable data ranges
    • Easily filterable to show only successes/warnings/failures by clicking on the legend
    • Can be zoomed by using the bar along the bottom
  • Manual UI run
    • Allows any check to be run manually from the UI from the dashboard, results or edit pages
    • Shows a detailed log on exactly how the check is running
    • Useful for debugging the check itself or seeing what is going wrong to fix it in your system
  • User configuration
    • Optional Windows Authentication within a certain Active Directory group
    • Basic username/password users (you'll be asked to create one if there aren't any for initial setup)
    • Configurable API keys (per user)
  • Settings
    • Global settings
      • SMTP settings for email notifications
      • Clickatell API settings for SMS notifications
      • Slack token for slack notifications
      • Windows Authentication group for automatic login
      • Schedules and settings for automatic data cleanup/aggregation
      • Login expiration setting
      • Time zone setting for the schedules, UTC by default
    • Logins, used by HTTP Check type to authenticate with a website
    • Connection Strings, used by Database Check type to login to a SQL Server
    • Environments, used to split up checks on the dashboard, e.g. Production/Test
    • Contacts, used by email/SMS notifications to choose who to send to
    • Check groups, used to group up checks into system e.g. MySystem - Front Page

Setup

Environment variables:

  • ConnectionStrings__SystemChecker
    • Example: Database=SystemChecker;Data Source=sql.yoursite.com;User Id=systemchecker;Password=test
    • Used for database connectivity
  • AppSettings__Url
    • Example: https://systemchecker.yoursite.com
    • Used by notifications to include a link back to the check
  • RedisUrl
    • Example: redis:6379 or localhost:6379
    • Used for communication between backend (service) and frontend (web), must be the same between everything
  • ASPNETCORE_URLS
    • Example: localhost:5000
    • Used by ASP.NET Core to bind the frontend site to
  • UseHttps
    • Boolean, defaults to false
    • If enabled, redirects all http traffic to https

First-time setup

Before first start, create a new empty database and create a user with read/write permissions and configure the ConnectionStrings__SystemChecker environment variable accordingly.

Make sure a redis server is running and configure the RedisUrl environment variable accordingly.

Finally, make sure the AppSettings__Url is set to the reachable address of where you plan to host the site.

Database Migrations (SystemChecker.Migrations)

On first-start or when upgrading, run the migrations tool with an appropriate ConnectionStrings__SystemChecker environment variable with enough permissions to modify the database schema or the migrations will fail.

Frontend (SystemChecker.Web)

Start the program with the appropriate ConnectionStrings__SystemChecker, AppSettings__Url, RedisUrl, ASPNETCORE_URLS and optionally UseHttps environment variables, depending on your deployment you may have a Windows executable or you may need to call dotnet SystemChecker.Web.dll

Backend (SystemChecker.Service)

Start the program with the appropriate ConnectionStrings__SystemChecker, AppSettings__Url and RedisUrl environment variables, as above you may have a Windows executable or you may need to call dotnet SystemChecker.Service.dll

A command line option -s|--service is available which tells the program to run as a Windows service, useful for Windows-based deployments

A help command line option -?|-h|--help is also available.

Screenshots

Dashboard

Dashboard

Edit Check

Edit Check 1

Edit Check 2

Edit Check 3

Edit Check 4

Details

Details

Settings

Settings 1

Settings 2

Settings 3

Settings 4

Settings 5

Settings 6

User

Login User

You can’t perform that action at this time.