AppBeat Blog

Perfect Monitoring for Your Cloud

Website speed test API and cross-platform CLI

We have published first version of our website speed test API, and to make it easier to use we also published simple command line interface tool which uses it.

Source code for AppBeat CLI tool is written in C# on top of cross-platform .NET Core platform and is available on GitHub. Installation instructions are available on our Website Speed Test page.

For example, if you would like to test page speed from Asia you would simply run following AppBeat CLI command:

dotnet AppBeat.CLI.dll page-speed Asia http://www.your-webpage.com

If you are adventurous enough to use our API directly, here is how to do this :)

First, you have to obtain AppBeat API Access Key which you can get for free, but you have to have AppBeat account (Sign Up here).
Then you would have to POST json message (content type should be set to application/json) to https://web1.appbeat.io/API/v1/page-speed or https://web2.appbeat.io/API/v1/page-speed

Posted json message should have following fields:

{
   "Secret": "YOUR_APPBEAT_SECRET_KEY",
   "Url": "URL_YOU_WANT_TO_TEST",
   "Location": "TEST_LOCATION"
}

Where TEST_LOCATION should be Europe or NorthAmerica or Asia.

In return you should get json response with unique test id. Then periodically call AppBeat API server (with few seconds in-between) and ask it if results are available. You do this by sending HTTP GET request to https://web1.appbeat.io/API/v1/page-speed?secret=YOUR_APPBEAT_SECRET_KEY&id=SUBMITTED_TEST_ID or https://web2.appbeat.io/API/v1/page-speed?secret=YOUR_APPBEAT_SECRET_KEY&id=SUBMITTED_TEST_ID

Test is completed when Status property in json response is not Submitted or Pending anymore (it can take up to minute or two to start your test from our submitted test que).

You can also check our C# source code of our AppBeat CLI tool which implements this logic. Relevant code is located at:

As always, your feedback, questions and feature requests are welcome! You can contact us here.

Affordable monitoring alternative to Pingdom

Do you want reliable website monitoring but don't want to spend hundreds or even thousands of dollars per year? You have come to right place!

We have carefully analysed existing monitoring solutions and built AppBeat from scratch with three main goals in mind: reliability, efficiency and ease of use.

We offer you multi-location monitoring, plenty of built-in check types, third party integrations with Slack and PagerDuty (available also in Free plan), industry-standard encryption of your check settings and other sensitive data, powerful rule customization, noise reduction to prevent false alarms, free public status page and much more!

Our core monitoring service was designed with high-availability and robustness in mind: we have multiple identical servers in failover cluster configuration on different continents, one of them is always active and others are in passive mode. On top of that we have global network of AppBeat Agents distributed all around the world as microservices which are orchestrated by our monitoring failover cluster. With this architecture we can offer you very robust and reliable monitoring of your websites and online services.

Our free plan offers you five minute monitors with random monitoring location and most of other goodies that we offer in our paid plans. It is free forever and you don't need credit card to sign up. Our paid plans are very affordable, especially compared to competitive solutions. For only 1.99 EUR per month (around 2.20 USD in July 2016) you get ten one-minute monitors! Please check our pricing page for list of all plans.

Do you have too many monitors in competitive solution and you don't want to manually enter them in AppBeat? No problem, we can arrange migration of your existing monitors to AppBeat, just contact us first!


Have questions? We are always available to you - contact us now.

Publishing manual updates on your public status page

Today we published new version of AppBeat with following changes:

  • you can now disable outage notifications for built-in Admin contact by double-clicking it (Contacts / Users)
  • paid users can now select continents for preferred test location: Asia, North America, Europe (Account / Check settings)
  • browser tries to remember collapse state of "Individual check statuses" in "Live status" view
  • added "Public status / Status Updates" - you can now add manual status updates for your visitors
  • "Delay alerts" is temporary disabled and removed from user interface. It will be again available in future versions.
  • update other minor improvements

If you experience issues with your online application, you can now publish manual status updates for your users. To publish new status update select "Public status / Status Updates" from AppBeat menu and then click "Add new entry" button. Following dialog will open:

If your public status page is publicly enabled you can preview your newest status by selecting "Public status / Dashboard" and then clicking "Show public preview" link in top right corner. You will see something like this:

This feature is also available in our Free plan. If you are not yet AppBeat member you can sign up now. Registration is very quick and it is free (no credit card required).

In future versions we have plans to enable custom domains for AppBeat public status pages. Stay tuned...

API access for our uptime monitor

Today we published AppBeat 1.3.6 with following features:

  • "Account / API Access" - possible to call first AppBeat REST method which returns status overview of your system. This allows you to create your own simple client. We will add more useful methods in future.
  • security improvement: same application session can not be used from multiple IP addresses
  • we are now displaying question dialog when new web client is available (you can also postpone version upgrade) --> this will be visible first time when next version arrives
  • back-end upgraded to .NET Core 1.0 RTM
  • other minor improvements

API access is currently simple (just one method), but now we have solid infrastructure on which we can build. Next we will try to add REST method for measuring page speed from different locations. Website speed will be measured on remote browser and will also download all page resources (CSS, scripts, images, ...).

