<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Better Uptime</title>
    <description>The latest articles on DEV Community by Better Uptime (@betteruptime).</description>
    <link>https://dev.to/betteruptime</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F563642%2F0836f25a-97dc-4f34-a195-3217811d804d.png</url>
      <title>DEV Community: Better Uptime</title>
      <link>https://dev.to/betteruptime</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/betteruptime"/>
    <language>en</language>
    <item>
      <title>How To View And Configure Apache Access &amp; Error Logs</title>
      <dc:creator>Better Uptime</dc:creator>
      <pubDate>Wed, 19 May 2021 13:29:26 +0000</pubDate>
      <link>https://dev.to/betteruptime/how-to-view-and-configure-apache-access-error-logs-4fbl</link>
      <guid>https://dev.to/betteruptime/how-to-view-and-configure-apache-access-error-logs-4fbl</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In this tutorial, you will learn everything you need to know about Apache logging to help you troubleshoot and quickly resolve any problem you may encounter on your server. Logging is a very powerful tool that will give you valuable data about all the operations of your servers. You will learn where logs are stored, how to access them, and how to customize log output to fit your needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Apache web server.&lt;br&gt;
Sudo privileges.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 1 — Getting To Know Apache Log Types
&lt;/h2&gt;

&lt;p&gt;Apache writes logs of its events in two different log files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access Log&lt;/strong&gt; - In this file, Apache stores information about incoming requests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Error Log&lt;/strong&gt; - This file contains information about errors that the web server encountered while processing requests.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 2 — Locating Apache Log Files
&lt;/h2&gt;

&lt;p&gt;The location of the access log file is dependent upon the operating system on which is Apache web server running.&lt;/p&gt;
&lt;h4&gt;
  
  
  Location Of The Access Log
&lt;/h4&gt;

&lt;p&gt;On &lt;strong&gt;Debian-based&lt;/strong&gt; operating systems like Ubuntu, the access log file is located /var/log/apache2/access.log&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;CentOS&lt;/strong&gt;, the access log file is stored in /var/log/httpd/access.log&lt;br&gt;
A typical access log entry might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Output:
::1 - - [13/Nov/2020:11:32:22 +0100] "GET / HTTP/1.1" 200 327 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Location Of The Error Log
&lt;/h4&gt;

&lt;p&gt;On &lt;strong&gt;Debian-based&lt;/strong&gt; operating systems like Ubuntu, the access log file is located /var/log/apache2/error.log&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;CentOS&lt;/strong&gt;, the access log file is stored in /var/log/httpd/error.log&lt;br&gt;
A typical error log entry might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Output:
[Thu May 06 12:03:28.470305 2021] [php7:error] [pid 731] [client ::1:51092] script '/var/www/html/missing.php' not found or unable to stat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3 — Viewing Apache Logs
&lt;/h2&gt;

&lt;p&gt;If you are working from an operating system with the UI, the easiest way to view stored logs is by opening files in the text editor. However, sometimes you need to view the content of the files directly in the terminal. In this case, there are few ways to do it.&lt;/p&gt;

&lt;p&gt;You can tail command to view logs in real time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tail -f /var/log/apache2/access.log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The tail command is used to print the last 10 lines from the selected file. With the -f option, the tail command will be viewing the content of the file in real-time.&lt;/p&gt;

&lt;p&gt;To view the full content of the file, you can use the cat command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat /var/log/apache2/access.log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You may also want to find a specific term in the file. In that case, you can use the grep command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grep GET /var/log/apache2/access.log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First, specify the term you want to search for, then specify the actual log file. In this case, we are looking for lines in the access log file where GET therm is present.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 — Configuring Apache Access Logs
&lt;/h2&gt;

&lt;p&gt;In the access log, you can see what pages are users visiting, the status of their requests, and how long it took to process their requests.&lt;/p&gt;

&lt;h4&gt;
  
  
  Log Formats
&lt;/h4&gt;

&lt;p&gt;As was mentioned earlier, logs are a powerful tool. To be able to use this tool you need to understand the format in which are logs stored. The format of the access logs and the log file location is defined in the CustomLog directive. This directive can be used in the server configuration file (/etc/apache2/apache2.conf) or your virtual host entry. Be aware that defining the same CustomLog directive in both files may cause problems.&lt;/p&gt;

&lt;h4&gt;
  
  
  Common Log Format
&lt;/h4&gt;

&lt;p&gt;The common log format is the standardized text file format used by many web servers. It's popular as it is easy to read and contains just the necessary information. Its defined in the /etc/apache2/apache2.conf configuration file and its format look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LogFormat "%h %l %u %t \\"%r\\" %&amp;gt;s %O" common
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The entry in the log file will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Output:
127.0.0.1 alice Alice [06/May/2021:11:26:42 +0200] "GET / HTTP/1.1" 200 3477
This is the information that the log message contains:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;%h - 127.0.0.1 - Hostname or IP address of the client that made the request&lt;br&gt;
%l - alice  - Remote log name (Name used to log in a user). If not set, the default value will be used -&lt;br&gt;
%u - Alice - Remote username (Username of logged-in user). If not set, the default value will be used -&lt;br&gt;
%t - [06/May/2021:11:26:42 +0200] - Day and time of the request&lt;br&gt;
\"%r\" - "GET / HTTP/1.1" - Actual request&lt;br&gt;
%&amp;gt;s - 200 - Response code&lt;br&gt;
%O - 3477 - Size of the response in bytes&lt;/p&gt;
&lt;h4&gt;
  
  
  Combined Log Format
&lt;/h4&gt;

&lt;p&gt;The combined log format is very similar to the common log format but contains few extra pieces of information.&lt;/p&gt;

&lt;p&gt;Its defined in the /etc/apache2/apache2.conf configuration file and its format look like this:&lt;/p&gt;

&lt;p&gt;LogFormat "%h %l %u %t \"%r\" %&amp;gt;s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined&lt;br&gt;
The entry in the log file will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Output:
127.0.0.1 alice Alice [06/May/2021:11:18:36 +0200] "GET / HTTP/1.1" 200 3477 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are the extra pieces of information (aside from those present in the common format):&lt;/p&gt;

