AppBeat Blog

Perfect Monitoring for Your Cloud

Migration of our monitoring stack to .NET Core 2.0 and .NET Standard 2.0

After successful migration of our monitoring front-end, back-end and microservices to .NET Core 2.0 and .NET Standard 2.0, here is quick summary of this process.

Migration decision

Although we were very very satisfied with .NET Core 1.0, we decided for migration to newest version for following reasons:

  • bigger API and more libraries available (thanks to .NET Standard 2.0)
  • much easier to share common internal projects between .NET Core 2.0 and Full .NET Framework on Windows (.NET Framework 4.6.1 and newer)
  • security and performance improvements


We started official migration from .NET Core 1.0 as soon as Microsoft released RTM version of .NET Core 2.0 and Visual Studio tooling. Entire process went quite smoothly and without major issues. We followed official instructions published on Microsoft Docs (very useful).

During migration, most time was spent for resolving NuGet conflicts and we also encountered one runtime problem with Entity Framework Core 2.0 - we resolved this by doing simple workaround and rewriting this one problematic query. Everything else was - perfect!


Our migrated solution is now deployed on Windows and Linux production servers and everything runs without any issues. Improvements on web front-end are very noticeable (Kestrel, compiled MVC views, smaller deployments). Mission accomplished!

Thanks to Microsoft and all open source contributors for making such a great product!

Want less monitoring alarms? Introducing quiet hours!

In newest AppBeat version 1.7.0 you can now define quiet hours for your users, services and/or third-party integrations (I will refer to these as "resources").

Quiet hours are recurring time periods during which alerts (outgoing notifications) are muted for selected resource(s). Quiet hours does not affect monitoring, just notifications. This means that you will always be able to check log entries, even during effective quiet hours.

You can access this new feature from "Alerting" module and by clicking "Quiet hours" tab as shown below:

When you click "Add quiet hours for" button for specific resource, you will be presented with dialog similar to this:

You can add multiple quiet hours for same resource, AppBeat engine will always aggregate those entries while determining if quiet hour is effective or not.

Here are some use case examples:

  • you have service which is not operational 24/7 - now you can simply set quiet hours when service is not active so you don't receive any alerts
  • you have recurring (nightly) updates and you want to mute alerts during this period
  • you don't want to receive alerts for less important service(s) during weekend
  • your team member goes on vacation or sick leave and you don't want to bother him/her with outage alerts
  • some of your team members receive alerts only during working hours (and you have dedicated team for 24/7 operations)
  • etc.

Happy monitoring!

Implementing WebDriverIO support in .NET Core 2.0 for efficient Selenium testing

We are currently implementing experimental subset of WebDriverIO API (higher level API on top of Selenium WebDriver) in .NET Core so we could run synthetic (transaction) monitoring very efficiently from different geographic locations.

Implementation goals:

  • cross-platform, efficient and lightweight framework
  • easy to use (REST API / web interface)
  • high compatiblity with WebDriverIO because users are already familiar with it
  • for security reasons we will probably implement simple JavaScript interpreter for WebDriverIO commands (instead of running tests in Node.js)

Currently we have basic prototype but it looks very promising:

If you have any ideas or suggestions, please let us know!

New notification rules for website monitor

We slightly updated our notification rules for new website checks. Reason for this update is only "cosmetic" - new rules will generate better descriptions for outgoing notifications and log files.

New rule for status "Error"

[trigger_rule: 5xx server error rule]
%STATUS% >= 500

[trigger_rule: 4xx client error rule]
%STATUS% >= 400

New rule for status "Warning"

[trigger_rule: warning by 3xx redirection rule]
%STATUS% >= 300 AND %STATUS% < 400

New rule for status "Good"

%STATUS% >= 200 AND %STATUS% < 300

Previously we included 3xx redirections in status "Good", but now we moved them to "Warning" rule. Error rule is now also more detailed.
Of course you can update default rules to suit your own needs and combine them with other variables (%RESPONSE_TIME%, %RESPONSE%, %RESPONSE_HEADER%).

