{"action":"created","comment":{"url":"https://api.github.com/repos/OpenNMS/opennms/pulls/comments/46741150","id":46741150,"diff_hunk":"@@ -0,0 +1,53 @@\n+\n+// Allow GitHub image rendering\n+:imagesdir: ../../images\n+\n+This section will cover the basic functionalities how _OpenNMS_ monitors availability and latency from applications or management agents.\n+To change the behavior of how _OpenNMS_ monitors applications or status information from management agents please see _Administration Guide_.\n+To extend the _Service Monitor_ framework please see _Development Guide_ of the _OpenNMS_ documentation.\n+\n+Measuring availability and latency of network services or applications is an important part in fault- and performance management.\n+In _OpenNMS_ this task is provided by a _Service Monitor_ framework.\n+The main component is _Pollerd_ which provides the following functionalities:\n+\n+* Track the status of a management resource or an application for availability calculations\n+* Measure response times for service quality\n+* Correlation of node and interface outages based on a <<gu-service-assurance-critical-service, Critical Service>>\n+\n+The following image shows the model and representation of availability and response time.\n+\n+.Representation of latency measurement and availability\n+image::service-assurance/01_node-model.png[]\n+\n+This information is based on _Service Monitors_ which are scheduled and executed by _Pollerd_.\n+A _Service_ can have any arbitrary name and is associated with a _Service Monitor_.\n+For example, we can define two _Services_ with the name _HTTP_ and _HTTP-8080_, both are associated with the _HTTP Service Monitor_ but use a different _TCP port_ configuration parameter.\n+The following figure shows how _Pollerd_ interacts with other components in _OpenNMS_ and applications or agents to be monitored.\n+\n+The availability is calculated over the last 24 hours and is shown in the _Surveillance Views_, _SLA Categories_ and the _Node Detail Page_.\n+Response times are displayed as _Resource Graphs_ of the _IP Interface_ on the _Node Detail Page_.\n+Configuration parameters of the _Service Monitor_ can be seen in the _Service Page_ by clicking on the _Service Name_ on the _Node Detail Page_.\n+The status of a _Service_ can be _Up_ or _Down_.\n+\n+When a _Service Monitor_ detects an outage, _Pollerd_ sends an _Event_ which is used to create an _Alarm_.\n+_Events_ can also be used to generate _Notifications_ for on-call network or server administrators.\n+The following images shows the interaction of _Pollerd_ in _OpenNMS_.\n+\n+.Service assurance with _Pollerd_ in _OpenNMS_ platform\n+image::service-assurance/02_service-assurance.png[]\n+\n+_Pollerd_ can generate the following _Events_ in _OpenNMS_:\n+\n+[options=\"header, autowidth\"]\n+|===\n+| Event name | Description\n+| `uei.opennms.org/nodes/nodeLostService`     | _Critical Services_ are still up, just this service is lost.\n+| `uei.opennms.org/nodes/nodeRegainedService` | Service came back up\n+| `uei.opennms.org/nodes/interfaceDown`       | _Critical Service_ on an IP interface is down or all services are down.\n+| `uei.opennms.org/nodes/interfaceUp`         | _Critical Service_ on that interface came back up again\n+| `uei.opennms.org/nodes/nodeDown`            | All critical services on all IP interfaces are down from node.\n+                                                The whole host is unreachable over the network.\n+| `uei.opennms.org/nodes/nodeUp`              | Some of the _Critical Services_ came back online.\n+|===\n+\n+The behavior to generate _interfaceDown_ and _nodeDown_ events is described in the <<gu-service-assurance-critical-service, Critical Service>> section.","path":"opennms-doc/guide-user/src/asciidoc/text/service-assurance/introduction.adoc","position":53,"original_position":53,"commit_id":"e99ca0d5aff03e2a63a012ea1a60be1e2d842543","original_commit_id":"e99ca0d5aff03e2a63a012ea1a60be1e2d842543","user":{"login":"j-white","id":1379749,"avatar_url":"https://avatars.githubusercontent.com/u/1379749?v=3","gravatar_id":"","url":"https://api.github.com/users/j-white","html_url":"https://github.com/j-white","followers_url":"https://api.github.com/users/j-white/followers","following_url":"https://api.github.com/users/j-white/following{/other_user}","gists_url":"https://api.github.com/users/j-white/gists{/gist_id}","starred_url":"https://api.github.com/users/j-white/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/j-white/subscriptions","organizations_url":"https://api.github.com/users/j-white/orgs","repos_url":"https://api.github.com/users/j-white/repos","events_url":"https://api.github.com/users/j-white/events{/privacy}","received_events_url":"https://api.github.com/users/j-white/received_events","type":"User","site_admin":false},"body":"This assumes that node-outage processing is enabled. Should we make a note of that here? Or is it out of scope of the user guide.","created_at":"2015-12-04T22:38:45Z","updated_at":"2015-12-04T22:38:45Z","html_url":"https://github.com/OpenNMS/opennms/pull/469#discussion_r46741150","pull_request_url":"https://api.github.com/repos/OpenNMS/opennms/pulls/469","_links":{"self":{"href":"https://api.github.com/repos/OpenNMS/opennms/pulls/comments/46741150"},"html":{"href":"https://github.com/OpenNMS/opennms/pull/469#discussion_r46741150"},"pull_request":{"href":"https://api.github.com/repos/OpenNMS/opennms/pulls/469"}}},"pull_request":{"url":"https://api.github.com/repos/OpenNMS/opennms/pulls/469","id":51699258,"html_url":"https://github.com/OpenNMS/opennms/pull/469","diff_url":"https://github.com/OpenNMS/opennms/pull/469.diff","patch_url":"https://github.com/OpenNMS/opennms/pull/469.patch","issue_url":"https://api.github.com/repos/OpenNMS/opennms/issues/469","number":469,"state":"open","locked":false,"title":"HZN-81: Documentation for Service Assurance","user":{"login":"indigo423","id":1095181,"avatar_url":"https://avatars.githubusercontent.com/u/1095181?v=3","gravatar_id":"","url":"https://api.github.com/users/indigo423","html_url":"https://github.com/indigo423","followers_url":"https://api.github.com/users/indigo423/followers","following_url":"https://api.github.com/users/indigo423/following{/other_user}","gists_url":"https://api.github.com/users/indigo423/gists{/gist_id}","starred_url":"https://api.github.com/users/indigo423/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/indigo423/subscriptions","organizations_url":"https://api.github.com/users/indigo423/orgs","repos_url":"https://api.github.com/users/indigo423/repos","events_url":"https://api.github.com/users/indigo423/events{/privacy}","received_events_url":"https://api.github.com/users/indigo423/received_events","type":"User","site_admin":false},"body":"Documentation for OpenNMS users to explain core concepts of service assurance. Covering availability and measuring service response times. Explain how services, IP interfaces and nodes are represented. Which components interact with Pollerd and how service monitors are defined. User should know which Events Pollerd generates to understand what causes this events. Explanation of node correlation based on critical services and explain Path Outage behavior.\r\n\r\nCreate OpenNMS administrator documentation for service assurance with Pollerd. Covering configuration for Pollerd, Path Outage, Critical Service, reload configuration and Polling packages.\r\n\r\nJIRA: http://issues.opennms.org/browse/HZN-81\r\nBamboo: http://bamboo.internal.opennms.com:8085/browse/OPENNMS-ONMS288","created_at":"2015-11-24T18:39:25Z","updated_at":"2015-12-04T22:38:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"75a06a1c0f8d152c4ce4db6f324cca6c6a837cfa","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/OpenNMS/opennms/pulls/469/commits","review_comments_url":"https://api.github.com/repos/OpenNMS/opennms/pulls/469/comments","review_comment_url":"https://api.github.com/repos/OpenNMS/opennms/pulls/comments{/number}","comments_url":"https://api.github.com/repos/OpenNMS/opennms/issues/469/comments","statuses_url":"https://api.github.com/repos/OpenNMS/opennms/statuses/e99ca0d5aff03e2a63a012ea1a60be1e2d842543","head":{"label":"indigo423:jira/HZN-81","ref":"jira/HZN-81","sha":"e99ca0d5aff03e2a63a012ea1a60be1e2d842543","user":{"login":"indigo423","id":1095181,"avatar_url":"https://avatars.githubusercontent.com/u/1095181?v=3","gravatar_id":"","url":"https://api.github.com/users/indigo423","html_url":"https://github.com/indigo423","followers_url":"https://api.github.com/users/indigo423/followers","following_url":"https://api.github.com/users/indigo423/following{/other_user}","gists_url":"https://api.github.com/users/indigo423/gists{/gist_id}","starred_url":"https://api.github.com/users/indigo423/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/indigo423/subscriptions","organizations_url":"https://api.github.com/users/indigo423/orgs","repos_url":"https://api.github.com/users/indigo423/repos","events_url":"https://api.github.com/users/indigo423/events{/privacy}","received_events_url":"https://api.github.com/users/indigo423/received_events","type":"User","site_admin":false},"repo":{"id":26230949,"name":"opennms","full_name":"indigo423/opennms","owner":{"login":"indigo423","id":1095181,"avatar_url":"https://avatars.githubusercontent.com/u/1095181?v=3","gravatar_id":"","url":"https://api.github.com/users/indigo423","html_url":"https://github.com/indigo423","followers_url":"https://api.github.com/users/indigo423/followers","following_url":"https://api.github.com/users/indigo423/following{/other_user}","gists_url":"https://api.github.com/users/indigo423/gists{/gist_id}","starred_url":"https://api.github.com/users/indigo423/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/indigo423/subscriptions","organizations_url":"https://api.github.com/users/indigo423/orgs","repos_url":"https://api.github.com/users/indigo423/repos","events_url":"https://api.github.com/users/indigo423/events{/privacy}","received_events_url":"https://api.github.com/users/indigo423/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/indigo423/opennms","description":"","fork":true,"url":"https://api.github.com/repos/indigo423/opennms","forks_url":"https://api.github.com/repos/indigo423/opennms/forks","keys_url":"https://api.github.com/repos/indigo423/opennms/keys{/key_id}","collaborators_url":"https://api.github.com/repos/indigo423/opennms/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/indigo423/opennms/teams","hooks_url":"https://api.github.com/repos/indigo423/opennms/hooks","issue_events_url":"https://api.github.com/repos/indigo423/opennms/issues/events{/number}","events_url":"https://api.github.com/repos/indigo423/opennms/events","assignees_url":"https://api.github.com/repos/indigo423/opennms/assignees{/user}","branches_url":"https://api.github.com/repos/indigo423/opennms/branches{/branch}","tags_url":"https://api.github.com/repos/indigo423/opennms/tags","blobs_url":"https://api.github.com/repos/indigo423/opennms/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/indigo423/opennms/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/indigo423/opennms/git/refs{/sha}","trees_url":"https://api.github.com/repos/indigo423/opennms/git/trees{/sha}","statuses_url":"https://api.github.com/repos/indigo423/opennms/statuses/{sha}","languages_url":"https://api.github.com/repos/indigo423/opennms/languages","stargazers_url":"https://api.github.com/repos/indigo423/opennms/stargazers","contributors_url":"https://api.github.com/repos/indigo423/opennms/contributors","subscribers_url":"https://api.github.com/repos/indigo423/opennms/subscribers","subscription_url":"https://api.github.com/repos/indigo423/opennms/subscription","commits_url":"https://api.github.com/repos/indigo423/opennms/commits{/sha}","git_commits_url":"https://api.github.com/repos/indigo423/opennms/git/commits{/sha}","comments_url":"https://api.github.com/repos/indigo423/opennms/comments{/number}","issue_comment_url":"https://api.github.com/repos/indigo423/opennms/issues/comments{/number}","contents_url":"https://api.github.com/repos/indigo423/opennms/contents/{+path}","compare_url":"https://api.github.com/repos/indigo423/opennms/compare/{base}...{head}","merges_url":"https://api.github.com/repos/indigo423/opennms/merges","archive_url":"https://api.github.com/repos/indigo423/opennms/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/indigo423/opennms/downloads","issues_url":"https://api.github.com/repos/indigo423/opennms/issues{/number}","pulls_url":"https://api.github.com/repos/indigo423/opennms/pulls{/number}","milestones_url":"https://api.github.com/repos/indigo423/opennms/milestones{/number}","notifications_url":"https://api.github.com/repos/indigo423/opennms/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/indigo423/opennms/labels{/name}","releases_url":"https://api.github.com/repos/indigo423/opennms/releases{/id}","created_at":"2014-11-05T17:25:54Z","updated_at":"2015-05-04T13:35:12Z","pushed_at":"2015-12-01T19:49:20Z","git_url":"git://github.com/indigo423/opennms.git","ssh_url":"git@github.com:indigo423/opennms.git","clone_url":"https://github.com/indigo423/opennms.git","svn_url":"https://github.com/indigo423/opennms","homepage":"http://www.opennms.org/","size":405900,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":0,"forks":3,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"OpenNMS:develop","ref":"develop","sha":"c4cb80fafc0d25b07e5a08aa7334e5cf71753b14","user":{"login":"OpenNMS","id":2972482,"avatar_url":"https://avatars.githubusercontent.com/u/2972482?v=3","gravatar_id":"","url":"https://api.github.com/users/OpenNMS","html_url":"https://github.com/OpenNMS","followers_url":"https://api.github.com/users/OpenNMS/followers","following_url":"https://api.github.com/users/OpenNMS/following{/other_user}","gists_url":"https://api.github.com/users/OpenNMS/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenNMS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenNMS/subscriptions","organizations_url":"https://api.github.com/users/OpenNMS/orgs","repos_url":"https://api.github.com/users/OpenNMS/repos","events_url":"https://api.github.com/users/OpenNMS/events{/privacy}","received_events_url":"https://api.github.com/users/OpenNMS/received_events","type":"Organization","site_admin":false},"repo":{"id":9377198,"name":"opennms","full_name":"OpenNMS/opennms","owner":{"login":"OpenNMS","id":2972482,"avatar_url":"https://avatars.githubusercontent.com/u/2972482?v=3","gravatar_id":"","url":"https://api.github.com/users/OpenNMS","html_url":"https://github.com/OpenNMS","followers_url":"https://api.github.com/users/OpenNMS/followers","following_url":"https://api.github.com/users/OpenNMS/following{/other_user}","gists_url":"https://api.github.com/users/OpenNMS/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenNMS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenNMS/subscriptions","organizations_url":"https://api.github.com/users/OpenNMS/orgs","repos_url":"https://api.github.com/users/OpenNMS/repos","events_url":"https://api.github.com/users/OpenNMS/events{/privacy}","received_events_url":"https://api.github.com/users/OpenNMS/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OpenNMS/opennms","description":"","fork":false,"url":"https://api.github.com/repos/OpenNMS/opennms","forks_url":"https://api.github.com/repos/OpenNMS/opennms/forks","keys_url":"https://api.github.com/repos/OpenNMS/opennms/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OpenNMS/opennms/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OpenNMS/opennms/teams","hooks_url":"https://api.github.com/repos/OpenNMS/opennms/hooks","issue_events_url":"https://api.github.com/repos/OpenNMS/opennms/issues/events{/number}","events_url":"https://api.github.com/repos/OpenNMS/opennms/events","assignees_url":"https://api.github.com/repos/OpenNMS/opennms/assignees{/user}","branches_url":"https://api.github.com/repos/OpenNMS/opennms/branches{/branch}","tags_url":"https://api.github.com/repos/OpenNMS/opennms/tags","blobs_url":"https://api.github.com/repos/OpenNMS/opennms/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OpenNMS/opennms/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OpenNMS/opennms/git/refs{/sha}","trees_url":"https://api.github.com/repos/OpenNMS/opennms/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OpenNMS/opennms/statuses/{sha}","languages_url":"https://api.github.com/repos/OpenNMS/opennms/languages","stargazers_url":"https://api.github.com/repos/OpenNMS/opennms/stargazers","contributors_url":"https://api.github.com/repos/OpenNMS/opennms/contributors","subscribers_url":"https://api.github.com/repos/OpenNMS/opennms/subscribers","subscription_url":"https://api.github.com/repos/OpenNMS/opennms/subscription","commits_url":"https://api.github.com/repos/OpenNMS/opennms/commits{/sha}","git_commits_url":"https://api.github.com/repos/OpenNMS/opennms/git/commits{/sha}","comments_url":"https://api.github.com/repos/OpenNMS/opennms/comments{/number}","issue_comment_url":"https://api.github.com/repos/OpenNMS/opennms/issues/comments{/number}","contents_url":"https://api.github.com/repos/OpenNMS/opennms/contents/{+path}","compare_url":"https://api.github.com/repos/OpenNMS/opennms/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OpenNMS/opennms/merges","archive_url":"https://api.github.com/repos/OpenNMS/opennms/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OpenNMS/opennms/downloads","issues_url":"https://api.github.com/repos/OpenNMS/opennms/issues{/number}","pulls_url":"https://api.github.com/repos/OpenNMS/opennms/pulls{/number}","milestones_url":"https://api.github.com/repos/OpenNMS/opennms/milestones{/number}","notifications_url":"https://api.github.com/repos/OpenNMS/opennms/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OpenNMS/opennms/labels{/name}","releases_url":"https://api.github.com/repos/OpenNMS/opennms/releases{/id}","created_at":"2013-04-11T18:22:33Z","updated_at":"2015-11-20T08:43:32Z","pushed_at":"2015-12-04T22:34:40Z","git_url":"git://github.com/OpenNMS/opennms.git","ssh_url":"git@github.com:OpenNMS/opennms.git","clone_url":"https://github.com/OpenNMS/opennms.git","svn_url":"https://github.com/OpenNMS/opennms","homepage":"http://www.opennms.org/","size":417730,"stargazers_count":104,"watchers_count":104,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":219,"mirror_url":null,"open_issues_count":19,"forks":219,"open_issues":19,"watchers":104,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/OpenNMS/opennms/pulls/469"},"html":{"href":"https://github.com/OpenNMS/opennms/pull/469"},"issue":{"href":"https://api.github.com/repos/OpenNMS/opennms/issues/469"},"comments":{"href":"https://api.github.com/repos/OpenNMS/opennms/issues/469/comments"},"review_comments":{"href":"https://api.github.com/repos/OpenNMS/opennms/pulls/469/comments"},"review_comment":{"href":"https://api.github.com/repos/OpenNMS/opennms/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/OpenNMS/opennms/pulls/469/commits"},"statuses":{"href":"https://api.github.com/repos/OpenNMS/opennms/statuses/e99ca0d5aff03e2a63a012ea1a60be1e2d842543"}}}}