metadata.yaml 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  1. # yamllint disable rule:line-length
  2. ---
  3. - id: "notify-cloud-mobile-app"
  4. meta:
  5. name: "Netdata Mobile App"
  6. link: "https://netdata.cloud"
  7. categories:
  8. - notify.cloud
  9. icon_filename: "netdata.png"
  10. keywords:
  11. - mobile-app
  12. - phone
  13. - personal-notifications
  14. setup:
  15. description: |
  16. ### Prerequisites
  17. - A Netdata Cloud account
  18. - You need to have the Netdata Mobile App installed on your [Android](https://play.google.com/store/apps/details?id=cloud.netdata.android&pli=1) or [iOS](https://apps.apple.com/in/app/netdata-mobile/id6474659622) phone.
  19. ### Netdata Mobile App Configuration and device linking
  20. In order to login to the Netdata Mobile App
  21. 1. Download the Netdata Mobile App from [Google Play Store](https://play.google.com/store/apps/details?id=cloud.netdata.android&pli=1) or the [iOS App Store](https://apps.apple.com/in/app/netdata-mobile/id6474659622)
  22. 2. Open the App and Choose your Sign-in option
  23. - Email Address: Enter the email address of your registered Netdata Cloud account and click on the verification link received by email on your mobile device.
  24. - Sign-in with QR Code: Scan the QR code from the Netdata Cloud UI under **Profile Picture** --> **Settings** --> **Notifications** --> **Mobile App Notifications** --> **Show QR Code**
  25. ### Netdata Configuration
  26. After linking your device, enable the toggle for **Mobile App Notifications** under the same settings panel.
  27. - id: "notify-cloud-discord"
  28. meta:
  29. name: "Discord"
  30. link: "https://discord.com/"
  31. categories:
  32. - notify.cloud
  33. icon_filename: "discord.png"
  34. keywords:
  35. - discord
  36. - community
  37. setup:
  38. description: |
  39. ### Prerequisites
  40. - A Netdata Cloud account
  41. - Access to the Space as an **Admin**
  42. ### Discord Server Configuration
  43. 1. Go to **Server Settings** --> **Integrations**
  44. 2. **Create Webhook** or **View Webhooks** if you already have some defined
  45. 3. Specify the **Name** and **Channel** on your new webhook
  46. 4. Keep note of the **Webhook URL** as you will need it for the configuration of the integration on the Netdata Cloud UI
  47. ### Netdata Configuration
  48. 1. Click on the **Space settings** cog (located above your profile icon)
  49. 2. Click on the **Alerts & Notifications** tab
  50. 3. Click on the **+ Add configuration** button
  51. 4. Add the Discord Integration
  52. 5. A modal will be presented to you to enter the required details to enable the integration:
  53. - **Notification settings**
  54. - Configuration name (optional): A name for your configuration in order to easily refer to it
  55. - Rooms: A list of Rooms for which you want to be notified
  56. - Notifications: The notifications which you want to be notified
  57. - **Integration configuration**
  58. - Webhook URL: The URL you copied from the previous section
  59. - Channel Parameters: Select the channel type which the notifications will be sent to, if it is a Forum channel, you need to specify a thread name
  60. - id: "notify-cloud-pagerduty"
  61. meta:
  62. name: "PagerDuty"
  63. link: "https://www.pagerduty.com/"
  64. categories:
  65. - notify.cloud
  66. icon_filename: "pagerduty.png"
  67. keywords:
  68. - pagerduty
  69. setup:
  70. description: |
  71. ### Prerequisites
  72. - A Netdata Cloud account
  73. - Access to the Space as an **Admin**
  74. - The Space needs to be on a paid plan
  75. - You need to have a PagerDuty service to receive events using webhooks.
  76. ### PagerDuty Server Configuration
  77. 1. Create a service to receive events from your services directory page on PagerDuty
  78. 2. On the third step of the service creation, select `Events API V2` Integration
  79. 3. Once the service is created, you will be redirected to its configuration page, where you can copy the **Integration Key** and **Integration URL (Alert Events)** in order to add them to your integration configuration in the Netdata Cloud UI
  80. ### Netdata Configuration
  81. 1. Click on the **Space settings** cog (located above your profile icon)
  82. 2. Click on the **Alerts & Notifications** tab
  83. 3. Click on the **+ Add configuration** button
  84. 4. Add the PagerDuty Integration
  85. 5. A modal will be presented to you to enter the required details to enable the integration:
  86. - **Notification settings**
  87. - Configuration name (optional): A name for your configuration in order to easily refer to it
  88. - Rooms: A list of Rooms for which you want to be notified
  89. - Notifications: The notifications which you want to be notified
  90. - **Integration configuration**
  91. - Integration Key: A 32 character key provided by PagerDuty to receive events on your service.
  92. - Integration URL (Alert Events): The URL provided by PagerDuty where Netdata Cloud will send notifications.
  93. - id: "notify-cloud-slack"
  94. meta:
  95. name: "Slack"
  96. link: "https://slack.com/"
  97. categories:
  98. - notify.cloud
  99. icon_filename: "slack.png"
  100. keywords:
  101. - slack
  102. setup:
  103. description: |
  104. ### Prerequisites
  105. - A Netdata Cloud account
  106. - Access to the Space as an **Admin**
  107. - The Space needs to be on a paid plan
  108. - You need to have a Slack app on your workspace to receive the Webhooks.
  109. ### Slack Server Configuration
  110. 1. Create an app to receive webhook integrations. Check the [Slack documentation](https://api.slack.com/apps?new_app=1) for further details
  111. 2. Install the app on your workspace
  112. 3. Configure Webhook URLs for your workspace
  113. - On your app go to **Incoming Webhooks** and click on **activate incoming webhooks**
  114. - At the bottom of **Webhook URLs for Your Workspace** section you have **Add New Webhook to Workspace**
  115. - Specify the channel where you want your notifications to be delivered
  116. - Once completed, copy the Webhook URL in order to add it to your integration configuration in the Netdata Cloud UI
  117. For more details please check [Incoming webhooks for Slack](https://slack.com/help/articles/115005265063-Incoming-webhooks-for-Slack).
  118. ### Netdata Configuration
  119. 1. Click on the **Space settings** cog (located above your profile icon)
  120. 2. Click on the **Alerts & Notifications** tab
  121. 3. Click on the **+ Add configuration** button
  122. 4. Add the Slack Integration
  123. 5. A modal will be presented to you to enter the required details to enable the integration:
  124. - **Notification settings**
  125. - Configuration name (optional): A name for your configuration in order to easily refer to it
  126. - Rooms: A list of Rooms for which you want to be notified
  127. - Notifications: The notifications which you want to be notified
  128. - **Integration configuration**
  129. - Webhook URL: URL provided on Slack for the channel you want to receive your notifications
  130. - id: "notify-cloud-opsgenie"
  131. meta:
  132. name: "Opsgenie"
  133. link: "https://www.atlassian.com/software/opsgenie"
  134. categories:
  135. - notify.cloud
  136. icon_filename: "opsgenie.png"
  137. keywords:
  138. - opsgenie
  139. - atlassian
  140. setup:
  141. description: |
  142. ### Prerequisites
  143. - A Netdata Cloud account
  144. - Access to the Space as an **Admin**
  145. - The Space needs to be on a paid plan
  146. - You need to have permissions on Opsgenie to add new integrations.
  147. ### Opsgenie Server Configuration
  148. 1. Go to the integrations tab of your team, click **Add integration**
  149. 2. Pick **API** from the available integrations and copy the API Key in order to add it to your integration configuration in the Netdata Cloud UI
  150. ### Netdata Configuration
  151. 1. Click on the **Space settings** cog (located above your profile icon)
  152. 2. Click on the **Alerts & Notifications** tab
  153. 3. Click on the **+ Add configuration** button
  154. 4. Add the Opsgenie Integration
  155. 5. A modal will be presented to you to enter the required details to enable the integration:
  156. - **Notification settings**
  157. - Configuration name (optional): A name for your configuration in order to easily refer to it
  158. - Rooms: A list of Rooms for which you want to be notified
  159. - Notifications: The notifications which you want to be notified
  160. - **Integration configuration**
  161. - API Key: The key provided on Opsgenie for the channel you want to receive your notifications
  162. - id: "notify-cloud-mattermost"
  163. meta:
  164. name: "Mattermost"
  165. link: "https://mattermost.com/"
  166. categories:
  167. - notify.cloud
  168. icon_filename: "mattermost.png"
  169. keywords:
  170. - mattermost
  171. setup:
  172. description: |
  173. ### Prerequisites
  174. - A Netdata Cloud account
  175. - Access to the Space as an **Admin**
  176. - The Space needs to be on a paid plan
  177. - You need to have permissions on Mattermost to add new integrations.
  178. ### Mattermost Server Configuration
  179. 1. In Mattermost, go to Product menu > Integrations > Incoming Webhook
  180. - If you don't have the Integrations option, incoming webhooks may not be enabled on your Mattermost server or may be disabled for non-admins. They can be enabled by a System Admin from System Console > Integrations > Integration Management. Once incoming webhooks are enabled, continue with the steps below.
  181. 2. Select Add Incoming Webhook and add a name and description for the webhook.
  182. 3. Select the channel to receive webhook payloads, then select Add to create the webhook
  183. 4. You will end up with a webhook URL that looks like `https://your-mattermost-server.com/hooks/xxx-generatedkey-xxx`, copy it in order to add it to your integration configuration in the Netdata Cloud UI
  184. For more details please check [Incoming webhooks for Mattermost](https://developers.mattermost.com/integrate/webhooks/incoming/).
  185. ### Netdata Configuration
  186. 1. Click on the **Space settings** cog (located above your profile icon)
  187. 2. Click on the **Alerts & Notifications** tab
  188. 3. Click on the **+ Add configuration** button
  189. 4. Add the Mattermost Integration
  190. 5. A modal will be presented to you to enter the required details to enable the integration:
  191. - **Notification settings**
  192. - Configuration name (optional): A name for your configuration in order to easily refer to it
  193. - Rooms: A list of Rooms for which you want to be notified
  194. - Notifications: The notifications which you want to be notified
  195. - **Integration configuration**
  196. - Webhook URL: URL provided on Mattermost for the channel you want to receive your notifications
  197. - id: "notify-cloud-rocketchat"
  198. meta:
  199. name: "RocketChat"
  200. link: "https://www.rocket.chat/"
  201. categories:
  202. - notify.cloud
  203. icon_filename: "rocketchat.png"
  204. keywords:
  205. - rocketchat
  206. setup:
  207. description: |
  208. ### Prerequisites
  209. - A Netdata Cloud account
  210. - Access to the Space as an **Admin**
  211. - The Space needs to be on a paid plan
  212. - You need to have permissions on RocketChat to add new integrations.
  213. ### RocketChat Server Configuration
  214. Steps to configure your RocketChat server to receive notifications from Netdata Cloud:
  215. 1. In RocketChat, Navigate to Administration > Workspace > Integrations
  216. 2. Click **+New** at the top right corner
  217. 3. For more details about each parameter, check [Create a new incoming webhook](https://docs.rocket.chat/use-rocket.chat/workspace-administration/integrations#create-a-new-incoming-webhook)
  218. 4. You will end up with a webhook endpoint that looks like `https://your-server.rocket.chat/hooks/YYYYYYYYYYYYYYYYYYYYYYYY/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`, copy it in order to add it to your integration configuration in the Netdata Cloud UI
  219. For more details please check [Incoming webhooks for RocketChat](https://docs.rocket.chat/use-rocket.chat/workspace-administration/integrations/).
  220. ### Netdata Configuration
  221. 1. Click on the **Space settings** cog (located above your profile icon)
  222. 2. Click on the **Alerts & Notifications** tab
  223. 3. Click on the **+ Add configuration** button
  224. 4. Add the PagerDuty Integration
  225. 5. A modal will be presented to you to enter the required details to enable the integration:
  226. - **Notification settings**
  227. - Configuration name (optional): A name for your configuration in order to easily refer to it
  228. - Rooms: A list of Rooms for which you want to be notified
  229. - Notifications: The notifications which you want to be notified
  230. - **Integration configuration**
  231. - Webhook URL: URL provided on RocketChat for the channel you want to receive your notifications
  232. - id: "notify-cloud-awssns"
  233. meta:
  234. name: "Amazon SNS"
  235. link: "https://aws.amazon.com/sns/"
  236. categories:
  237. - notify.cloud
  238. icon_filename: "awssns.png"
  239. keywords:
  240. - awssns
  241. setup:
  242. description: |
  243. ### Prerequisites
  244. - A Netdata Cloud account
  245. - Access to the space as an **Admin**
  246. - The Space needs to be on a paid plan
  247. - An AWS account with AWS SNS access
  248. ### AWS SNS Configuration
  249. 1. [Setting up access for Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-setting-up.html)
  250. 2. Create a topic
  251. - On AWS SNS management console click on **Create topic**
  252. - On the **Details** section, select the standard type and provide the topic name
  253. - On the **Access policy** section, change the **Publishers** option to **Only the specified AWS accounts** and provide the Netdata AWS account **(123269920060)** that will be used to publish notifications to the topic being created
  254. 3. Copy the **Topic ARN** in order to add it to your integration configuration in the Netdata Cloud UI
  255. ### Netdata Configuration
  256. 1. Click on the **Space settings** cog (located above your profile icon)
  257. 2. Click on the **Alerts & Notifications** tab
  258. 3. Click on the **+ Add configuration** button
  259. 4. Add the AWS SNS Integration
  260. 5. A modal will be presented to you to enter the required details to enable the integration:
  261. - **Notification settings**
  262. - Configuration name (optional): A name for your configuration in order to easily refer to it
  263. - Rooms: A list of Rooms for which you want to be notified
  264. - Notifications: The notifications which you want to be notified
  265. - **Integration configuration**
  266. - Topic ARN: The topic provided on AWS SNS (with region) for where to publish your notifications.
  267. - id: "notify-cloud-microsoftteams"
  268. meta:
  269. name: "Microsoft Teams"
  270. link: "https://www.microsoft.com/en-us/microsoft-teams"
  271. categories:
  272. - notify.cloud
  273. icon_filename: "teams.svg"
  274. keywords:
  275. - microsoft
  276. - teams
  277. setup:
  278. description: |
  279. ### Prerequisites
  280. - A Netdata Cloud account
  281. - Access to the Space as an **Admin**
  282. - The Space needs to be on a paid plan
  283. - A [Microsoft Teams Essentials subscription](https://www.microsoft.com/en-sg/microsoft-teams/essentials) or higher. Note that this is a **paid** feature
  284. ### Microsoft Teams Configuration
  285. 1. Navigate to the desired Microsoft Teams channel and hover over the channel name. Click the three dots icon that appears
  286. 2. Select "Workflows" from the options, then choose "Post to a channel when a webhook request is received"
  287. 3. **Configure Workflow Details**
  288. - Give your workflow a name, such as "Netdata Alerts"
  289. - Select the target team and channel where you will receive notifications
  290. - Click "Add workflow"
  291. 4. Once the workflow is created, you will receive a unique Workflow Webhook URL, copy it, in order to add it to your integration configuration in the Netdata Cloud UI
  292. ### Netdata Configuration
  293. 1. Click on the **Space settings** cog (located above your profile icon)
  294. 2. Click on the **Alerts & Notifications** tab
  295. 3. Click on the **+ Add configuration** button
  296. 4. Add the Microsoft Teams Integration
  297. 5. A modal will be presented to you to enter the required details to enable the integration:
  298. - **Notification settings**
  299. - Configuration name (optional): A name for your configuration in order to easily refer to it
  300. - Rooms: A list of Rooms for which you want to be notified
  301. - Notifications: The notifications which you want to be notified
  302. - **Integration configuration**
  303. - Microsoft Teams Incoming Webhook URL: The Incoming Webhook URL that you copied earlier.
  304. - id: "notify-cloud-telegram"
  305. meta:
  306. name: "Telegram"
  307. link: "https://telegram.org/"
  308. categories:
  309. - notify.cloud
  310. icon_filename: "telegram.svg"
  311. keywords:
  312. - Telegram
  313. setup:
  314. description: |
  315. ### Prerequisites
  316. - A Netdata Cloud account
  317. - Access to the Space as an **Admin**
  318. - The Space needs to be on a paid plan
  319. - The Telegram bot token, chat ID and optionally the topic ID
  320. ### Telegram Configuration
  321. - Bot token: To create one bot, contact the [@BotFather](https://t.me/BotFather) bot and send the command `/newbot` and follow the instructions. **Start a conversation with your bot or invite it into the group where you want it to send notifications**.
  322. - To get the chat ID you have two options:
  323. - Contact the [@myidbot](https://t.me/myidbot) bot and send the `/getid` command to get your personal chat ID, or invite it into a group and use the `/getgroupid` command to get the group chat ID.
  324. - Alternatively, you can get the chat ID directly from the bot API. Send your bot a command in the chat you want to use, then check `https://api.telegram.org/bot{YourBotToken}/getUpdates`, eg. `https://api.telegram.org/bot111122223:7OpFlFFRzRBbrUUmIjj5HF9Ox2pYJZy5/getUpdates`
  325. - To get the topic ID, the easiest way is this: Post a message to that topic, then right-click on it and select `Copy Message Link`. Paste it on a scratchpad and notice that it has the following structure `https://t.me/c/XXXXXXXXXX/YY/ZZ`. The topic ID is `YY` (integer).
  326. ### Netdata Configuration
  327. 1. Click on the **Space settings** cog (located above your profile icon)
  328. 2. Click on the **Alerts & Notifications** tab
  329. 3. Click on the **+ Add configuration** button
  330. 4. Add the Telegram Integration
  331. 5. A modal will be presented to you to enter the required details to enable the integration:
  332. - **Notification settings**
  333. - Configuration name (optional): A name for your configuration in order to easily refer to it
  334. - Rooms: A list of Rooms for which you want to be notified
  335. - Notifications: The notifications which you want to be notified
  336. - **Integration configuration**
  337. - Bot Token: The token of your bot
  338. - Chat ID: The chat id where your bot will deliver messages to
  339. - Topic ID: The identifier of the chat topic to which your bot will send messages. If omitted or 0, messages will be sent to the General topic. If topics are not supported, messages will be sent to the chat.
  340. - id: "notify-cloud-splunk"
  341. meta:
  342. name: "Splunk"
  343. link: "https://splunk.com/"
  344. categories:
  345. - notify.cloud
  346. icon_filename: "splunk-black.svg"
  347. keywords:
  348. - Splunk
  349. setup:
  350. description: |
  351. ### Prerequisites
  352. - A Netdata Cloud account
  353. - Access to the Space as an **Admin**
  354. - The Space needs to be on a paid plan
  355. - The URI and token for your Splunk HTTP Event Collector. Refer to the [Splunk documentation](https://docs.splunk.com/Documentation/Splunk/latest/Data/UsetheHTTPEventCollector) for detailed instructions on how to set it up.
  356. ### Netdata Configuration
  357. 1. Click on the **Space settings** cog (located above your profile icon)
  358. 2. Click on the **Alerts & Notifications** tab
  359. 3. Click on the **+ Add configuration** button
  360. 4. Add the Splunk Integration
  361. 5. A modal will be presented to you to enter the required details to enable the integration:
  362. - **Notification settings**
  363. - Configuration name (optional): A name for your configuration in order to easily refer to it
  364. - Rooms: A list of Rooms for which you want to be notified
  365. - Notifications: The notifications which you want to be notified
  366. - **Integration configuration**
  367. - HTTP Event Collector URI: The URI of your HTTP event collector in Splunk
  368. - HTTP Event Collector Token: The token that Splunk provided to you when you created the HTTP Event Collector
  369. - id: "notify-cloud-victorops"
  370. meta:
  371. name: "Splunk VictorOps"
  372. link: "https://www.splunk.com/en_us/about-splunk/acquisitions/splunk-on-call.html"
  373. categories:
  374. - notify.cloud
  375. icon_filename: "victorops.svg"
  376. keywords:
  377. - VictorOps
  378. - Splunk
  379. - On-Call
  380. setup:
  381. description: |
  382. ### Prerequisites
  383. - A Netdata Cloud account
  384. - Access to the Space as an **Admin**
  385. - The Space needs to be on a paid plan
  386. - The Destination URL for your Splunk VictorOps REST Endpoint Integration. Refer to the [VictorOps documentation](https://help.victorops.com/knowledge-base/rest-endpoint-integration-guide) for detailed instructions.
  387. ### Netdata Configuration
  388. 1. Click on the **Space settings** cog (located above your profile icon)
  389. 2. Click on the **Alerts & Notifications** tab
  390. 3. Click on the **+ Add configuration** button
  391. 4. Add the Splunk VictorOps Integration
  392. 5. A modal will be presented to you to enter the required details to enable the integration:
  393. - **Notification settings**
  394. - Configuration name (optional): A name for your configuration in order to easily refer to it
  395. - Rooms: A list of Rooms for which you want to be notified
  396. - Notifications: The notifications which you want to be notified
  397. - **Integration configuration**
  398. - Destination URL - The URL provided by VictorOps of your REST endpoint.
  399. - id: "notify-cloud-webhook"
  400. meta:
  401. name: "Webhook"
  402. link: "https://en.wikipedia.org/wiki/Webhook"
  403. categories:
  404. - notify.cloud
  405. icon_filename: "webhook.svg"
  406. keywords:
  407. - generic webhooks
  408. - webhooks
  409. setup:
  410. description: |
  411. ### Prerequisites
  412. - A Netdata Cloud account
  413. - Access to the Space as an **Admin**
  414. - The Space needs to be on a paid plan
  415. - You need to have an app that allows you to receive webhooks following a predefined schema.
  416. ### Netdata Configuration
  417. 1. Click on the **Space settings** cog (located above your profile icon)
  418. 2. Click on the **Alerts & Notifications** tab
  419. 3. Click on the **+ Add configuration** button
  420. 4. Add the Webhook integration
  421. 5. A modal will be presented to you to enter the required details to enable the configuration:
  422. - **Notification settings**
  423. - Configuration name (optional): A name for your configuration in order to easily refer to it
  424. - Rooms: A list of Rooms for which you want to be notified
  425. - Notifications: The notifications which you want to be notified
  426. - **Integration configuration**
  427. - Webhook URL: The url of the service that Netdata will send notifications to. In order to keep the communication secured, Netdata only accepts HTTPS urls.
  428. - Extra headers: Optional key-value pairs that you can set to be included in the HTTP requests sent to the webhook URL.
  429. - Authentication Mechanism, Netdata webhook integration supports 3 different authentication mechanisms.
  430. - Mutual TLS (recommended): Default authentication mechanism used if no other method is selected
  431. - Basic: The client sends a request with an Authorization header that includes a base64-encoded string in the format **username:password**.
  432. - Bearer: The client sends a request with an Authorization header that includes a **bearer token**.
  433. ### Webhook service
  434. A webhook service allows your application to receive real-time alerts from Netdata by sending HTTP requests to a specified URL.
  435. In this section, we'll go over the steps to set up a generic webhook service, including adding headers, and implementing different types of authorization mechanisms.
  436. #### Netdata webhook integration
  437. Netdata webhook integration service will send alert and reachability notifications to the destination service as soon as they are detected.
  438. For alert notifications, the content sent to the destination service contains a JSON object with the following properties:
  439. | field | type | description |
  440. |:----------------------------------|:--------------------------------|:--------------------------------------------------------------------------|
  441. | message | string | A summary message of the alert. |
  442. | alert | string | The alert the notification is related to. |
  443. | info | string | Additional info related with the alert. |
  444. | chart | string | The chart associated with the alert. |
  445. | context | string | The chart context. |
  446. | space | string | The space where the node that raised the alert is assigned. |
  447. | Rooms | object\[object(string,string)\] | Object with list of Rooms names and urls where the node belongs to. |
  448. | family | string | Context family. |
  449. | class | string | Classification of the alert, e.g. `Error`. |
  450. | severity | string | Alert severity, can be one of `warning`, `critical` or `clear`. |
  451. | date | string | Date of the alert in ISO8601 format. |
  452. | duration | string | Duration the alert has been raised. |
  453. | additional_active_critical_alerts | integer | Number of additional critical alerts currently existing on the same node. |
  454. | additional_active_warning_alerts | integer | Number of additional warning alerts currently existing on the same node. |
  455. | alert_url | string | Netdata Cloud URL for this alert. |
  456. For reachability notifications, the JSON object will contain the following properties:
  457. | field | type | description |
  458. |:-----------------|:--------|:------------------------------------------------------------------------------------------------------------------------------|
  459. | message | string | A summary message of the reachability alert. |
  460. | url | string | Netdata Cloud URL for the host experiencing the reachability alert. |
  461. | host | string | The hostname experiencing the reachability alert. |
  462. | severity | string | Severity for this notification. If host is reachable, severity will be `info`, if host is unreachable, it will be `critical`. |
  463. | status | object | An object with the status information. |
  464. | status.reachable | boolean | `true` if host is reachable, `false` otherwise |
  465. | status.text | string | Can be `reachable` or `unreachable` |
  466. #### Extra headers
  467. When setting up a webhook service, the user can specify a set of headers to be included in the HTTP requests sent to the webhook URL.
  468. By default, the following headers will be sent in the HTTP request
  469. | **Header** | **Value** |
  470. |:------------:|------------------|
  471. | Content-Type | application/json |
  472. #### Authentication mechanisms
  473. Netdata webhook integration supports 3 different authentication mechanisms:
  474. ##### Mutual TLS authentication (recommended)
  475. In mutual Transport Layer Security (mTLS) authentication, the client and the server authenticate each other using X.509 certificates. This ensures that the client is connecting to the intended server, and that the server is only accepting connections from authorized clients.
  476. This is the default authentication mechanism used if no other method is selected.
  477. To take advantage of mutual TLS, you can configure your server to verify Netdata's client certificate. In order to achieve this, the Netdata client sending the notification supports mutual TLS (mTLS) to identify itself with a client certificate that your server can validate.
  478. The steps to perform this validation are as follows:
  479. - Store Netdata CA certificate on a file in your disk. The content of this file should be:
  480. <details>
  481. <summary>Netdata CA certificate</summary>
  482. ```text
  483. -----BEGIN CERTIFICATE-----
  484. MIIF0jCCA7qgAwIBAgIUDV0rS5jXsyNX33evHEQOwn9fPo0wDQYJKoZIhvcNAQEN
  485. BQAwgYAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
  486. Ew1TYW4gRnJhbmNpc2NvMRYwFAYDVQQKEw1OZXRkYXRhLCBJbmMuMRIwEAYDVQQL
  487. EwlDbG91ZCBTUkUxGDAWBgNVBAMTD05ldGRhdGEgUm9vdCBDQTAeFw0yMzAyMjIx
  488. MjQzMDBaFw0zMzAyMTkxMjQzMDBaMIGAMQswCQYDVQQGEwJVUzETMBEGA1UECBMK
  489. Q2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEWMBQGA1UEChMNTmV0
  490. ZGF0YSwgSW5jLjESMBAGA1UECxMJQ2xvdWQgU1JFMRgwFgYDVQQDEw9OZXRkYXRh
  491. IFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwIg7z3R++
  492. ppQYYVVoMIDlhWO3qVTMsAQoJYEvVa6fqaImUBLW/k19LUaXgUJPohB7gBp1pkjs
  493. QfY5dBo8iFr7MDHtyiAFjcQV181sITTMBEJwp77R4slOXCvrreizhTt1gvf4S1zL
  494. qeHBYWEgH0RLrOAqD0jkOHwewVouO0k3Wf2lEbCq3qRk2HeDvkv0LR7sFC+dDms8
  495. fDHqb/htqhk+FAJELGRqLeaFq1Z5Eq1/9dk4SIeHgK5pdYqsjpBzOTmocgriw6he
  496. s7F3dOec1ZZdcBEAxOjbYt4e58JwuR81cWAVMmyot5JNCzYVL9e5Vc5n22qt2dmc
  497. Tzw2rLOPt9pT5bzbmyhcDuNg2Qj/5DySAQ+VQysx91BJRXyUimqE7DwQyLhpQU72
  498. jw29lf2RHdCPNmk8J1TNropmpz/aI7rkperPugdOmxzP55i48ECbvDF4Wtazi+l+
  499. 4kx7ieeLfEQgixy4lRUUkrgJlIDOGbw+d2Ag6LtOgwBiBYnDgYpvLucnx5cFupPY
  500. Cy3VlJ4EKUeQQSsz5kVmvotk9MED4sLx1As8V4e5ViwI5dCsRfKny7BeJ6XNPLnw
  501. PtMh1hbiqCcDmB1urCqXcMle4sRhKccReYOwkLjLLZ80A+MuJuIEAUUuEPCwywzU
  502. R7pagYsmvNgmwIIuJtB6mIJBShC7TpJG+wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC
  503. AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU9IbvOsPSUrpr8H2zSafYVQ9e
  504. Ft8wDQYJKoZIhvcNAQENBQADggIBABQ08aI31VKZs8jzg+y/QM5cvzXlVhcpkZsY
  505. 1VVBr0roSBw9Pld9SERrEHto8PVXbadRxeEs4sKivJBKubWAooQ6NTvEB9MHuGnZ
  506. VCU+N035Gq/mhBZgtIs/Zz33jTB2ju3G4Gm9VTZbVqd0OUxFs41Iqvi0HStC3/Io
  507. rKi7crubmp5f2cNW1HrS++ScbTM+VaKVgQ2Tg5jOjou8wtA+204iYXlFpw9Q0qnP
  508. qq6ix7TfLLeRVp6mauwPsAJUgHZluz7yuv3r7TBdukU4ZKUmfAGIPSebtB3EzXfH
  509. 7Y326xzv0hEpjvDHLy6+yFfTdBSrKPsMHgc9bsf88dnypNYL8TUiEHlcTgCGU8ts
  510. ud8sWN2M5FEWbHPNYRVfH3xgY2iOYZzn0i+PVyGryOPuzkRHTxDLPIGEWE5susM4
  511. X4bnNJyKH1AMkBCErR34CLXtAe2ngJlV/V3D4I8CQFJdQkn9tuznohUU/j80xvPH
  512. FOcDGQYmh4m2aIJtlNVP6+/92Siugb5y7HfslyRK94+bZBg2D86TcCJWaaZOFUrR
  513. Y3WniYXsqM5/JI4OOzu7dpjtkJUYvwtg7Qb5jmm8Ilf5rQZJhuvsygzX6+WM079y
  514. nsjoQAm6OwpTN5362vE9SYu1twz7KdzBlUkDhePEOgQkWfLHBJWwB+PvB1j/cUA3
  515. 5zrbwvQf
  516. -----END CERTIFICATE-----
  517. ```
  518. </details>
  519. - Enable client certificate validation on the web server that is doing the TLS termination. Below there are examples on how to perform this configuration in `NGINX` and `Apache`.
  520. **NGINX**
  521. ```bash
  522. server {
  523. listen 443 ssl default_server;
  524. # ... existing SSL configuration for server authentication ...
  525. ssl_verify_client on;
  526. ssl_client_certificate /path/to/Netdata_CA.pem;
  527. location / {
  528. if ($ssl_client_s_dn !~ "CN=app.netdata.cloud") {
  529. return 403;
  530. }
  531. # ... existing location configuration ...
  532. }
  533. }
  534. ```
  535. **Apache**
  536. ```bash
  537. Listen 443
  538. <VirtualHost *:443>
  539. # ... existing SSL configuration for server authentication ...
  540. SSLVerifyClient require
  541. SSLCACertificateFile "/path/to/Netdata_CA.pem"
  542. </VirtualHost>
  543. <Directory /var/www/>
  544. Require expr "%{SSL_CLIENT_S_DN_CN} == 'app.netdata.cloud'"
  545. # ... existing directory configuration ...
  546. </Directory>
  547. ```
  548. ##### Basic authentication
  549. In basic authorization, the client sends a request with an Authorization header that includes a base64-encoded string in the format username:password. The server then uses this information to authenticate the client. If this authentication method is selected, the user can set the user and password that will be used when connecting to the destination service.
  550. ##### Bearer token authentication
  551. In bearer token authentication, the client sends a request with an Authorization header that includes a bearer token. The server then uses this token to authenticate the client. Bearer tokens are typically generated by an authentication service, and are passed to the client after a successful authentication. If this method is selected, the user can set the token to be used for connecting to the destination service.
  552. ##### Challenge secret
  553. To validate that you have ownership of the web application that will receive the webhook events, Netdata is using a challenge response check mechanism.
  554. This mechanism works as follows:
  555. - The challenge secret parameter that you provide is a shared secret between only you and Netdata.
  556. - On your request for creating a new Webhook integration, Netdata will make a GET request to the URL of the webhook, adding a query parameter `crc_token`, consisting of a random string.
  557. - You will receive this request on your application and it must construct an encrypted response, consisting of a base64-encoded HMAC SHA-256 hash created from the crc_token and the shared secret. The response will be in the format:
  558. ```json
  559. {
  560. "response_token": "sha256=9GKoHJYmcHIkhD+C182QWN79YBd+D+Vkj4snmZrfNi4="
  561. }
  562. ```
  563. - Netdata will compare your application's response with the hash that it will generate using the challenge secret, and if they are the same, the integration creation will succeed.
  564. Netdata does this validation every time you update your integration configuration.
  565. - Response requirements:
  566. - A base64 encoded HMAC SHA-256 hash created from the crc_token and the shared secret.
  567. - Valid response_token and JSON format.
  568. - Latency less than 5 seconds.
  569. - 200 HTTP response code.
  570. **Example response token generation in Python:**
  571. Here you can see how to define a handler for a Flask application in python 3:
  572. ```python
  573. import base64
  574. import hashlib
  575. import hmac
  576. import json
  577. key ='YOUR_CHALLENGE_SECRET'
  578. @app.route('/webhooks/netdata')
  579. def webhook_challenge():
  580. token = request.args.get('crc_token').encode('ascii')
  581. # creates HMAC SHA-256 hash from incomming token and your consumer secret
  582. sha256_hash_digest = hmac.new(key.encode(),
  583. msg=token,
  584. digestmod=hashlib.sha256).digest()
  585. # construct response data with base64 encoded hash
  586. response = {
  587. 'response_token': 'sha256=' + base64.b64encode(sha256_hash_digest).decode('ascii')
  588. }
  589. # returns properly formatted json response
  590. return json.dumps(response)
  591. ```
  592. - id: "notify-cloud-ilert"
  593. meta:
  594. name: "ilert"
  595. link: "https://www.ilert.com/"
  596. categories:
  597. - notify.cloud
  598. icon_filename: "ilert.svg"
  599. keywords:
  600. - ilert
  601. setup:
  602. description: |
  603. ### Prerequisites
  604. - A Netdata Cloud account
  605. - Access to the Space as an **Admin**
  606. - The Space needs to be on a paid plan
  607. - You need to have permissions on ilert to add new Alert sources.
  608. ### ilert Configuration
  609. 1. From the navigation bar, open the Alert sources drop down and click "Alert sources"
  610. 2. Click on the "+ Create a new alert source" button
  611. 3. Configure an Alert source:
  612. - Select "API integration" and click Next
  613. - Provide a name that suits the source's purpose, for example "Netdata"
  614. - Select Escalation policy
  615. - Select Alert grouping (optional)
  616. 4. Obtain the API Key:
  617. - Once the Alert source is created, you will be provided with an API key. Copy it in order to add it to your integration configuration in the Netdata Cloud UI
  618. ### Netdata Configuration
  619. 1. Click on the **Space settings** cog (located above your profile icon)
  620. 2. Click on the **Alerts & Notifications** tab
  621. 3. Click on the **+ Add configuration** button
  622. 4. Add the ilert Integration
  623. 5. A modal will be presented to you to enter the required details to enable the integration:
  624. - **Notification settings**
  625. - Configuration name (optional): A name for your configuration in order to easily refer to it
  626. - Rooms: A list of Rooms for which you want to be notified
  627. - Notifications: The notifications which you want to be notified
  628. - **Integration configuration**
  629. - Alert Source API key: The key you copied in the ilert configuration step.