&lt;p&gt;\"%{Referer}i\" - "-" - URL of the referer&lt;br&gt;
\"%{User-Agent}i\" - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36" - Detailed information about he browser of the user that made the request.&lt;/p&gt;
&lt;h4&gt;
  
  
  Custom Log Format
&lt;/h4&gt;

&lt;p&gt;You can define your custom log format in the /etc/apache2/apache2.conf using LogFormat directive followed by the actual format of the output and nickname that will be used as format identifier.&lt;/p&gt;

&lt;p&gt;For this example, we will create a custom log format named custom that will only print the user's browser information. The format will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LogFormat "%{User-agent}i" custom
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the virtual host file, we will use the CustomLog directive to set the format of the log messages to the custom and log file to the default access log.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CustomLog ${APACHE_LOG_DIR}/access.log custom
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, we make a request and the Apache server will log the information about the browser that made the request into the access.log file. The log message will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Output:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Logging Into Multiple Files&lt;br&gt;
You can also write multiple messages into multiple files. This can be done by using the CustomLog directive more than once. Note that when logging into the custom log file, the log file has to be manually created before you can log into it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CustomLog ${APACHE_LOG_DIR}/custom.log custom
CustomLog ${APACHE_LOG_DIR}/access.log common
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5 — Configuring Apache Error Logs
&lt;/h2&gt;

&lt;p&gt;The error log contains information about the errors the web server encountered while processing the request. A common error while processing the request is a request for a missing file.&lt;/p&gt;

&lt;p&gt;You can choose to which file the error messages will be stored using the ErrorLog directive in your virtual host configuration file. This directive takes one argument - path to the log file. Here is an example from default virtual host configuration file /etc/apache2/sites-available/000-default.conf&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ErrorLog ${APACHE_LOG_DIR}/error.log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can choose a custom file but be aware as the file has to be manually created before you can log into it.&lt;/p&gt;

&lt;p&gt;In the virtual host configuration file, you can also specify the level of errors that will be logged using the LogLevel directive. Setting this option to a specific value, the server will ignore errors with lover severity then set in the LogLevel directive. It is not recommended to change it to higher values than error.&lt;/p&gt;

&lt;p&gt;These are the possible values:&lt;/p&gt;