Please note: rules are always evaluated from top to down in following order: Error --> Warning --> Good. When first condition is met, rule evaluation is stopped and status is returned.

Rules for existing web checks were not changed. Users can optionally updated them if they choose so. Please contact us if you have any questions.

Improved user experience for our website monitoring client

We published new web application with improved UX and some new useful features:

  • you can now quickly filter your checks on "Live status" screen:

  • added quick actions for monitored checks and services

  • "Live status" simplifications due to new quick actions feature
  • Check wizard should now have better support for high DPI displays and show vertical scrollbar where needed
  • Added option to easily clone monitored check (this allows you to quickly create similar monitors)

  • "Live status" - dismiss all alerts is displayed when there is more than one service alert. Previously you had to click "dismiss alert" for each monitored service.
  •  new API methods: added dismiss-service-alert and dismiss-all-service-alerts endpoints
  • other minor improvements & optimizations

If you find any issue please let us know.

Happy monitoring!

Receive monitoring alerts to your Workplace by Facebook

Today we published new application version with native support for Facebook Workplace.

How to enable it? Please login to your Facebook Workplace account with administrative rights.

Click on Dashboard / Integrations and click "Create App" button. Enter "App Name" (it can be AppBeat or something similar) and set minimum App Permissions to: "Read content" (needed to read group id) and "Post to groups" (needed to post alert).

Now go to AppBeat and click "Alerting" from left menu. Select "Third-Party service integration" tab, click "Add new integration" button and select "Workplace by Facebook":

Please enter following fields:

  • arbitrary integration name (seen only in AppBeat)
  • access token (you should get this when you create Workplace App as described above)
  • community id (available from Facebook Workplace Dashboard / Integrations)
  • group (group name which is available in Facebook Workplace; you can also leave default group named "General")

We suggest that you click "Test" button and check for any errors. If everything goes OK, you should see new test post in your Workplace group.

Finally, don't forget to associate your new Facebook Workplace integration with your AppBeat service. You can do this by clicking "Services & Checks" from left menu, double-click on service that you want to link, select "Notification types" tab, enable (check) your new integration and click "Save" button.

Optionally you can repeat this for multiple services.

Hopefully you will find these instructions useful. And as always - happy monitoring!

Updated pricing and new Standard plans

Dear AppBeat Users,

After observing monitoring requirements for almost a year, we are now slightly updating our pricing policy to better reflect your needs.

Starter plan is now even more accessible and allows you to have 5 one-minute monitors for just 2.49 EUR per month. This plan is suitable for blog owners, micro companies and individuals.

We also updated Standard plan where we added support for Standard plan multipliers. You can now choose Standard plan which best suits your specific requirements:

  • Standard Plan (15 checks, 10 SMS messages per month)
  • Standard x2 Plan (30 checks, 20 SMS messages per month)
  • Standard x3 Plan (45 checks, 30 SMS messages per month)
  • Standard x4 Plan (60 checks, 40 SMS messages per month)
  • Standard x5 Plan (75 checks, 50 SMS messages per month)
  • Standard x6 Plan (90 checks, 60 SMS messages per month)

Hopefully you will find this update useful. Happy monitoring!

How to create status page for your app or website using your domain

AppBeat website monitoring allowed you to easily create public status page for a long time. This page is hosted on our domain by using URL in following format:

However some users wanted more:

  • hosting public status page on their own domain
  • use their own CSS styling

We are happy to announce that newest AppBeat allows you all that!

Method 1: creating public status page on your domain by using simple static HTML template and JavaScript

If you navigate to "AppBeat / Public status / Dashboard" you will be able to enable your status page from there and publish on your web server static HTML file, similar to this:

      <title>Your title</title>
      <!--Please copy css style to your web server because we could rename it in future-->
      <link rel="stylesheet" type="text/css" href="" />
      <!--AppBeat status page is rendered into element with id appbeat-status-container-->
      <div id="appbeat-status-container" class="status-layout"></div>

      <!--Load AppBeat status page script for your page and start rendering it-->
      <script src=""></script>
      <!--Tip: your script is also duplicated on which is hosted in different region-->

