{"id":51,"date":"2010-08-09T10:07:44","date_gmt":"2010-08-09T07:07:44","guid":{"rendered":"http:\/\/blog.railsware.com\/?p=51"},"modified":"2021-08-16T12:53:08","modified_gmt":"2021-08-16T09:53:08","slug":"notification-monitor","status":"publish","type":"post","link":"https:\/\/railsware.com\/blog\/notification-monitor\/","title":{"rendered":"Notification Monitor"},"content":{"rendered":"\n<p><a href=\"http:\/\/www.ratepoint.com\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" title=\"RatePoint\">RatePoint<\/a> is an active, successful player in the competitive field of Internet marketing. It is hosted at 3 data centers, has 39 servers and includes about 10 internal and external services with their own configured environments\u00a0to maximize\u00a0performance.<\/p>\n\n\n\n<p>24\/7 high quality service is a major priority for RatePoint,\u00a0which means that service should always be stable and reliable. Service stability can be achieved only with finely tuned monitoring and timely support. We use different services to monitor the system: <a href=\"http:\/\/bit.ly\/rw-newrelic2\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" title=\"NewRelic\">NewRelic<\/a>, WatchMouse, PingDom, <a href=\"http:\/\/bit.ly\/rw-scout\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" title=\"ScoutApp\">ScoutApp<\/a>.<\/p>\n\n\n\n<p>To&nbsp;achieve a unified process of handling&nbsp;incoming notifications, we created a system named Notification Monitor. All notifications from services&nbsp;flows into&nbsp;separate mailboxes (rp_critical, rp_warning, rp_production, rp_staging), depending on the notification priority. The most important and urgent &#8212;&nbsp;those that need&nbsp;attention as soon as they appear &#8212;&nbsp;are directed to the rp_critical box. Notification Monitor Daemon processes them and alerts support in a few different ways.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"690\" height=\"630\" src=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/rw_traffic_light_chema_1.png\" alt=\"Alert Schema\" class=\"wp-image-4082\" srcset=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/rw_traffic_light_chema_1.png 690w, https:\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/rw_traffic_light_chema_1-300x273.png 300w\" sizes=\"auto, (max-width: 690px) 100vw, 690px\" \/><\/figure><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>Let&#8217;s take a closer look at how it works. The system includes a\u00a0Web application, a desktop utility, and a physical traffic light.\u00a0The Web-based Rails application has two components: Notification Monitor Daemon and Notification Monitor Web.<\/p>\n\n\n\n<p><strong>Notification Monitor Daemon:<\/strong><br>Every 10 seconds daemon checks the rp_critical box for unread messages. If there are such messages, it parses them to detect the type of message. If it detects an &#8220;alert\/back to normal&#8221; message&nbsp;it puts it into the system with an &#8220;active&#8221; status&nbsp;and marks the message as &#8220;read.&#8221;&nbsp;If there are active notifications, daemon turns on the physical traffic light in the office. It will also turn off the traffic signal&nbsp;once&nbsp;a notification&nbsp;is assigned to or resolved by team members.<\/p>\n\n\n\n<p><strong>Notification Monitor Web:<\/strong><\/p>\n\n\n\n<p>We will show you in pictures :)<\/p>\n\n\n\n<p class=\"has-text-align-center\">The system in the &#8220;Ok&#8221; state &#8212; no active notifications<br><img loading=\"lazy\" decoding=\"async\" src=\"\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/app-green.jpeg\" alt=\"Figure2: Notification Monitor Web - all is ok\" width=\"288\" height=\"175\"><\/p>\n\n\n\n<p class=\"has-text-align-center\">The system in the &#8220;Alert&#8221; state &#8211; siteseals.ratepoint.com is DOWN<br><img loading=\"lazy\" decoding=\"async\" src=\"\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/app-red.jpeg\" alt=\"Figure3: Notification Monitor Web - active notifications\" width=\"288\" height=\"175\"><\/p>\n\n\n\n<p class=\"has-text-align-center\">The system in the &#8220;in progress&#8221; state &#8212; <em>skorolev<\/em> has been&nbsp;assigned the task,&nbsp; &#8220;siteseals.ratepoint.com is UP&#8221; bind to the DOWN notification<br><img loading=\"lazy\" decoding=\"async\" src=\"\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/app-yellow.jpeg\" alt=\"Figure4: Notification Monitor Web - assigned notifications\" width=\"288\" height=\"175\"><\/p>\n\n\n\n<p><strong>TrafficLight.app:<\/strong><\/p>\n\n\n\n<p>There is also desktop utility&nbsp;called&nbsp;TrafficLight.app, which displays the system&#8217;s status and issues an alert through the Growl notification if there is a change in status.<br>It works in an asynchronous mode, checking the system status once&nbsp;every&nbsp;10 seconds. If the status has changed&nbsp;the Growl notification will provide details.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/tray-green.jpeg\" alt=\"Figure5: TrafficLight.app - all is ok\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/Figure6-TrafficLight.app-alert.jpeg\" alt=\"Figure6: TrafficLight.app - alert!\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/TrafficLight.app-in-progress.jpeg\" alt=\"Figure7: TrafficLight.app - in progress\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/Figure8-Growl-alert.jpeg\" alt=\"Figure8: Growl alert\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/Figure9-Growl-alert.jpeg\" alt=\"Figure9: Growl alert\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/Figure10-Growl-alert.-Physical-traffic-light-1.jpeg\" alt=\"Figure10: Growl alert\"\/><\/figure>\n\n\n\n<p><strong>Physical traffic light:<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-center\">In the office we have a real traffic light&nbsp;that signals red when&nbsp;something happens, so alerts won&#8217;t be ignored!<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/Figure11-Physical-traffic-light-big.jpg\" alt=\"Figure11: Physical traffic light\"\/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-left\"><strong>Epilogue:<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-left\">Notification Monitor takes away the need&nbsp;to constantly&nbsp;check the mailbox and lets the team concentrate on important&nbsp;innovations and new features.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>RatePoint is an active, successful player in the competitive field of Internet marketing. It is hosted at 3 data centers, has 39 servers and includes about 10 internal and external services with their own configured environments\u00a0to maximize\u00a0performance. 24\/7 high quality service is a major priority for RatePoint,\u00a0which means that service should always be stable and&#8230;<\/p>\n","protected":false},"author":41,"featured_media":3755,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5],"tags":[],"coauthors":["Sergiy Korolov"],"class_list":["post-51","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-management"],"acf":[],"aioseo_notices":[],"categories_data":[{"name":"Product Management","link":"https:\/\/railsware.com\/blog?category=management"}],"post_thumbnails":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2010\/08\/rw_traffic_light_chema_1.png","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/51","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/comments?post=51"}],"version-history":[{"count":36,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/51\/revisions"}],"predecessor-version":[{"id":14098,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/51\/revisions\/14098"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media\/3755"}],"wp:attachment":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media?parent=51"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/categories?post=51"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/tags?post=51"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/coauthors?post=51"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}