&lt;p&gt;trace1 - trace8 - Trace messages (LOWEST)&lt;br&gt;
debug - messages used for debugging&lt;br&gt;
info - informational messages&lt;br&gt;
notice - notices&lt;br&gt;
warn - warnings&lt;br&gt;
error - errors while processing the request (doesn't require immediate action)&lt;br&gt;
crit - Critical error that requires prompt action&lt;br&gt;
alert - Error that requires immediate action&lt;br&gt;
emerg - System is unusable&lt;br&gt;
You can set the log level using the LogLevel directive like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LogLevel info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the log level is not set, the server will set the log level to warn by default.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this tutorial, you learned what types of log Apache web server stores, where you can find those logs, how to understand the formatting, and how to create your custom log formats. Now, you can log into multiple files and set the level of errors to which the server will react. At this point, you know everything you need to efficiently debug your web application.&lt;/p&gt;

&lt;p&gt;You can explore more on linux logging in &lt;a href="https://logtail.com/tutorials/tag/linux/"&gt;logtail tutorial library&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>linux</category>
      <category>logging</category>
      <category>apache</category>
    </item>
    <item>
      <title>Top Open-Source Status Page Tools for 2021</title>
      <dc:creator>Better Uptime</dc:creator>
      <pubDate>Wed, 19 May 2021 11:47:43 +0000</pubDate>
      <link>https://dev.to/betteruptime/top-open-source-status-page-tools-for-2021-2dd0</link>
      <guid>https://dev.to/betteruptime/top-open-source-status-page-tools-for-2021-2dd0</guid>
      <description>&lt;p&gt;&lt;strong&gt;Status pages are a must for any online business today&lt;/strong&gt;. In case of incidents or downtime, status pages provide a modern platform for communication with users.&lt;/p&gt;

&lt;p&gt;Now let's have a look at some open source status page tools you can use to build, publish, and maintain your status page and start communicating your downtime in a proper way.&lt;/p&gt;

&lt;p&gt;Want to host your status page for free? Read our article on &lt;a href="https://betterstack.com/community/top-7-free-status-page-tools-for-2021-community-picked/" rel="noopener noreferrer"&gt;best free and paid hosted status page tools&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv4ewnfd5xotw7zhv8rgr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv4ewnfd5xotw7zhv8rgr.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  No. 1 Open Source Status Page:
&lt;/h4&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://upptime.js.org/" rel="noopener noreferrer"&gt;Upptime&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Upptime allows users to use GitHub Actions to schedule workflows to run automatically in pre-set time intervals. The shortest interval that is allowed is 5 minutes. This means that Upptime checks your website automatically every 5 minutes and reflects your website status on the status page.&lt;/p&gt;

&lt;p&gt;Once in a day Upptime generates graphs of the site's response times. With this you can easily see and broadcast your long-term stats. Lastly Upptime website also offers some customization options. Those include option to change logo, copy, graphs, and more.&lt;/p&gt;

&lt;p&gt;Overall Upptime is a very nicely designed tool, with plenty of functionality, customization options, and well-maintained documentation.&lt;/p&gt;

&lt;h4&gt;
  
  
  Main benefits:
&lt;/h4&gt;

&lt;p&gt;Runs reliably with GitHub Actions&lt;br&gt;
Neat design and loads of customisation options&lt;/p&gt;

&lt;h4&gt;
  
  
  Explore more on your own:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://demo.upptime.js.org/" rel="noopener noreferrer"&gt;Upptime demo page&lt;/a&gt;&lt;br&gt;
&lt;a href="https://upptime.js.org/docs/get-started/" rel="noopener noreferrer"&gt;Upptime installation docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftje9bxw9nmwglh8sml46.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftje9bxw9nmwglh8sml46.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  No. 2 Open Source Status Page:
&lt;/h4&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://cachethq.io/" rel="noopener noreferrer"&gt;Cachet&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Cachet uses Bootstrap 3 to deliver responsive status pages that work well on any device. They offer basic uptime monitors and a great chart dashboard. With their API you can easily set up any metrics you want; be it uptime, error rates, or response times.&lt;/p&gt;

&lt;p&gt;There is also an option to schedule maintenance and communicate it easily to users or other stakeholders.&lt;/p&gt;

&lt;p&gt;A great benefit to anyone looking for extra security is that Cachet offers two-factor authentication, which is compatible with the Google Authenticator app.&lt;/p&gt;

&lt;h4&gt;
  
  
  Main benefits:
&lt;/h4&gt;

&lt;p&gt;Ability to show any metric in a chart&lt;br&gt;
Offers two-factor authentication&lt;/p&gt;

&lt;h4&gt;
  
  
  Explore more on your own:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://demo.cachethq.io/" rel="noopener noreferrer"&gt;Cachet demo page&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.cachethq.io/docs/installing-cachet" rel="noopener noreferrer"&gt;Cachet installation docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkljfznhcwedbtospukkq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkljfznhcwedbtospukkq.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  No. 3 Open Source Status Page:
&lt;/h4&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://github.com/statping/statping" rel="noopener noreferrer"&gt;Statping&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Statping has slightly more features included in their dashboard compared to Cachet and Upptime. The main benefit of Statping is that it offers status announcements, which come in different color schemes to quickly inform users of the current situation. The 3 main announcements are downtime, update, and resolved messages.&lt;/p&gt;

&lt;p&gt;Visually is Statping also slightly better as it offers a dedicated chart for each monitored site. These charts include average response time, uptime, and a time picker to allow for detailed exploration of the historical data.&lt;/p&gt;

&lt;p&gt;However the main benefit of Statping is the notifiers, which are built-in. Those include Slack, Discord, Telegram, Webhooks, and email.&lt;/p&gt;

&lt;p&gt;For those that don't want to host and maintain your statuspage there is a hosted option as well, which costs $6/month.&lt;/p&gt;

&lt;h4&gt;
  
  
  Main benefits:
&lt;/h4&gt;

&lt;p&gt;Notification options integrated&lt;br&gt;
Option to go for a hosted version as well&lt;/p&gt;

&lt;h4&gt;
  
  
  Explore more on your own:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://demo.statping.com/" rel="noopener noreferrer"&gt;Statping demo page&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/statping/statping" rel="noopener noreferrer"&gt;Statping installation docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmbw68gd7reqb4adqhx7e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmbw68gd7reqb4adqhx7e.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  No. 4 Open Source Status Page:
&lt;/h4&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://github.com/juliomrqz/statusfy" rel="noopener noreferrer"&gt;Statusfy&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Statustify is another tool to consider, especially when looking for advanced announcement options. Compared to other tools on this list, Statustify offers tagging, timestamps, categorization, and timelines, of different incident and status update announcements. This comes in handy when you need to communicate with your users and want to use status page as the main way to do so.&lt;/p&gt;

&lt;p&gt;On the other hand, Statustify doesn't have charts which is a significant downside for anyone looking to broadcast uptime or incident times data.&lt;/p&gt;

&lt;p&gt;The notification options are also quite limited with only basic subscription options via Web Push, iCalendar, and Twitter available.&lt;/p&gt;

&lt;p&gt;Main benefits:&lt;br&gt;
Advanced announcement options&lt;/p&gt;

&lt;p&gt;Explore more on your own:&lt;br&gt;
&lt;a href="https://demo.statusfy.co/" rel="noopener noreferrer"&gt;Statusfy demo page&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.statusfy.co/guide/#how-it-works" rel="noopener noreferrer"&gt;Statusfy installation docs&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Other open source tools to consider:
&lt;/h3&gt;

&lt;p&gt;If you want to explore more tools feel free to check this list from &lt;a href="https://awesomeopensource.com/projects/statuspage" rel="noopener noreferrer"&gt;awecomeopensource&lt;/a&gt;. Note that some of the status page tools on this list are no longer maintained and might not be suitable for commercial use.&lt;/p&gt;

&lt;h3&gt;
  
  
  Not sure about open source options?
&lt;/h3&gt;

&lt;p&gt;There are many open source options to get a nice status page. However there are also a few completely free and sufficient hosted solutions that are worth exploring. Let's have a look at 3 status page providers that offer a status page on their free plans:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xdf53mc6twv74mrazsh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7xdf53mc6twv74mrazsh.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://betteruptime.com" rel="noopener noreferrer"&gt;Better Uptime&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Better Uptime combines status pages, uptime monitoring, and incident management into a single beautifully designed product.&lt;/p&gt;

&lt;p&gt;Their status page is available for all free users and can be even published on a custom sub-domain with HTTP(s).&lt;/p&gt;

&lt;p&gt;The free plan also offers uptime monitoring with e-mail, Slack, Microsoft teams alerts as well as a basic incident management tool. The paid plans start at $30/month and offer customizable design, e-mail &amp;amp; API subscriptions, and password-protected status pages.&lt;/p&gt;

&lt;p&gt;A great feature about Better Uptime is also the embeddable system status notice, which can be used to communicate any incidents directly on the website, without the need to redirect users to the status page.&lt;/p&gt;

&lt;p&gt;Overall Better Uptime offers a great way of getting a status page quickly and for free. The uptime monitoring and incident management then comes as a plus, which comes handy, especially if you want to save money on expensive dedicated uptime monitoring solutions.&lt;/p&gt;

&lt;h4&gt;
  
  
  Main benefits:
&lt;/h4&gt;

&lt;p&gt;Free status page for all users on custom domain&lt;br&gt;
Uptime monitoring built-in&lt;br&gt;
Embeddable system status notice&lt;/p&gt;

&lt;h4&gt;
  
  
  Explore more on your own:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://betteruptime.com/pricing" rel="noopener noreferrer"&gt;Better Uptime pricing&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.betteruptime.com/" rel="noopener noreferrer"&gt;Better Uptime docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx4fgoisgqupqjuueqnwm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx4fgoisgqupqjuueqnwm.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://instatus.com/" rel="noopener noreferrer"&gt;Instatus&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Instatus is a new alternative to Atlassian's Statuspage. They offer a free status page with unlimited subscribers and unlimited teams, but the catch is that it is not on a custom domain.&lt;/p&gt;

&lt;p&gt;Their paid plan then starts at $20/month and offers the same product but with the option to get it on a custom domain.&lt;br&gt;
Instatus is a very well designed tool that is quite similar to Status page and focuses on distinguishing itself mainly with reasonable pricing for smaller teams.&lt;/p&gt;

&lt;p&gt;The feature list includes things you would expect like email subscriptions, scheduled maintenance, or incident templates. Instatus also has an API and integrates with incident management tools like Pagerduty.&lt;/p&gt;

&lt;h4&gt;
  
  
  Main benefits:
&lt;/h4&gt;

&lt;p&gt;Free status page with unlimited team members on instatus domain&lt;br&gt;
Clean and simple design&lt;/p&gt;

&lt;h4&gt;
  
  
  Explore more on your own:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://instatus.com/pricing" rel="noopener noreferrer"&gt;Instatus pricing&lt;/a&gt;&lt;br&gt;
&lt;a href="https://instatus.com/help/get-started" rel="noopener noreferrer"&gt;Instatus docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g227yd0l9tz3df77equ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g227yd0l9tz3df77equ.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.atlassian.com/software/statuspage" rel="noopener noreferrer"&gt;Atlassian Statuspage&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Statuspage made by Atlassian is the main player on the status page market. Statuspage's free plan offers 100 subscribers, 2 team members, email &amp;amp; Slack notifications, and limited access to their API.&lt;/p&gt;

&lt;p&gt;The main limitation of the free plan is that it doesn't offer the ability to have it on a custom domain. For such functionality the hobby plan starting at $29/month is necessary. However, this plan also has severe limitations, when it comes to customization as CSS and HTML can't be changed. With Statuspage this is only possible at the business plan that comes at a staggering $399/month.&lt;/p&gt;

&lt;p&gt;Overall Statuspage provides a great tool, but with a very high price tag. Considering other free, paid, and open source alternatives it is up to consideration of each team to justify whether it's really worth it.&lt;/p&gt;

&lt;h4&gt;
  
  
  Main benefits:
&lt;/h4&gt;

&lt;p&gt;Established tool made for enterprise&lt;/p&gt;

&lt;h4&gt;
  
  
  Explore more on your own:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.atlassian.com/software/statuspage/pricing" rel="noopener noreferrer"&gt;Atlassian statuspage pricing&lt;/a&gt;&lt;br&gt;
&lt;a href="https://support.atlassian.com/statuspage/resources/" rel="noopener noreferrer"&gt;Atlassian statuspage docs&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the difference between open source and paid solutions?
&lt;/h3&gt;

&lt;p&gt;There are two main differences between the open source and paid status pages. The first one is that &lt;strong&gt;open source pages are not hosted&lt;/strong&gt;, while the paid are. The second one is that &lt;strong&gt;paid pages provide subscription abilities for both users as well as admins&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There are of course plenty of other differences like customisability, team access, or integration availability, which are usually provided by the paid solutions, but not by the open source once.&lt;/p&gt;

&lt;p&gt;When considering what solution to pick, the hosting and update subscription questions should be answered first. The hosting vs not hosted question really depends on your technical capabilities and willingness to set it up.&lt;/p&gt;

&lt;p&gt;When it comes to subscription capabilities it is slightly more complicated. As a rule of thumb if you have users and/or customers that rely heavily on your service with their day-to-day operations you should opt for subscriptions. The reason behind this is that once you set up the status page you can either subscribe or ask them to subscribe for status updates. When there is an incident they will all receive a notification about it and you don't have to worry about getting your support channels overwhelmed.&lt;/p&gt;

&lt;p&gt;If you have a e-commerce site or a hobby project you can go with open source tool as subscriptions are probably not necessary for you. However please be careful. With hosted solution (especially when providing reasonable SLA uptime) you can stay calm that it will work all the time, but with open source one, all the responsibility lies on you.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are the benefits of having a status page?
&lt;/h3&gt;

&lt;p&gt;There are two main benefits of having a status page: &lt;strong&gt;Lower support cost&lt;/strong&gt; and &lt;strong&gt;higher customer trust&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The lower support costs will come as a result of users and customers checking your status page and reading your system announcements instead of just directly going on your support page and submitting a ticket.&lt;/p&gt;

&lt;p&gt;In order to achieve this you will firstly need to have a reachable and easily rememberable URL for your page. The best practise is to go for status.yourdomain.com format. Since it's used by major companies many people often try to check this URL by default.&lt;/p&gt;

&lt;p&gt;For less tech-savvy people it's recommended to also include a link to your status page on your website or in your product to make sure they can easily reach it. Of course, in case of downtime, this won't be an option and because of that, it's recommended to have a subscription option for your status page users.&lt;/p&gt;

&lt;p&gt;What status page subscription does is that it allows everyone to receive a notification (usually an email) whenever your website goes down.&lt;/p&gt;

&lt;p&gt;Once a status page is setup and its existence communicated to users, one can start building trust by being transparent about incidents and communicating them before they are even noticed by users. When this becomes a standard, users will know that if something goes wrong you will be the first one to let them know, which marks a first step towards building trust with your users.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>monitoring</category>
      <category>news</category>
      <category>webdev</category>
    </item>
    <item>
      <title>MTTR: Mean time to recovery</title>
      <dc:creator>Better Uptime</dc:creator>
      <pubDate>Wed, 20 Jan 2021 15:49:16 +0000</pubDate>
      <link>https://dev.to/betteruptime/mttr-mean-time-to-recovery-3eb5</link>
      <guid>https://dev.to/betteruptime/mttr-mean-time-to-recovery-3eb5</guid>
      <description>&lt;h2&gt;
  
  
  What is Mean time to recovery (MTTR)?
&lt;/h2&gt;

&lt;p&gt;Mean time to recovery (or mean time to restore) is the &lt;strong&gt;average time it takes to recover from a product or system failure.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is an essential metric in &lt;a href="https://betteruptime.com/blog/incident-management-and-on-call/"&gt;incident management&lt;/a&gt; as it tells how quickly you solve downtime incidents and get your systems back up and running.&lt;/p&gt;

&lt;h2&gt;
  
  
  Calculating Mean time to recovery?
&lt;/h2&gt;

&lt;p&gt;Time to recovery (TTR) is a full time of the outage – from the time the system fails to the time it is fully functioning again. The average of all times it took to recover from failures then shows the MTTR for a given system.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;MTTR = sum of all time to recovery periods / number of incidents&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For example, if a system went down for 20 minutes in 2 separate incidents, the MTTR of such system would be 10 minutes.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;10 minutes = 20 minutes / 2 incidents&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Other meanings of MTTR?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://betteruptime.com/blog/mttr-everything-you-need-to-know/"&gt;MTTR&lt;/a&gt; usually stands for mean time to recovery, but it can also represent other KPIs (key performance indicators) in the incident management process. Because of those multiple meanings, it is recommended to use the full names to prevent any misunderstandings. The other possible meanings of MTTR are:&lt;/p&gt;

&lt;h3&gt;
  
  
  Mean time to respond (MTTR)
&lt;/h3&gt;

&lt;p&gt;Mean time to respond is the average time it takes to recover from a product or service failure from the time the first failure alert is received. The difference between the mean time to recovery and mean time to respond gives the time it takes for an alert to come in.&lt;/p&gt;

&lt;p&gt;This metric helps you to see how much time of the recovery period comes down to alerting systems and how much is down to the actual work of the repair team.&lt;/p&gt;

&lt;h3&gt;
  
  
  Calculating Mean time to respond?
&lt;/h3&gt;

&lt;p&gt;The time to respond is a period between the time when an alert is received and the resolution of the incident. The average of all incident response times then gives the mean time to respond.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;MTTR = sum of all time to respond periods / number of incidents&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mean time to repair (MTTR)
&lt;/h3&gt;

&lt;p&gt;Mean time to repair is the average time it takes to repair a system. In comparison to mean time to respond, it starts not after an alert is received, but when the incident repairs actually begin.&lt;/p&gt;

&lt;p&gt;It is useful when comparing with mean time to respond as it shows how much time the team spends on diagnostics vs. how much they spend on the actual repairs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Calculating Mean time to repair?
&lt;/h3&gt;

&lt;p&gt;The time to repair is a period between the time when the repairs begin and when they finish, and the system is fully operational again. The average of all incident repair times then gives the mean time to repair.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;MTTR = sum of all time to repair periods / number of incidents&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mean time to resolve (MTTR)
&lt;/h3&gt;

&lt;p&gt;Mean time to resolve is the average time it takes to resolve a product or service failure. The resolution is defined as a point in time when the cause of an incident is identified and fixed. This incident resolution prevents similar incidents from occurring in the future.&lt;/p&gt;

&lt;p&gt;Mean time to resolve metric gives a great insight into the full scope of fixing and resolving incidents as it goes beyond the downtime and includes the works after the downtime is solved.&lt;/p&gt;

&lt;h3&gt;
  
  
  Calculating Mean time to resolve?
&lt;/h3&gt;

&lt;p&gt;The time to resolve is a period between the time when the incident begins and the resolution of the specific incident. The average of all incident resolve times then gives the mean time to resolve.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;MTTR = sum of all time to resolve periods / number of incidents&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Other incident management KPIs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mean time to acknowledge (MTTA)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://betteruptime.com/blog/mtta-eveything-you-need-to-know/"&gt;Mean time to acknowledge&lt;/a&gt; is the average time it takes for the team responsible for the given product or service to acknowledge the incident from when the alert is triggered.&lt;/p&gt;

&lt;p&gt;Main use of MTTA is to track team responsiveness and alert system effectiveness. If your team is receiving too many alerts, they might become overwhelmed and get to important alerts later than would be desirable. This situation is called alert fatigue and is one of the major problems in incident management. Luckily thanks to MTTA, it can be tracked and accessed, so it won’t become an issue.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mean time between failures (MTBF)
&lt;/h3&gt;

&lt;p&gt;Mean time between failures is the average time between one product or system failure and the next. It is a great metric to see how your team is doing in the long term in terms of preventing potential incidents as it gives an overview of system reliability.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to lower your MTTR?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use faster monitors:&lt;/strong&gt; Monitoring for incidents is the first part of any incident resolution process as it provides your team with the information that something is not working properly. Using high check frequency monitors (30-seconds is considered the best practice for general uptime checks) can decrease the time between when downtimes happen and are experienced by your users and when your team gets alerted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improve your alerting:&lt;/strong&gt; Prevent alert fatigue in your team by setting alerts that reflect the importance of the monitored systems. For example, phone call alerts are great for vital systems, but for lower-priority systems, Slack/Microsoft teams messages or push notifications might be enough. Improving alerting this way can significantly reduce your mean time to acknowledge (MTTA).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Understand your incidents:&lt;/strong&gt; Improving the information that your team is getting in the incident alerts could significantly decrease the time they spend on diagnostics. Quality debugging data like helpful event logs, error screenshots, and system performance graphs can make the diagnostics process noticeably easier.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automate on-call management process:&lt;/strong&gt; It is crucial to set up an automated on-call scheduling process integrated into your team members’ calendars. This assures that the right person, on the right team, in the right timezone, and in the right time, is always alerted. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create an action plan:&lt;/strong&gt; Sometimes, the assigned on-call team members might not answer the alert or might not be able to solve it on their own. In those cases, it is important to have a solid action plan for escalating incidents so that they are solved as soon as possible. Smaller organizations often have an ad hoc response process when solving incidents, while enterprises employ rigorous procedures. It is, however, recommended even for smaller teams to create an actionable troubleshooting plan for when incidents happen.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Designate team roles and responsibilities:&lt;/strong&gt; On-call duties are often a dreaded responsibility. Because of that is important to properly set responsibilities for each team member so when an incident occurs everyone knows what they should do. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don’t underestimate postmortems:&lt;/strong&gt; Postmortems are often overlooked as they are only reported after everything is back to normal, and no immediate action is necessary. But in-depth postmortems and incident analysis can make a significant difference between solving an incident for once and preventing it from occurring ever again in the future.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>monitoring</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Incident Management in 2021: from Basics to Best Practices</title>
      <dc:creator>Better Uptime</dc:creator>
      <pubDate>Wed, 20 Jan 2021 15:28:32 +0000</pubDate>
      <link>https://dev.to/betteruptime/incident-management-in-2021-from-basics-to-best-practices-41h6</link>
      <guid>https://dev.to/betteruptime/incident-management-in-2021-from-basics-to-best-practices-41h6</guid>
      <description>&lt;h2&gt;
  
  
  Covering the basics
&lt;/h2&gt;

&lt;h4&gt;
  
  
  What is incident management?
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://betteruptime.com/blog/incident-management-and-on-call/"&gt;Incident management&lt;/a&gt;&lt;/strong&gt; is the process used by developer and IT operations teams to respond to system failures (incidents) and restore normal service operation as quickly as possible.&lt;/p&gt;

&lt;h4&gt;
  
  
  What is an incident?
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Incident&lt;/strong&gt; is a broad term describing any event that causes either a complete disruption or a decrease in the quality of a given service. Incidents usually require immediate response of the development or operations team, often referred to as on-call or response teams in incident management.&lt;/p&gt;

&lt;h2&gt;
  
  
  5 parts of the incident management process
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Monitoring
&lt;/h3&gt;

&lt;h4&gt;
  
  
  What is incident monitoring?
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Monitoring&lt;/strong&gt; for incidents is the first part of any incident management process. Monitoring spots problems within the system and verifies that they are indeed being experienced by the end-users. Once a problem has been identified, an incident is created, and depending on the incident alerting the relevant team members are notified.&lt;/p&gt;

&lt;p&gt;A common example is monitoring accessibility of a company’s homepage. Such automated checking of a specific website is called a monitor. This monitor will automatically check the website every 30 seconds, and if there is a problem and the website becomes unavailable, it will trigger an alert.&lt;/p&gt;

&lt;p&gt;An alert is essentially a notification that includes information about the incident, for example, that the website server was overwhelmed, which might suggest an unexpected spike in traffic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pFqCfuFm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ufz6m0462epqsvp6udbk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pFqCfuFm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ufz6m0462epqsvp6udbk.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Example of a monitor that checks the availability of google.com.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. On-call scheduling
&lt;/h3&gt;

&lt;h4&gt;
  
  
  What is on-call?
&lt;/h4&gt;

&lt;p&gt;On-call is a practice where designated team members are available to respond to alerts during specific times. Setting up on-call schedules is vital for any incident management as it assures that the correct person will receive the incident alert from the monitor. When someone is ‘on-call’ it means they are the person who will respond to service issues if they arise.&lt;/p&gt;

&lt;p&gt;For example, if someone is on-call from 12 AM to 12 PM on Tuesday, it means that if there is an incident during this time, be it at 2 in the afternoon or 3 in the morning, they have to be ready to respond.&lt;/p&gt;

&lt;p&gt;The on-call setup is individual for each organization. However, the goal remains the same, make sure that someone on the team is always ready to fix urgent service issues.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G0DffZ1T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pqhpcrfxn6zzpcq0yapn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G0DffZ1T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pqhpcrfxn6zzpcq0yapn.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Example of a on-call duty system.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Alerting
&lt;/h3&gt;

&lt;h4&gt;
  
  
  What is IT alerting?
&lt;/h4&gt;

&lt;p&gt;After the monitor spots an incident, it needs to be passed onto the team that is going to solve it. Incident alerting process ensures that the right person is alerted at the right time and in the right way.&lt;/p&gt;

&lt;p&gt;An alert is a notification that is automatically sent to a specific team or team member. It can be in the form of an SMS, phone call, push notification, and more depending on the team’s communication processes.&lt;/p&gt;

&lt;p&gt;But alerts are not just plain notifications. They often provide detailed information about the incident that might help the team to find the cause and resolve it faster.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fyWhKRaJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zjw9sjtqtnfoy43e0oma.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fyWhKRaJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zjw9sjtqtnfoy43e0oma.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Example of an email incident alert for a spacex.com website.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Communication
&lt;/h3&gt;

&lt;h4&gt;
  
  
  What is incident communication?
&lt;/h4&gt;

&lt;p&gt;Once an incident happens, it is necessary to communicate it properly with everyone who is affected by it. The response team is automatically notified by the alerting system, but what about other teams inside the company, product users, clients, or potential customers?&lt;/p&gt;

&lt;p&gt;In order to communicate with everyone internally and externally, there are several communication channels available. The most common one is a dedicated status page, which shows the current status of the website.&lt;/p&gt;

&lt;p&gt;For users and customers, an embedded status widget on the affected page is often put to use. Twitter and other social media are also useful channels for broader incident communication.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oz47M8lL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9cmoex3cmzabvjoq84wp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oz47M8lL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9cmoex3cmzabvjoq84wp.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Example of a Dedicated status page.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Response
&lt;/h3&gt;

&lt;h4&gt;
  
  
  What is incident response?
&lt;/h4&gt;

&lt;p&gt;Incident response is a process describing how the team collaborates on solving the cause of an incident. This part of the process is very specific to each team as different companies use very different tools and software.&lt;/p&gt;

&lt;p&gt;In general, most of the actual troubleshooting will take place within the specific software, which is believed to be the cause of the incident.&lt;/p&gt;

&lt;p&gt;The thing that incident responses have in common is that they are all being directed from one centralized tool. In this incident management tool, individual team members communicate with each other and share critical updates. It is also a single source of information as it shows the detailed timeline of the incident as well as all the actions that were taken to solve it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--s9gyosfB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c59bk0eilyt85cs89drg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s9gyosfB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c59bk0eilyt85cs89drg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Example of centralized incident communication with a detailed incident timeline.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5 steps to a bulletproof incident management process
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Best incident monitoring practices
&lt;/h3&gt;

&lt;p&gt;Any alerts are only as good as the monitoring tool triggering them. The three main things you want to focus on when setting up monitoring solutions are incident verification, check frequency and alert thresholds.&lt;/p&gt;

&lt;h4&gt;
  
  
  Incident verification
&lt;/h4&gt;

&lt;p&gt;Incident verification is essentially how the tool ensures that the incident is indeed occurring. Proper incident verification ensures that no false positives happen and you don’t get meaningless alerts.&lt;/p&gt;

&lt;h4&gt;
  
  
  Check frequency
&lt;/h4&gt;

&lt;p&gt;Check frequency is important as it determines how often the monitor checks the desired service. This determines how quickly the potential incidents get spotted and how quickly you get the alert. For example, for uptime checks, the 30-second check frequency is considered to be best practice.&lt;/p&gt;

&lt;h4&gt;
  
  
  Alert thresholds
&lt;/h4&gt;

&lt;p&gt;Alert thresholds are the conditions under which an alert is triggered. It is vital to set those incidents triggering thresholds to be realistic so only real incidents create an alert. Correct setup of thresholds can assure that no time of the on-call team goes to waste.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Best on-call practices
&lt;/h3&gt;

&lt;p&gt;When it comes to on-call schedules, there is no one-size-fits-all solution. In order to create the most suitable on-call system for your organization, it is important to consider your team size, team locations, individual team members’ abilities, and preferred working hours.&lt;/p&gt;

&lt;h3&gt;
  
  
  On-call rotation
&lt;/h3&gt;

&lt;p&gt;On-call rotation is a pre-set repeating on-call schedule. On-call rotations are useful as they eliminate the ad hoc approach and create a repeatable system that once established repeats throughout the year.&lt;/p&gt;

&lt;h4&gt;
  
  
  Team size
&lt;/h4&gt;

&lt;p&gt;The first thing to consider when drafting an on-call rotation is the team size. For teams of two, it is common to go with every other day rotations. This means that one person does Monday, Wednesday, Friday, and Sunday and the other one Tuesday, Thursday, and Saturday, with the Sunday duty changing every other week. In the case of larger teams, weekly rotations are a popular practice.&lt;/p&gt;

&lt;h4&gt;
  
  
  Team locations
&lt;/h4&gt;

&lt;p&gt;When your team is spread across the world you might be able to mitigate the effects of the dreaded night shifts. WIth team members, in different timezones, a follow-the-sun approach can assure that most of the on-call time is spent during sunlight hours. This will create a better work-life balance for the team members and should be applied when possible.&lt;/p&gt;

&lt;h4&gt;
  
  
  Individual preferences
&lt;/h4&gt;

&lt;p&gt;Before creating an on-call rotation, it is vital to talk to everyone involved. Different individual preferences might often help to avoid necessary compromises. For example, a morning person on the team might prefer a 4:00 AM to 4:00 PM duty, while a night owl might be happy taking the 4:00 PM to 4:00 AM one. This way, both can be relatively happy, and there is no need to force anyone into full-day duty rotations.&lt;/p&gt;

&lt;h4&gt;
  
  
  Team member abilities
&lt;/h4&gt;

&lt;p&gt;In most cases, not all team members have the same knowledge of the different systems, and sometimes they need help from more senior colleagues or the specific system owners. In order to do that, the on-call teams need to set up what happens when an incident needs escalating to another employee.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1y07VK0N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/s4sgf1nfneosrajzrjwl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1y07VK0N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/s4sgf1nfneosrajzrjwl.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Example of monthly on-call schedule for a team of two.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Escalation policies
&lt;/h3&gt;

&lt;p&gt;Escalation policy describes how an on-call team handles incident escalations. Incident is escalated in two cases. The first one is when the first responder isn’t able to solve the issue alone and needs assistance from another team member.&lt;/p&gt;

&lt;p&gt;The second case is when the first on-call person doesn’t acknowledge the incoming alert. This can happen during night shifts when the alert doesn’t wake up the designated team member and the issue is then automatically escalated to another colleague.&lt;/p&gt;

&lt;h4&gt;
  
  
  Seniority-based escalation
&lt;/h4&gt;

&lt;p&gt;The most basic escalation is calling in a more experienced person. Ideally, all the members should be able to solve incidents on their own, but on rare occasions, this is what can be done to assure that the incident is solved.&lt;/p&gt;

&lt;h4&gt;
  
  
  Function-based escalation
&lt;/h4&gt;

&lt;p&gt;In some cases, the incident is specific to a system that the first responder is not equipped to resolve. To solve this issue, an escalation to a specific colleague with the needed knowledge of the specific systems is needed.&lt;/p&gt;

&lt;h4&gt;
  
  
  Automatic escalation
&lt;/h4&gt;

&lt;p&gt;Sometimes the first-in-line person doesn’t respond to the alert within a pre-set time. In this case, the incident should be automatically escalated to another team member or, in critical cases, even the whole team.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Bf8zP2MW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/43tgsuj0k2e1pex0o0cx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Bf8zP2MW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/43tgsuj0k2e1pex0o0cx.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Example of an automatic escalation policy.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Best incident alerting practices
&lt;/h3&gt;

&lt;p&gt;Compared to on-call, incident alerting rules are not that individual, and most of them can and should be adopted by all incident response teams. Overall, successful alerting is when your response team gets the minimum necessary amount of alarms, with all the necessary information, and via the right channel.&lt;/p&gt;

&lt;h4&gt;
  
  
  Use the right notification channels
&lt;/h4&gt;

&lt;p&gt;There are many different ways to get notified about system downtime. The most common ones are phone calls, SMS, Slack &amp;amp; Microsoft teams, email, and push notifications. Since some alerts are more important than others, it is necessary to distinguish how on-call teams get notified about incidents with different priority levels.&lt;/p&gt;

&lt;p&gt;Phone calls and SMS are a great way to get alerted about critical issues. Slack and email, on the other hand, are preferred for low priority incidents, which might be even of an informative nature rather than something needing an immediate fix.&lt;/p&gt;

&lt;p&gt;When selecting the right notification channels, it really depends on the on-call schedules and on the individual team preferences. For example, phone calls might not be useful when fulfilling an on-call duty in the office, however when at home it might be the best option.&lt;/p&gt;

&lt;h4&gt;
  
  
  De-duplicate and group your alerts
&lt;/h4&gt;

&lt;p&gt;When more significant problems happen, multiple alerts are often triggered. A proper alerting system will automatically de-duplicate those alerts. As a result, related alerts will be grouped into a single one, so no redundant or unactionable alerts reach the on-call team.&lt;/p&gt;

&lt;h4&gt;
  
  
  Create actionable alerts
&lt;/h4&gt;

&lt;p&gt;Getting an alert stating that there is a problem is great, but having the insight into how to solve it is equally important. That is why alerts need to include quality debugging data like helpful event logs, error screenshots, and system performance graphs. This extra information can make the diagnostics process noticeably easier.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bAATnU0l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mlauiwcpvs4dareyfu2b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bAATnU0l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mlauiwcpvs4dareyfu2b.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Example of an actionable alert sent via Slack.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Avoid alert fatigue
&lt;/h4&gt;

&lt;p&gt;Alert or alarm fatigue is a situation where an overwhelming number of alerts received by the on-call team leads to increased response time and, in more severe cases, to missed alerts. The psychological reason behind this is that the more people get exposed to false alerting, the more they are to normalize incoming alerts, tolerate them, and neglect them or even purposefully ignore them.&lt;/p&gt;

&lt;p&gt;By de-duplicating alerts, making them as actionable as possible, and only using the most relevant notification channels, the possibility of alert fatigue can be severely decreased. Read more about how to avoid alert fatigue by measuring what matters in our &lt;a href="https://betteruptime.com/blog/mttr-everything-you-need-to-know/"&gt;MTTR&lt;/a&gt; and incident management KPIs article.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Best incident communication practices
&lt;/h3&gt;

&lt;p&gt;Incidents happen, and any modern company must be transparent about them because if communicated properly, the damages can often be mitigated. Communication needs to be as fast as possible so whenever the response teams confirms that there is an incident, the following incident resolution should go hand in hand with the incident communication.&lt;/p&gt;

&lt;p&gt;Now when it comes to the distribution of honest and timely incident updates, there are three major channels that are considered best practices.&lt;/p&gt;

&lt;h4&gt;
  
  
  Create useful status pages
&lt;/h4&gt;

&lt;p&gt;The main incident communication channel for the majority of companies is a dedicated status page. A dedicated status page is a webpage that displays updates about ongoing incidents. When you subscribe to a status page, you automatically receive updates the moment they are posted there by the response team.&lt;/p&gt;

&lt;h4&gt;
  
  
  Leverage embedded status
&lt;/h4&gt;

&lt;p&gt;The easiest way to communicate incidents to your website visitors or users is via embedded status. This embedded widget shows on the top of the website and tells users the incident details. It is usually clickable and leads to a dedicated status page that provides all the necessary information. Communication via widgets can be applied in case of incidents that decrease the performance of the system but don’t create downtime.&lt;/p&gt;

&lt;h4&gt;
  
  
  Don’t overlook social media
&lt;/h4&gt;

&lt;p&gt;Social media are another way of transparently communicating incidents. Many companies choose Twitter to broadcast downtime. It is also possible to combine social media with previously mentioned channels by integrating updates to your status page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uDmOSQ_---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/itj5kyb97ix2s23m07jk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uDmOSQ_---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/itj5kyb97ix2s23m07jk.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Stripe’s status profile on Twitter.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Best incident response practices
&lt;/h3&gt;

&lt;p&gt;When it comes to actually solving incidents is best to remove any unnecessary manual tasks and diagnostics processes. Any manual tasks of gathering information from different sources can be eliminated by using a centralized mission control tool. The diagnosis process can be easily standardized with an action plan or a runbook.&lt;/p&gt;

&lt;p&gt;Since not all team members are experts in all of the systems that might potentially go down, it is best practice to have an action plan that everyone can follow to diagnose the root cause properly.&lt;/p&gt;

&lt;h4&gt;
  
  
  Have an action plan
&lt;/h4&gt;

&lt;p&gt;When it comes to incident response, all teams should have an action plan of what steps to take in a given scenario. An action plan helps any on-call person to access the given problem and gives the response relevant course even when the on-call expert is not available.&lt;/p&gt;

&lt;h4&gt;
  
  
  Centralize mission control
&lt;/h4&gt;

&lt;p&gt;A centralized workplace prevents team members from having to search multiple tools and documents to find the necessary information like contact lists, on-call schedules, or escalation policies.&lt;/p&gt;

&lt;p&gt;Centralized mission control also means that a precise timeline of the incident is recorded. This includes critical information like what were the different steps different team members took to resolve the incident as well as what was communicated with the public. Having a single source of truth like this prevents repetition of the same tasks and serves well in accessing the KPIs of the incident resolution process.&lt;/p&gt;

&lt;h4&gt;
  
  
  Don’t underestimate postmortems
&lt;/h4&gt;

&lt;p&gt;Postmortems are often overlooked as they are only reported after everything is back to normal, and no immediate action is necessary. But in-depth postmortems and incident analysis can make a significant difference between solving an incident for once and preventing it from occurring ever again in the future.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>monitoring</category>
      <category>devops</category>
      <category>guides</category>
    </item>
  </channel>
</rss>