Every time your visitor navigates to this page it will show him/her latest status of your page.

Method 2: creating public status page on your domain by getting embeddable HTML fragment on your server side

If you don't want to use JavaScript based solution for your status page, you can call following endpoints on your web server to get HTML fragment which can be embedded in your HTTP response:

Both methods can be styled with your own CSS or you can use our default style located at:

Good thing about this solution is also, that you don't have to change DNS settings to get it to work. Simply publish static HTML file on your web server or embed our HTML fragment if you use dynamic pages. And that is it!

If you would like to try this feature, you can register for new free account and please contact us so we can enable your 14-day risk free trial.

Please note, that for limited time we offer you 60% discount on Starter plan.

Price comparison of website monitoring services (2017)

We have compiled pricing list of popular website monitoring services for their entry level monthly plans. For easier comparison, all prices were converted to EUR (we used latest exchange rate which was available on February 12th, 2017).

Monitoring prices as of February 12th, 2017:


Entry price

Discounted price


Notification types


12.95 EUR / month

not available


Email, SMS, webhook, Twitter

Uptime Robot

~6.5 EUR / month

~5.17 EUR / month


Email, SMS, webhook, Twitter, Boxcar 2, Pushbullet, Pushover, HipChat, Slack


~8.46 EUR / month

not available


Email, Cachet, PagerDuty, Slack, StatusPage, Twitter


~9.4 EUR / month

not available


Email, SMS


11.44 EUR / month

10.30 EUR / month


Email, SMS, PagerDuty, Slack


~9.4 EUR / month

~8.46 EUR / month


Email, SMS, PagerDuty, Zapier

Happy Apps

~9.35 EUR / month

not available




4.99 EUR / month

2 EUR / month


Email, SMS, webhookHipChat, OpsGenie, PagerDuty, Pushover, Slack, StatusPage


Based on this list we calculated annual cost for single one-minute monitor.

Yearly price for 1 minute monitor = (Entry price / Monitors) * 12

pingometer: (8.46 EUR / 5 monitors) * 12 months = 20.304 EUR for each monitor per year
Pingdom: (12.95 EUR / 10 monitors) * 12 months = 15.54 EUR for each monitor per year
Uptrends: (11.44 EUR / 10 monitors) * 12 months = 13.728 EUR for each monitor per year
Site24x7: (9.40 EUR / 10 monitors) * 12 months = 11.28 EUR for each monitor per year
Happy Apps: (9.35 EUR / 25 monitors) * 12 months = 4.488 EUR for each monitor per year
AppBeat: (4.99 EUR / 25 monitors) * 12 months = 2.3952 EUR for each monitor per year
uptime: (9.40 EUR / 50 monitors) * 12 months = 2.256 EUR for each monitor per year
Uptime Robot: (6.50 EUR / 50 monitors) * 12 months = 1.56 EUR for each monitor per year

Discounted yearly price for 1 minute monitor = (Discounted price / Monitors) * 12

pingometer: (8.46 EUR / 5 monitors) * 12 months = 20.304 EUR for each monitor per year
Pingdom: (12.95 EUR / 10 monitors) * 12 months = 15.54 EUR for each monitor per year
Uptrends: (10.30 EUR / 10 monitors) * 12 months = 12.36 EUR for each monitor per year
Site24x7: (8.46 EUR / 10 monitors) * 12 months = 10.152 EUR for each monitor per year
Happy Apps: (9.35 EUR / 25 monitors) * 12 months = 4.488 EUR for each monitor per year
uptime: (9.40 EUR / 50 monitors) * 12 months = 2.256 EUR for each monitor per year
Uptime Robot: (5.17 EUR / 50 monitors) * 12 months = 1.2408 EUR for each monitor per year
AppBeat: (2.00 EUR / 25 monitors) * 12 months = 0.96 EUR for each monitor per year