.NET Core 1.0 was officially released yesterday at Red Hat DevNation. Few hours later we already had our entire web backend migrated to RTM version. Because all internal tests were positive, we decided to push it to our production environment - less than 24 hours since official announcement :) This is what we call agile development :)

If your current version does not update to 1.3.6, simply press CTRL+F5 in your web browser. This should reload your page and replace cached version with new one.

How to send service outage alerts to your Slack channel?

Want to integrate your website monitoring notifications with Slack? Please follow these instructions.

Step 1

From AppBeat dashboard, click on Account in the left navigation and then choose Integrations from tab menu.

Step 2

Press the Slack button which opens Add notification channel dialog. Enter arbitrary name for this channel and your Slack webhook URL.

To make sure that everything works please click Test button which should send test notification to your Slack channel. If you don't receive any message we suggest that you double check your webhook URL. When everything looks OK you can click Add button.

Step 3

Click on Services & Checks in the left navigation and double click on service for which you want to enable Slack notifications. In Edit service dialog, please click on Notification types tab. Enable your slack channel and click Save. You can repeat this step for your other services.

 

Dynamic webhooks for integration with any notification provider (and more)

Today we published AppBeat 1.3.5 with following features:

  • added context menus for services, checks and contacts for more clean user interface
  • when you right click on check in "Service & Checks / Checks", there is new "Failure/success notes..." option. This allows you to include additional instructions for your support staff for each check and is included in sent notifications.
  • "Account / Personalization" - possible to customize notification subject and short message (SMS) template
  • "Account / Integrations" - added dynamic webhook provider which supports request customization - can be used with any notification provider that supports JSON payload
  • check name is now included by default in notification subject and short message
  • "Account / Security" - current password must be entered before changing to new password
  • other minor improvements

Context menu support:

When user clicks on check with right button, context menu is shown

Failure/success check notes:

Notification templates:

Dynamic JSON webhooks:

Backup web client for high availability

Some of our users are constantly using our "Live status" page by their monitoring teams. Primarily for this reason we are introducing secondary backup web client which can be used to monitor "Live status" page even if there is issue or outage of primary web client. Backup web client is actively running on different datacenter and can be accessed by navigating to web2.appbeat.io (this is also displayed in application footer).

Is this feature available for our free users? Of course, this feature is available for all our users! If you are not yet member, you can register here for free.

We are one of rare monitoring provider to offer such feature to their users!

---

High level diagram of current AppBeat architecture:

Embed service status to your dashboard

Today we published new version of AppBeat (1.3.4) which allows users to enable embeddable status images for each service. You can access this feature from "Public status / Embed Status":

Images are periodically updated with latest statuses by following rules:

  • if there is no status change for your service then image is refreshed every 5 minutes
  • if service status changes (from good to error, from warning to good, etc.) then we try to upload new status image as soon as possible (this is usually less than 30 seconds after you received your notification)

Status images can be embedded to your internal dashboards or internet facing websites. Image URL contains random Globally Unique Identifier (GUID) in its name which allows you too keep links private / for internal use only.

Optionally you can also customize image template with your own colors and texts (for example, you can remove service name from image).

This feature is available only for paid accounts (from 1.99 EUR / month).

AppBeat web app can now run on Linux!

We have successfully migrated our web application from .NET Core RC1 to .NET Core RC2 and published it on test Linux instance (CentOS). Best of all: AppBeat binaries are 100% identical to those on Windows (same cross platform codebase!) and were simply copied to Linux... And it works! It works great!

Here are some setup details for those who are interested.

First, you have to install .NET Core runtime by following simple instructions on Microsoft .NET Core website.

ASP.NET Core web applications are running on lightweight web server called Kestrel, but since it lacks some of important web server features (for example HTTPS, various built-in tools, ...) it is usually configured to run in tandem with other web server of your choice. On Windows this is IIS, on CentOS we selected NGINX. Those web servers then forward your request to Kestrel which runs your ASP.NET Core web application, creates output and returns it back to main web server.

To setup NGINX to forward requests to Kestrel you have to edit nginx.conf with following (adapt if needed):

location / 
{
proxy_pass http://127.0.0.1:5000;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Original-Proto $scheme;
proxy_set_header X-Original-For $remote_addr;
proxy_http_version 1.1;
}

Then we installed supervisor to monitor our Kestrel process and make sure it is always running:
sudo yum install supervisor

We created kestrel_default.ini file in /etc/supervisord.d/kestrel_default.ini with following content:

[program:kestrel_default]
command=dotnet /usr/share/nginx/WebApp/AppBeat.Web.dll
directory=/usr/share/nginx/WebApp
autorestart=true
autostart=true
stdout_logfile=/var/log/AppBeat/app_std_out.log
stderr_logfile=/var/log/AppBeat/app_err.log

After you saved file you can start Kestrel process by typing:

sudo supervisorctl start kestrel_default

Make sure nginx and supervisor are started on system boot:

sudo systemctl enable nginx
sudo systemctl enable supervisord

This is pretty much it :) We are now prepared for future! If you have questions you can reach us on @AppBeatMonitor

AppBeat Incidents

To make everything fully transparent we have added "Incidents" section into our Help module. Here you can find all AppBeat operation issues that were detected, with detailed description what went wrong, how service was affected and how could we prevent similar issue in future.