@cryptotaxi247 / netdata-1 / commits / 1659b3195

Fix Mermaid diagrams across multiple files (#21011)

Kanela committed Sep 20, 2025 at 11:13 UTC 1659b31958b7e642b06135a4aadabba8d8a77412
22 files changed +580 -762
docs/alerts-and-notifications/creating-alerts-with-netdata-alerts-configuration-manager.md
+14 -17
@@ -11,25 +11,22 @@ To use this feature, you'll need an active Netdata subscription. [View subscript
11 ## Creating Alerts: Quick Guide
12
13 ```mermaid
14 -%%{init: {'theme': 'default', 'themeVariables': {
15 - 'primaryColor': '#2b2b2b',
16 - 'primaryTextColor': '#fff',
17 - 'primaryBorderColor': '#7C0000',
18 - 'lineColor': '#F8B229',
19 - 'secondaryColor': '#006100',
20 - 'tertiaryColor': '#333',
21 - 'fontFamily': 'arial',
22 - 'fontSize': '16px'
23 -}}}%%
14 flowchart LR
25 - A[Navigate to Metrics] -->|Find Chart| B[Click Alert Icon]
26 - B -->|Select Add Alert| C[Set Thresholds]
27 - C -->|Configure Options| D[Submit to Nodes]
15 + A("Navigate to Metrics") -->|"Find Chart"| B("Click Alert Icon")
16 + B -->|"Select Add Alert"| C("Set Thresholds")
17 + C -->|"Configure Options"| D("Submit to Nodes")
18
29 - style A fill:#f9f9f9,stroke:#444,color:#000,stroke-width:1px,rx:10,ry:10
30 - style B fill:#ffeb3b,stroke:#555,color:#000,stroke-width:1px,rx:10,ry:10
31 - style C fill:#f44336,stroke:#333,color:#000,stroke-width:1px,rx:10,ry:10
32 - style D fill:#4caf50,stroke:#333,color:#000,stroke-width:1px,rx:10,ry:10
19 + %% Style definitions
20 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
21 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
22 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
23 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
24 +
25 + %% Apply styles
26 + class A neutral
27 + class B alert
28 + class C database
29 + class D complete
30 ```
31
32 ## Alert Detection Types
docs/alerts-and-notifications/notifications/centralized-cloud-notifications/centralized-cloud-notifications-reference.md
+49 -62
@@ -33,47 +33,53 @@ You can send notifications via email or through third-party services like PagerD
33 ### Service Level
34
35 ```mermaid
36 -%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#2b2b2b', 'primaryTextColor': '#fff', 'primaryBorderColor': '#7C0000', 'lineColor': '#F8B229', 'secondaryColor': '#006100', 'tertiaryColor': '#333'}}}%%
36 flowchart LR
38 - ServiceLevel[Service Level] --> Personal[Personal]
39 - ServiceLevel --> System[System]
37 + ServiceLevel("Service Level") --> Personal("Personal")
38 + ServiceLevel --> System("System")
39
41 - Personal --> PersonalManaged[Managed By Users]
42 - System --> SystemManaged[Managed By Admins]
40 + Personal --> PersonalManaged("Managed By Users")
41 + System --> SystemManaged("Managed By Admins")
42
44 - PersonalManaged --> PersonalDest[User Specific destinations<br/>such as Email]
45 - SystemManaged --> SystemDest[General Targets<br/>like Slack Channels]
43 + PersonalManaged --> PersonalDest("User Specific destinations<br/>such as Email")
44 + SystemManaged --> SystemDest("General Targets<br/>like Slack Channels")
45
47 - style ServiceLevel fill:#ffeb3b,stroke:#555,color:#333,stroke-width:2px,rx:10,ry:10
48 - style Personal fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
49 - style System fill:#2196F3,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
50 - style PersonalManaged fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
51 - style SystemManaged fill:#2196F3,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
52 - style PersonalDest fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
53 - style SystemDest fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
46 + %% Style definitions
47 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
48 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
49 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
50 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
51 +
52 + %% Apply styles
53 + class ServiceLevel alert
54 + class Personal,PersonalManaged complete
55 + class System,SystemManaged database
56 + class PersonalDest,SystemDest neutral
57 ```
58
59 ### Service Classification
60
61 ```mermaid
59 -%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#2b2b2b', 'primaryTextColor': '#fff', 'primaryBorderColor': '#7C0000', 'lineColor': '#F8B229', 'secondaryColor': '#006100', 'tertiaryColor': '#333'}}}%%
62 flowchart LR
61 - Classification[Service Classification] --> Community[Community]
62 - Classification --> Business[Business]
63 + Classification("Service Classification") --> Community("Community")
64 + Classification --> Business("Business")
65
64 - Community --> CommunityType[Basic Methods]
65 - Business --> BusinessType[Advanced Methods]
66 + Community --> CommunityType("Basic Methods")
67 + Business --> BusinessType("Advanced Methods")
68
67 - CommunityType --> CommunityMethods[e.g. Email & Discord]
68 - BusinessType --> BusinessMethods[e.g. PagerDuty & Slack]
69 + CommunityType --> CommunityMethods("e.g. Email & Discord")
70 + BusinessType --> BusinessMethods("e.g. PagerDuty & Slack")
71
70 - style Classification fill:#ffeb3b,stroke:#555,color:#333,stroke-width:2px,rx:10,ry:10
71 - style Community fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
72 - style Business fill:#2196F3,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
73 - style CommunityType fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
74 - style BusinessType fill:#2196F3,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
75 - style CommunityMethods fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
76 - style BusinessMethods fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
72 + %% Style definitions
73 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
74 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
75 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
76 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
77 +
78 + %% Apply styles
79 + class Classification alert
80 + class Community,CommunityType complete
81 + class Business,BusinessType database
82 + class CommunityMethods,BusinessMethods neutral
83 ```
84
85 ## Alert Notification Silencing Rules
@@ -95,43 +101,24 @@ You can turn off all notifications for a user at the space or war room level at
101 ## Anatomy of an Email Alert Notification
102
103 ```mermaid
98 -%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#2b2b2b', 'primaryTextColor': '#fff', 'primaryBorderColor': '#7C0000', 'lineColor': '#F8B229', 'secondaryColor': '#006100', 'tertiaryColor': '#333'}}}%%
104 flowchart TD
100 - Alert[Alert Triggered] --> Email{Generate Email}
101 - style Alert fill:#f44336,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
102 - style Email fill:#2196F3,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
105 + Alert("Alert Triggered") --> Email("Generate Email")
106
104 - Email --> Space[Space Name]
105 - Email --> Node[Node Name]
106 - Email --> Status[Alert Status]
107 - Email --> Previous[Previous Status]
107 + Email --> BasicInfo("Basic Info<br/>Space, Node, Status")
108 + Email --> AlertDetails("Alert Details<br/>Name, Value, Threshold")
109 + Email --> Technical("Technical Info<br/>Context, Calculation, Source")
110 + Email --> Action("Action Link<br/>Dashboard Access")
111
109 - Email --> Time[Trigger Time]
110 - Email --> Context[Chart Context]
111 - Email --> AlertInfo[Alert Name & Info]
112 - Email --> Value[Alert Value]
113 -
114 - Email --> Count[Total Alerts Count]
115 - Email --> Threshold[Trigger Threshold]
116 - Email --> Calculation[Calculation Method]
117 - Email --> Source[Alert Source File]
118 - Email --> Link[Dashboard Link]
119 -
120 - style Space fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
121 - style Node fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
122 - style Status fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
123 - style Previous fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
124 -
125 - style Time fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
126 - style Context fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
127 - style AlertInfo fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
128 - style Value fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
129 -
130 - style Count fill:#ffeb3b,stroke:#555,color:#333,stroke-width:1px,rx:10,ry:10
131 - style Threshold fill:#ffeb3b,stroke:#555,color:#333,stroke-width:1px,rx:10,ry:10
132 - style Calculation fill:#ffeb3b,stroke:#555,color:#333,stroke-width:1px,rx:10,ry:10
133 - style Source fill:#ffeb3b,stroke:#555,color:#333,stroke-width:1px,rx:10,ry:10
134 - style Link fill:#ffeb3b,stroke:#555,color:#333,stroke-width:1px,rx:10,ry:10
112 + %% Style definitions
113 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
114 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
115 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
116 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
117 +
118 + %% Apply styles
119 + class Alert alert
120 + class Email database
121 + class BasicInfo,AlertDetails,Technical,Action complete
122 ```
123
124 Email notifications provide comprehensive details to help you understand and respond to alerts effectively.
docs/alerts-and-notifications/notifications/centralized-cloud-notifications/manage-alert-notification-silencing-rules.md
+38 -37
@@ -5,57 +5,58 @@ From the Cloud interface, you can manage your space's Alert notification silenci
5 ## Rule Hierarchy
6
7 ```mermaid
8 -%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#2b2b2b', 'primaryTextColor': '#fff', 'primaryBorderColor': '#7C0000', 'lineColor': '#F8B229', 'secondaryColor': '#006100', 'tertiaryColor': '#333'}}}%%
8 flowchart TD
10 - Space[Space Level] --> Room[Room Level]
11 - Room --> Node[Node Level]
12 - Node --> Alert[Alert Level]
9 + Space("Space Level") --> Room("Room Level")
10 + Room --> Node("Node Level")
11 + Node --> Alert("Alert Level")
12
14 - Space --> SpaceRules[Space Silencing Rules<br/>Affects All Users]
15 - Room --> RoomRules[Room-Specific Rules<br/>Target Specific Teams]
16 - Node --> NodeRules[Node-Specific Rules<br/>Individual Servers]
17 - Alert --> AlertRules[Alert-Specific Rules<br/>Granular Control]
13 + Space --> SpaceRules("Space Silencing Rules<br/>Affects All Users")
14 + Room --> RoomRules("Room-Specific Rules<br/>Target Specific Teams")
15 + Node --> NodeRules("Node-Specific Rules<br/>Individual Servers")
16 + Alert --> AlertRules("Alert-Specific Rules<br/>Granular Control")
17
19 - style Space fill:#f44336,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
20 - style Room fill:#ffeb3b,stroke:#555,color:#333,stroke-width:1px,rx:10,ry:10
21 - style Node fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
22 - style Alert fill:#2196F3,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
23 -
24 - style SpaceRules fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
25 - style RoomRules fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
26 - style NodeRules fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
27 - style AlertRules fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
18 + %% Style definitions
19 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
20 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
21 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
22 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
23 +
24 + %% Apply styles
25 + class Space alert
26 + class Room,Node complete
27 + class Alert database
28 + class SpaceRules,RoomRules,NodeRules,AlertRules neutral
29 ```
30
31 ## Decision Flowchart
32
33 ```mermaid
33 -%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#2b2b2b', 'primaryTextColor': '#fff', 'primaryBorderColor': '#7C0000', 'lineColor': '#F8B229', 'secondaryColor': '#006100', 'tertiaryColor': '#333'}}}%%
34 flowchart TD
35 - Start[Need to Silence Alerts?] --> Scope{Who Should Be Affected?}
36 - style Start fill:#f44336,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
37 - style Scope fill:#2196F3,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
38 -
39 - Scope -->|All Users| SpaceRule[Create Space Rule<br/>Admin/Manager Required]
40 - Scope -->|Just Me| PersonalRule[Create Personal Rule<br/>Any Role Except Billing]
35 + Start("Need to Silence Alerts?") --> Scope("Who Should Be Affected?")
36
42 - style SpaceRule fill:#f44336,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
43 - style PersonalRule fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
37 + Scope -->|"All Users"| SpaceRule("Create Space Rule<br/>Admin/Manager Required")
38 + Scope -->|"Just Me"| PersonalRule("Create Personal Rule<br/>Any Role Except Billing")
39
45 - SpaceRule --> Target{What to Target?}
40 + SpaceRule --> Target("What to Target?")
41 PersonalRule --> Target
42
48 - style Target fill:#ffeb3b,stroke:#555,color:#333,stroke-width:1px,rx:10,ry:10
49 -
50 - Target -->|All Infrastructure| AllNodes[All Rooms + All Nodes]
51 - Target -->|Specific Team| SpecificRoom[Target Specific Room]
52 - Target -->|Individual Server| SpecificNode[Target Specific Node]
53 - Target -->|Alert Type| SpecificAlert[Target Alert Context/Name]
43 + Target -->|"All Infrastructure"| AllNodes("All Rooms + All Nodes")
44 + Target -->|"Specific Team"| SpecificRoom("Target Specific Room")
45 + Target -->|"Individual Server"| SpecificNode("Target Specific Node")
46 + Target -->|"Alert Type"| SpecificAlert("Target Alert Context/Name")
47
55 - style AllNodes fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
56 - style SpecificRoom fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
57 - style SpecificNode fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
58 - style SpecificAlert fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
48 + %% Style definitions
49 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
50 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
51 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
52 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
53 +
54 + %% Apply styles
55 + class Start alert
56 + class Scope,Target database
57 + class SpaceRule complete
58 + class PersonalRule complete
59 + class AllNodes,SpecificRoom,SpecificNode,SpecificAlert neutral
60 ```
61
62 ## Prerequisites
docs/dashboards-and-charts/alerts-tab.md
+22 -23
@@ -2,8 +2,6 @@
2
3 Netdata provides hundreds of pre-configured health alerts to notify you when an anomaly or performance issue affects your node or its applications.
4
5 ----
6 -
5 ## Raised Alerts Tab
6
7 The **Raised Alerts** tab shows all current alerts in your Room that are in a **warning** or **critical** state.
@@ -25,8 +23,6 @@ The table provides key details about each active alert:
23
24 Use the **gear icon** (top right) to control which columns are visible. Sort alerts by clicking on column headers.
25
28 ----
29 -
26 ## Filtering Alerts
27
28 Filter the alert list using the right-hand bar:
@@ -42,7 +38,6 @@ Filter the alert list using the right-hand bar:
38 | **Netdata Version** | Filter by the Netdata version. |
39 | **Nodes** | Filter by specific nodes. |
40
45 ----
41
42 ## Viewing Alert Details
43
@@ -63,8 +58,6 @@ At the bottom of this page, click **View alert page** to open a dynamic view whe
58 - Run metric correlations.
59 - Navigate to the specific node’s chart that triggered the alert.
60
66 ----
67 -
61 ## Silencing Alerts
62
63 In the **Raised Alerts** tab:
@@ -74,8 +67,6 @@ In the **Raised Alerts** tab:
67 - Create a new [silencing rule](/docs/alerts-and-notifications/notifications/centralized-cloud-notifications/centralized-cloud-notifications-reference.md#alert-notification-silencing-rules).
68 - Ask for help from the [Netdata Assistant](/docs/netdata-assistant.md).
69
77 ----
78 -
70 ## Alert Configurations Tab
71
72 The **Alert Configurations** tab shows the configuration of all running alerts in your Room.
@@ -98,8 +89,6 @@ The **Alert Configurations** tab shows the configuration of all running alerts i
89
90 Use the **gear icon** to adjust which columns are displayed.
91
101 ----
102 -
92 ## Viewing Alert Configuration
93
94 From the **Actions column**, click **Show Configuration** to:
@@ -114,21 +103,31 @@ This allows you to investigate:
103 - When the alert last triggered.
104 - All configuration parameters per node.
105
117 ----
118 -
106 ## Alert Lifecycle Diagram
107
108 ```mermaid
122 -graph TD
123 - A[Metric Collection] --> B[Alert Evaluation]
124 - B --> C{Condition Met}
125 - C -- Yes --> D[Trigger Alert]
126 - D --> E[Alert in Raised Alerts Tab]
127 - E --> F[Details and Chart Snapshot]
128 - E --> G[Apply Silencing Rule]
129 - F --> H[Explore Metrics<br/>Run Correlations]
130 - G --> I[No Notification Sent]
131 - C -- No --> J[No Alert Triggered]
109 +flowchart TD
110 + A("Metric Collection") --> B("Alert Evaluation")
111 + B --> C("Condition Met?")
112 + C -->|"Yes"| D("Trigger Alert")
113 + C -->|"No"| J("No Alert Triggered")
114 + D --> E("Alert in Raised Alerts Tab")
115 + E --> F("Details and Chart Snapshot")
116 + E --> G("Apply Silencing Rule")
117 + F --> H("Explore Metrics<br/>Run Correlations")
118 + G --> I("No Notification Sent")
119 +
120 + %% Style definitions
121 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
122 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
123 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
124 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
125 +
126 + %% Apply styles
127 + class A,D alert
128 + class B,C,E neutral
129 + class F,H,J complete
130 + class G,I database
131 ```
132
133 :::tip
docs/dashboards-and-charts/anomaly-advisor-tab.md
+16 -13
@@ -6,8 +6,6 @@ Each chart in the [Metrics tab](/docs/dashboards-and-charts/metrics-tab-and-sing
6
7 For configuration details, see the [ML documentation](/src/ml/README.md).
8
9 ----
10 -
9 ## How Anomaly Advisor Works
10
11 The Anomaly Advisor leverages Netdata’s machine learning to evaluate anomaly rates across your nodes. It provides three key visualizations:
@@ -24,8 +22,6 @@ The Anomaly Advisor leverages Netdata’s machine learning to evaluate anomaly r
22
23 :::
24
27 ----
28 -
25 ## Workflow Overview
26
27 1. **Highlight a timeframe of interest** on the anomaly charts.
@@ -40,8 +36,6 @@ Use the [node filter](/docs/dashboards-and-charts/node-filter.md) to focus on sp
36
37 :::
38
43 ----
44 -
39 ## Usage Tips
40
41 | Tip | Why It Matters |
@@ -49,16 +43,25 @@ Use the [node filter](/docs/dashboards-and-charts/node-filter.md) to focus on sp
43 | Filter to specific nodes before highlighting. | Reduces noise by limiting averaging across unrelated nodes. |
44 | Highlight close to the anomaly spike. | Improves ranking accuracy by focusing on the relevant timeframe. |
45
52 ----
53 -
46 ## Anomaly Advisor Diagram
47
48 ```mermaid
57 -graph TD
58 - A[Highlight **Timeframe**] --> B[**Rank** Metrics by Score]
59 - B --> C[Show Ordered Charts]
60 - C --> D[**Pick** from Anomaly Index]
61 - D --> E[**Investigate** Metrics]
49 +flowchart TD
50 + A("Highlight Timeframe") --> B("Rank Metrics by Score")
51 + B --> C("Show Ordered Charts")
52 + C --> D("Pick from Anomaly Index")
53 + D --> E("Investigate Metrics")
54 +
55 + %% Style definitions
56 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
57 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
58 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
59 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
60 +
61 + %% Apply styles
62 + class A alert
63 + class B,C neutral
64 + class D,E complete
65 ```
66
67 :::tip
docs/dashboards-and-charts/dashboards-tab.md
+19 -23
@@ -4,8 +4,6 @@ With **Netdata Cloud**, you can build **custom dashboards** that target your inf
4
5 Click the **Dashboards** tab in any Room to get started.
6
7 ----
8 -
7 ## Create Your First Dashboard
8
9 To create a new dashboard:
@@ -48,20 +46,30 @@ Always click the **Save** button after making changes to your dashboard.
46
47 :::
48
51 ----
52 -
49 ## Dashboard Layout Overview
50
51 ```mermaid
56 -graph TD
57 - A[Dashboard Grid]
58 - A --> B[Chart Element]
59 - A --> C[Text Card]
60 - B --> D[Move / Resize]
52 +flowchart TD
53 + A("Dashboard Grid")
54 + A --> B("Chart Element")
55 + A --> C("Text Card")
56 + B --> D("Move / Resize")
57 C --> D
62 - D --> E[Save Changes]
63 - B --> F[Delete Option]
58 + D --> E("Save Changes")
59 + B --> F("Delete Option")
60 C --> F
61 +
62 + %% Style definitions
63 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
64 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
65 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
66 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
67 +
68 + %% Apply styles
69 + class A alert
70 + class B,C neutral
71 + class D,F complete
72 + class E database
73 ```
74
75 :::tip
@@ -76,8 +84,6 @@ Keep related charts close together to improve visual correlation between metrics
84
85 :::
86
79 ----
80 -
87 ## Using Your Dashboard
88
89 Dashboards are interactive and flexible. You can design them to fit your needs using any combination of charts and text cards.
@@ -93,8 +99,6 @@ Charts on custom dashboards are [fully interactive](/docs/dashboards-and-charts/
99
100 Text cards allow you to explain the arrangement or intent behind the dashboard. Share insights with your team directly on the dashboard.
101
96 ----
97 -
102 ## Organizing Dashboard Elements
103
104 ### Move Elements
@@ -110,8 +114,6 @@ Elements automatically align to the grid system after moving or resizing.
114
115 :::
116
113 ----
114 -
117 ## Chart Management Actions
118
119 | Action | How to Perform |
@@ -120,8 +122,6 @@ Elements automatically align to the grid system after moving or resizing.
122 | **Rename a chart** | Use the 3-dot icon on any chart → click **Rename**. |
123 | **Remove a chart or card** | Use the 3-dot icon on the element → click **Remove**. |
124
123 ----
124 -
125 ## Managing Your Dashboard
126
127 | Action | How to Perform |
@@ -136,14 +136,10 @@ If multiple users edit the same dashboard at once, the second user who clicks **
136
137 :::
138
139 ----
140 -
139 ## Minimum Browser Viewport Requirement
140
141 Due to the visual complexity of individual charts, dashboards require a **minimum browser viewport width of 800px**.
142
145 ----
146 -
143 ## Next Steps
144
145 After designing your dashboards, [invite your team](/docs/netdata-cloud/organize-your-infrastructure-invite-your-team.md#team-collaboration) to collaborate. Add new users to the same Room so they can view and interact with your dashboards effortlessly.
\ No newline at end of file
docs/dashboards-and-charts/metrics-tab-and-single-node-tabs.md
+17 -12
@@ -15,17 +15,26 @@ Learn more: [Metric Correlations documentation](/docs/metric-correlations.md)
15
16 :::
17
18 ----
19 -
18 ## Metrics Tab Structure Overview
19
20 ```mermaid
23 -graph TD
24 - A[Metrics Tab - Multi-node]
25 - A --> B[Integrations Tab]
26 - A --> C[Metric Correlations]
27 - A --> D[Single Node Tabs]
28 - D --> E[Node-specific charts]
21 +flowchart TD
22 + A("Metrics Tab - Multi-node")
23 + A --> B("Integrations Tab")
24 + A --> C("Metric Correlations")
25 + A --> D("Single Node Tabs")
26 + D --> E("Node-specific charts")
27 +
28 + %% Style definitions
29 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
30 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
31 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
32 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
33 +
34 + %% Apply styles
35 + class A alert
36 + class B,C neutral
37 + class D,E complete
38 ```
39
40 :::tip
@@ -34,8 +43,6 @@ The diagram above shows how the Metrics tab connects to related features and sin
43
44 :::
45
37 ----
38 -
46 ## How the Dashboard is Organized
47
48 The dashboard displays various charts organized by their [context](/docs/dashboards-and-charts/netdata-charts.md#contexts). At the beginning of each section, there is a predefined arrangement of charts that provides an overview for that particular group of metrics.
@@ -48,8 +55,6 @@ Use the chart arrangement at the start of each section to quickly identify patte
55
56 :::
57
51 ----
52 -
58 ## Chart Navigation Menu
59
60 The **Chart Navigation Menu**, located on the right-hand side of the dashboard, helps you navigate through sections, filter charts, and view active alerts.
docs/dashboards-and-charts/top-tab.md
+16 -11
@@ -19,16 +19,25 @@ If you receive an error saying that your node can’t execute Functions, check t
19
20 :::
21
22 ----
23 -
22 ## Top Tab Structure Overview
23
24 ```mermaid
27 -graph TD
28 - A[Functions Bar]
29 - A --> B[Function Execution]
30 - B --> C[Visualization]
31 - C --> D[Results Table]
25 +flowchart TD
26 + A("Functions Bar")
27 + A --> B("Function Execution")
28 + B --> C("Visualization")
29 + C --> D("Results Table")
30 +
31 + %% Style definitions
32 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
33 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
34 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
35 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
36 +
37 + %% Apply styles
38 + class A alert
39 + class B neutral
40 + class C,D complete
41 ```
42
43 :::tip
@@ -37,8 +46,6 @@ The diagram above shows how Function selection and execution work in the Top tab
46
47 :::
48
40 ----
41 -
49 ## Top Tab View
50
51 The main view of the Top tab provides two elements, depending on the selected Function:
@@ -57,8 +64,6 @@ You can control the data refresh and update settings in the top right-hand corne
64 | **Refresh results** | Manually refresh results (works when the dashboard is in `Paused` mode). |
65 | **Set update interval** | Configure how often the results should refresh. |
66
60 ----
61 -
67 ## Functions Bar
68
69 The **Functions bar**, located on the right-hand side of the Top tab, lets you select which Function to run, on which node, and apply filtering where available.
docs/deployment-guides/standalone-deployment.md
+14 -19
@@ -21,10 +21,7 @@ Get the best experience - one dashboard for all your systems, mobile alerts, and
21
22 ```mermaid
23 flowchart TB
24 - NC[NC]
25 - Users[Users]
26 - Notifications[Notifications]
27 - NC("**Netdata Cloud**<br/>• Unified dashboards<br/>• Central notifications<br/>• Access from anywhere")
24 + NC("**Netdata Cloud**<br/>Unified dashboards<br/>Central notifications<br/>Access from anywhere")
25 Users("**One Dashboard**<br/>for all your systems")
26 Notifications("**Alert Notifications**<br/>Email, Slack, Mobile App")
27 Users <--> NC
@@ -32,26 +29,24 @@ flowchart TB
29
30 subgraph infrastructure["Your Infrastructure"]
31 direction TB
35 - Agents[Agents]
36 - Data[Data]
37 - Agents("**Netdata Agents**<br/>Agent 1, Agent 2, Agent 3")
32 + Agents("**Netdata Agents**<br/>Agent 1, Agent 2,<br/>Agent 3")
33 Data("**Your Metrics**<br/>Stay on your servers")
34 Agents <--> Data
35 end
36
37 NC <--> Agents
43 - classDef cloud fill: #e8f4fd, stroke: #4a90e2, stroke-width: 2px, color: #2c3e50, rx: 10, ry: 10
44 - classDef users fill: #fff2e8, stroke: #f39c12, stroke-width: 2px, color: #2c3e50, rx: 10, ry: 10
45 - classDef notifications fill: #ffe8e8, stroke: #e74c3c, stroke-width: 2px, color: #2c3e50, rx: 10, ry: 10
46 - classDef agents fill: #e8f5e8, stroke: #27ae60, stroke-width: 2px, color: #2c3e50, rx: 10, ry: 10
47 - classDef data fill: #f3e8ff, stroke: #9b59b6, stroke-width: 2px, color: #2c3e50, rx: 10, ry: 10
48 - classDef subgraphStyle fill: #f8f9fa, stroke: #6c757d, stroke-width: 2px, color: #2c3e50, rx: 15, ry: 15
49 - class NC cloud
50 - class Users users
51 - class Notifications notifications
52 - class Agents agents
53 - class Data data
54 - class infrastructure subgraphStyle
38 +
39 + %% Style definitions
40 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
41 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
42 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
43 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
44 +
45 + %% Apply styles
46 + class Users,Agents alert
47 + class NC,Notifications neutral
48 + class Data complete
49 + class infrastructure database
50 ```
51
52 </details>
docs/metric-correlations.md
+14 -14
@@ -47,26 +47,26 @@ When you notice an anomaly in your system, use Metric Correlations with the **An
47
48 ```mermaid
49 flowchart LR
50 - A("**STEP 1**<br/><br/>**Detection**<br/><br/>Spot a spike in the<br/>node anomaly <br/>rate chart<br/><br/>")
51 - B("**STEP 2**<br/><br/>**Selection**<br/><br/>Highlight specific<br/>time period<br/><br/><br/>")
52 - C("**STEP 3**<br/><br/>**Configuration**<br/><br/>Select **Anomaly Rate<br/>as data type** and<br/>**Volume as method**<br/><br/>")
53 - D("**STEP 4**<br/><br/>**Execute**<br/><br/>Click on<br/> **Find Correlations**<br/>to start analysis<br/><br/>")
54 - E("**STEP 5**<br/><br/>**Analysis**<br/><br/>Review metrics<br/>with<br/>highest anomaly rates<br/><br/>")
55 - F("**STEP 6**<br/><br/>**Resolution**<br/><br/>Examine metrics<br/> to determine<br/>root cause<br/><br/>")
50 + A("Detection<br/>Spot anomaly spike<br/>in node rate chart")
51 + B("Selection<br/>Highlight specific<br/>time period")
52 + C("Configuration<br/>Select Anomaly Rate<br/>as data type")
53 + D("Execute<br/>Click Find<br/>Correlations")
54 + E("Analysis<br/>Review metrics with<br/>highest anomaly rates")
55 + F("Resolution<br/>Examine metrics to<br/>determine root cause")
56
57 A --> B --> C --> D --> E --> F
58
59 %% Style definitions
60 - classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:4px,color:#000000,font-size:22px
61 - classDef process fill:#ffeb3b,stroke:#000000,stroke-width:4px,color:#000000,font-size:22px
62 - classDef complete fill:#4caf50,stroke:#000000,stroke-width:4px,color:#000000,font-size:22px
63 - classDef anomaly fill:#f44336,stroke:#000000,stroke-width:4px,color:#000000,font-size:22px
64 -
60 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
61 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
62 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
63 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
64 +
65 %% Apply styles
66 - class A,B neutral
67 - class C,D process
66 + class A,B alert
67 + class C,D neutral
68 class E complete
69 - class F anomaly
69 + class F database
70 ```
71
72 :::tip
docs/ml-ai/ai-chat-netdata/ai-chat-netdata.md
+33 -33
@@ -8,20 +8,20 @@ Chat with your infrastructure using natural language through two distinct integr
8
9 ```mermaid
10 flowchart TB
11 - LLM("🤖 LLM Provider<br/>OpenAI, Anthropic, etc.")
11 + LLM("LLM Provider<br/>OpenAI, Anthropic, etc.")
12
13 subgraph infra["Your Infrastructure"]
14 direction TB
15 subgraph userLayer[" "]
16 direction LR
17 - User("👤 User")
18 - Client("💻 AI Client<br/>Claude Desktop, Cursor, etc.")
17 + User("User")
18 + Client("AI Client<br/>Claude Desktop, Cursor, etc.")
19
20 User -->|"(1) Ask question"| Client
21 Client -->|"(8) Display response"| User
22 end
23
24 - Agent("📊 Netdata Agent or Parent<br/>with MCP Server")
24 + Agent("Netdata Agent or Parent<br/>with MCP Server")
25
26 Client -->|"(4) Execute tools"| Agent
27 Agent -->|"(5) Return data"| Client
@@ -32,17 +32,18 @@ flowchart TB
32 Client -->|"(6) Send results"| LLM
33 LLM -->|"(7) Final answer"| Client
34
35 - classDef user fill:#e1f5fe,stroke:#01579b,stroke-width:2px
36 - classDef client fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
37 - classDef llm fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px
38 - classDef agent fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
39 - classDef invisible fill:transparent,stroke:transparent
40 -
41 - class User user
42 - class Client client
43 - class LLM llm
44 - class Agent agent
45 - class userLayer invisible
35 + %% Style definitions
36 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
37 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
38 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
39 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
40 +
41 + %% Apply styles
42 + class User alert
43 + class Client neutral
44 + class LLM complete
45 + class Agent complete
46 + class infra,userLayer database
47 ```
48
49 **How it works:**
@@ -64,21 +65,21 @@ flowchart TB
65
66 ```mermaid
67 flowchart TB
67 - LLM("🤖 LLM Provider<br/>OpenAI, Anthropic, etc.")
68 - CloudMCP("☁️ Netdata Cloud<br/>with MCP Server")
68 + LLM("LLM Provider<br/>OpenAI, Anthropic, etc.")
69 + CloudMCP("Netdata Cloud<br/>with MCP Server")
70
71 subgraph infra["Your Infrastructure"]
72 direction TB
73 subgraph userLayer[" "]
74 direction LR
74 - User("👤 User")
75 - Client("💻 AI Client")
75 + User("User")
76 + Client("AI Client")
77
78 User -->|"(1) Ask question"| Client
79 Client -->|"(6) Display response"| User
80 end
81
81 - Agents("📊 Netdata Agents<br/>and Parents")
82 + Agents("Netdata Agents<br/>and Parents")
83 end
84
85 Client -->|"(2) Send query"| LLM
@@ -88,19 +89,18 @@ flowchart TB
89
90 Agents -.-> CloudMCP
91
91 - classDef user fill:#e1f5fe,stroke:#01579b,stroke-width:2px
92 - classDef client fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
93 - classDef llm fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px
94 - classDef cloud fill:#e3f2fd,stroke:#0d47a1,stroke-width:2px
95 - classDef agent fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
96 - classDef invisible fill:transparent,stroke:transparent
97 -
98 - class User user
99 - class Client client
100 - class LLM llm
101 - class CloudMCP cloud
102 - class Agents agent
103 - class userLayer invisible
92 + %% Style definitions
93 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
94 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
95 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
96 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
97 +
98 + %% Apply styles
99 + class User alert
100 + class Client neutral
101 + class LLM complete
102 + class CloudMCP,Agents complete
103 + class infra,userLayer database
104 ```
105
106 **How it works:**
docs/ml-ai/ml-anomaly-detection/ml-anomaly-detection.md
+31 -31
@@ -43,26 +43,26 @@ Netdata avoids deep learning models to maintain lightweight operation on any Lin
43
44 ```mermaid
45 flowchart TD
46 - Raw("**Raw Metrics**<br/><br/>Last 6 Hours")
47 - Preprocess("**Preprocess**<br/><br/>Feature Vectors")
48 - Train("**Train k-means<br/><br/>k=2**")
49 - Model("**Trained Model**")
46 + Raw("Raw Metrics<br/>Last 6 Hours")
47 + Preprocess("Preprocess<br/>Feature Vectors")
48 + Train("Train k-means<br/>k=2")
49 + Model("Trained Model")
50
51 - M1("Model 1<br/><br/>**Recent Data**")
52 - M2("Model 2<br/><br/>**Older Data**")
53 - M3("Model 3<br/><br/>**Even Older Data**")
54 - MN("Model N<br/><br/>**Up to 54 Hours Old**")
51 + M1("Model 1<br/>Recent Data")
52 + M2("Model 2<br/>Older Data")
53 + M3("Model 3<br/>Even Older Data")
54 + MN("Model N<br/>Up to 54 Hours Old")
55
56 - NewData("**New Metrics**")
57 - DistCalc("**Calculate**<br/><br/>Euclidean Distance<br/>to Cluster Centers")
58 - Threshold("**Distance > 99th**<br/><br/>Percentile?")
59 - FlagA("**Flag as Anomalous**<br/><br/>in This Model")
60 - FlagN("**Flag as Normal**<br/><br/>in This Model")
56 + NewData("New Metrics")
57 + DistCalc("Calculate<br/>Euclidean Distance<br/>to Cluster Centers")
58 + Threshold("Distance > 99th<br/>Percentile?")
59 + FlagA("Flag as Anomalous<br/>in This Model")
60 + FlagN("Flag as Normal<br/>in This Model")
61
62 - AllResults("**Results from All Models**")
63 - AllAgree("**All Models<br/><br/>Agree it's<br/><br/>Anomalous?**")
64 - SetBit("**Set Anomaly Bit = 1**<br/><br/>True")
65 - ClearBit("**Set Anomaly Bit = 0**<br/><br/>False")
62 + AllResults("Results from All Models")
63 + AllAgree("All Models<br/>Agree it's<br/>Anomalous?")
64 + SetBit("Set Anomaly Bit = 1<br/>True")
65 + ClearBit("Set Anomaly Bit = 0<br/>False")
66
67 Raw --> Preprocess
68 Preprocess --> Train
@@ -79,26 +79,26 @@ flowchart TD
79
80 NewData --> DistCalc
81 DistCalc --> Threshold
82 - Threshold -->|Yes| FlagA
83 - Threshold -->|No| FlagN
82 + Threshold -->|"Yes"| FlagA
83 + Threshold -->|"No"| FlagN
84
85 FlagA --> AllResults
86 - FlagN --> ClearBit
86 + FlagN --> AllResults
87 AllResults --> AllAgree
88 - AllAgree -->|Yes| SetBit
89 - AllAgree -->|No| ClearBit
88 + AllAgree -->|"Yes"| SetBit
89 + AllAgree -->|"No"| ClearBit
90
91 %% Style definitions
92 - classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
93 - classDef process fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
94 - classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
95 - classDef anomaly fill:#f44336,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
96 -
92 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
93 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
94 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
95 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
96 +
97 %% Apply styles
98 - class Raw,Preprocess,NewData,AllResults neutral
99 - class Train,Model,M1,M2,M3,MN,DistCalc,Threshold,AllAgree process
100 - class FlagN,ClearBit complete
101 - class FlagA,SetBit anomaly
98 + class Raw,NewData,AllResults alert
99 + class Train,Model,M1,M2,M3,MN,DistCalc,Threshold,AllAgree neutral
100 + class Preprocess,FlagN,ClearBit complete
101 + class FlagA,SetBit database
102 ```
103
104 ### Training & Detection Process
docs/netdata-cloud/README.md
+19 -47
@@ -18,46 +18,22 @@ By serving as a lightweight control plane, Netdata Cloud provides you with:
18
19 ```mermaid
20 flowchart TB
21 - NC[NC]
22 - Users[Users]
23 - Notifications[Notifications]
24 -
25 - NC("**Netdata Cloud**
26 -• Horizontal scalability
27 -• Role based access
28 -• Access from anywhere
29 -• Central dispatch of<br/>Alert notifications
30 -• Custom Dashboards
31 -• Advanced customization")
32 -
33 -Users("**Unified Dashboards**
34 -across the infrastructure,
35 -multi-cloud, hybrid-cloud")
36 -
37 -Notifications("**Alert Notifications**
38 -Slack, e-mail, Mobile App,
39 -PagerDuty, and more")
21 + NC("**Netdata Cloud**<br/>Horizontal scalability<br/>Role based access<br/>Access from anywhere<br/>Central dispatch of<br/>Alert notifications<br/>Custom Dashboards<br/>Advanced customization")
22 +
23 +Users("**Unified Dashboards**<br/>across the infrastructure,<br/>multi-cloud, hybrid-cloud")
24 +
25 +Notifications("**Alert Notifications**<br/>Slack, e-mail,<br/> Mobile App,<br/>PagerDuty, and more")
26
27 Users <--> NC
28 NC --> Notifications
29
30 subgraph infrastructure["On-Prem Infrastructure"]
31 direction TB
46 -Agents[Agents]
47 -TimeSeries[TimeSeries]
48 -PrivateAgents[PrivateAgents]
49 -
50 -Agents("**Netdata Agents**
51 -Standalone,
52 -Children, Parents
53 -(possibly overlapping)")
32 +Agents("**Netdata Agents**<br/>Standalone,<br/>Children, Parents<br/>(possibly overlapping)")
33
55 -TimeSeries("Time-Series
56 -metric samples
57 -database")
34 +TimeSeries("Time-Series<br/>metric samples<br/>database")
35
59 -PrivateAgents("Private
60 -Netdata Agents")
36 +PrivateAgents("Private<br/>Netdata Agents")
37
38 Agents <--> TimeSeries
39 Agents --- PrivateAgents
@@ -65,21 +41,17 @@ end
41
42 NC <--> Agents
43
68 -classDef cloud fill: #e8f4fd, stroke: #4a90e2, stroke-width: 2px, color: #2c3e50, rx: 10, ry: 10
69 -classDef users fill: #fff2e8, stroke: #f39c12, stroke-width: 2px, color: #2c3e50, rx: 10, ry: 10
70 -classDef notifications fill: #ffe8e8, stroke: #e74c3c, stroke-width: 2px, color: #2c3e50, rx: 10, ry: 10
71 -classDef agents fill: #e8f5e8, stroke: #27ae60, stroke-width: 2px, color: #2c3e50, rx: 10, ry: 10
72 -classDef timeseries fill: #f3e8ff, stroke: #9b59b6, stroke-width: 2px, color: #2c3e50, rx: 10, ry: 10
73 -classDef private fill: #f0f8ff, stroke: #87ceeb, stroke-width: 2px, color: #2c3e50, rx: 10, ry: 10
74 -classDef subgraphStyle fill: #f8f9fa, stroke: #6c757d, stroke-width: 2px, color: #2c3e50, rx: 15, ry: 15
75 -
76 -class NC cloud
77 -class Users users
78 -class Notifications notifications
79 -class Agents agents
80 -class TimeSeries timeseries
81 -class PrivateAgents private
82 -class infrastructure subgraphStyle
44 +%% Style definitions
45 +classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
46 +classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
47 +classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
48 +classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
49 +
50 +%% Apply styles
51 +class Users,Agents alert
52 +class NC,Notifications neutral
53 +class TimeSeries,PrivateAgents complete
54 +class infrastructure database
55 ```
56
57 </details><br/>
docs/observability-centralization-points/logs-centralization-points-with-systemd-journald/README.md
+19 -20
@@ -2,29 +2,19 @@
2
3 ```mermaid
4 stateDiagram-v2
5 - classDef userFeature fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:orange
6 - classDef usedByNC fill:#090,color:white,font-weight:bold,stroke-width:2px,stroke:orange
7 - classDef log2journal fill:#040,color:white,font-weight:bold,stroke-width:2px,stroke:orange
8 -
9 - logsQuery:::usedByNC
10 - logsDashboard:::userFeature
11 - journald:::thirdparty
12 - journalRemote:::thirdparty
13 - journalUpload:::thirdparty
14 - journalFiles:::thirdparty
15 - logSources:::thirdparty
16 - textFiles:::thirdparty
17 - log2journal:::log2journal
18 -
5 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000
6 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000
7 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000
8 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000
9 +
10 journalRemote: systemd-journal-remote
11 journalUpload: systemd-journal-upload
21 - journalFiles: Store
12 journalFiles: systemd-journal files
13 journald: systemd-journald
14 logSources: Local Logs Sources
25 - log2journal:log2journal
26 - log2journal:Convert text, json, logfmt files
27 - log2journal:to structured journal entries.
15 + log2journal: log2journal
16 + log2journal: Convert text, json, logfmt files
17 + log2journal: to structured journal entries.
18 logsDashboard: Netdata Dashboards
19 logsQuery: Query Journal Files
20 textFiles: Text Log Files
@@ -38,18 +28,27 @@ stateDiagram-v2
28 journalFiles --> Netdata
29 journalFiles --> journalUpload
30
41 - journalRemote -->journalFiles
31 + journalRemote --> journalFiles
32 journalUpload --> [*]: to a remote journald
33 [*] --> journalRemote: from a remote journald
34
35 state Netdata {
46 - [*]-->logsQuery
36 + [*] --> logsQuery
37 logsQuery --> logsDashboard
38 }
39 +
40 + class logSources,textFiles,logsDashboard alert
41 + class journald,journalRemote,journalUpload neutral
42 + class log2journal,journalFiles,logsQuery complete
43 + class Netdata database
44 ```
45
46 Logs centralization points can be built using the `systemd-journald` methodologies, by configuring `systemd-journal-remote` (on the centralization point) and `systemd-journal-upload` (on the production system).
47
48 +:::note
49 +
50 The logs centralization points and the metrics centralization points do not need to be the same. For clarity and simplicity, however, when not otherwise required for operational or regulatory reasons, we recommend to have unified centralization points for both metrics and logs.
51
52 +:::
53 +
54 A Netdata running at the logs centralization point will automatically detect and present the logs of all servers aggregated to it in a unified way (i.e., logs from all servers multiplexed in the same view). This Netdata may or may not be a Netdata Parent for metrics.
docs/observability-centralization-points/metrics-centralization-points/replication-of-past-samples.md
+18 -35
@@ -21,42 +21,25 @@ This same process works between Parents too. When Parents sync with each other,
21 When multiple Netdata Parents are available, the replication happens in sequence, like in the following diagram:
22
23 ```mermaid
24 -%%{init: {
25 - "theme": "base",
26 - "themeVariables": {
27 - "actorBkg": "#ffeb3b",
28 - "actorBorder": "#000000",
29 - "actorTextColor": "#000000",
30 - "actorLineColor": "#000000",
31 - "signalColor": "#000000",
32 - "signalTextColor": "#000000",
33 - "labelBoxBkgColor": "#f9f9f9",
34 - "labelBoxBorderColor": "#000000",
35 - "labelTextColor": "#000000",
36 - "loopTextColor": "#000000",
37 - "activationBkgColor": "#4caf50",
38 - "activationBorderColor": "#000000",
39 - "fontFamily": "Arial, sans-serif",
40 - "fontSize": "16px"
41 - }
42 -}}%%
43 -sequenceDiagram
44 - participant C as Child
45 - participant P1 as Parent 1
46 - participant P2 as Parent 2
24 +flowchart TD
25 + C("Child")
26 + P1("Parent 1")
27 + P2("Parent 2")
28
48 - C->>P1: Connect
49 - P1->>C: OK
50 - P1->>P2: Connect
51 - P2->>P1: OK
52 - C->>P1: Metric M1 with retention up to Now
53 - P1->>C: M1 stopped at -60sec, replicate up to Now
54 - C->>P1: replicate M1 samples -60sec to Now
55 - C->>P1: streaming M1
56 - P1->>P2: Metric M1 with retention up to Now
57 - P2->>P1: M1 stopped at -63sec, replicate up to Now
58 - P1->>P2: replicate M1 samples -63sec to Now
59 - P1->>P2: streaming M1
29 + C --> P1
30 + P1 --> P2
31 + P1 --> C
32 + P2 --> P1
33 +
34 + %% Style definitions
35 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
36 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
37 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
38 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
39 +
40 + %% Apply styles
41 + class C alert
42 + class P1,P2 complete
43 ```
44
45 ### Replication Process
docs/security-and-privacy-design/README.md
+16 -20
@@ -16,8 +16,6 @@ This page explains how Netdata designs and operates secure, privacy-respecting s
16
17 Netdata builds security into every layer. You retain control over your observability data while benefiting from powerful real-time monitoring and insights.
18
19 ----
20 -
19 ## Netdata's Security Principles
20
21 ### Security by Design
@@ -37,10 +35,22 @@ Here is how your data flows through Netdata:
35
36 ```mermaid
37 flowchart TD
40 - A[Your System] -->|Collect metrics and logs| B(Netdata Agent)
41 - B --> C[Observability Data<br/>Stored locally]
42 - B --> D[Observability Metadata<br/>securely routed to Cloud]
43 - D --> E[Cloud dashboards, routing<br/>& notifications]
38 + A("Your System") -->|"Collect metrics and logs"| B("Netdata Agent")
39 + B --> C("Observability Data<br/>Stored locally")
40 + B --> D("Observability Metadata<br/>securely routed to Cloud")
41 + D --> E("Cloud dashboards, routing<br/>& notifications")
42 +
43 + %% Style definitions
44 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
45 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
46 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
47 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
48 +
49 + %% Apply styles
50 + class A alert
51 + class B neutral
52 + class C complete
53 + class D,E database
54 ```
55
56 :::tip
@@ -79,8 +89,6 @@ Stay updated by subscribing to [Netdata’s GitHub releases](https://github.com/
89
90 :::
91
82 ----
83 -
92 ## Compliance with Regulations
93
94 Netdata complies with major data privacy laws, including GDPR and CCPA.
@@ -125,8 +133,6 @@ Deleting your account removes all associated personal data, including email and
133
134 Netdata continuously updates its policies and technical controls to stay aligned with evolving regulations.
135
128 ----
129 -
136 ## Anonymous Statistics
137
138 Netdata collects anonymous installation and telemetry statistics to improve its services.
@@ -154,8 +160,6 @@ See [installation documentation](https://learn.netdata.cloud/docs/netdata-agent/
160
161 Netdata does not sell or share anonymous statistics with any third parties.
162
157 ----
158 -
163 ## Internal Security Measures
164
165 Netdata enforces layered security controls:
@@ -176,8 +180,6 @@ Need additional security configurations? Contact Netdata Support.
180
181 :::
182
179 ----
180 -
183 ## Standards Alignment
184
185 ### PCI DSS Alignment
@@ -197,8 +199,6 @@ Consult a PCI DSS compliance expert if you use Netdata as part of your PCI envir
199
200 :::
201
200 ----
201 -
202 ### HIPAA Alignment
203
204 Netdata aligns with HIPAA security practices:
@@ -214,8 +214,6 @@ Request a BAA through Netdata Support if required.
214
215 :::
216
217 ----
218 -
217 ### SOC 2 Compliance
218
219 Netdata achieved SOC2 Type 1 compliance on May 14, 2025 for these Service Criteria:
@@ -226,8 +224,6 @@ Netdata achieved SOC2 Type 1 compliance on May 14, 2025 for these Service Criter
224 | Availability | Resilient systems, continuous monitoring |
225 | Confidentiality | Metadata isolation, role-based access |
226
229 ----
230 -
227 ## Conclusion
228
229 Netdata gives you a secure and transparent way to monitor your systems.
docs/security-and-privacy-design/netdata-agent-security.md
+18 -18
@@ -27,8 +27,6 @@ When plugins collect data from databases or logs, only **processed metrics** are
27
28 Raw data remains local and is never transmitted.
29
30 ----
31 -
30 ## User Data Protection
31
32 Netdata Agent safeguards your data at every stage.
@@ -53,8 +51,6 @@ Netdata's decentralized design keeps all data local.
51
52 :::
53
56 ----
57 -
54 ## Communication and Data Encryption
55
56 Netdata secures all internal and external communications:
@@ -72,16 +68,26 @@ Public and private keys are exchanged securely during Cloud provisioning.
68
69 ```mermaid
70 flowchart TD
75 - A[Netdata Plugin] -->|Collects raw data| B[In-memory Processing]
76 - B -->|Processes into metrics| C[Netdata Daemon]
77 - C -->|Stores metrics locally| D[Netdata Database]
78 - C -->|Optionally streams metrics| E[Another Netdata Agent]
79 - C -->|Optionally sends metadata| F[Netdata Cloud]
80 - F --> G[Dashboards <br/>&<br/> Notifications]
71 + A("Netdata Plugin") -->|"Collects raw data"| B("In-memory Processing")
72 + B -->|"Processes into metrics"| C("Netdata Daemon")
73 + C -->|"Stores metrics locally"| D("Netdata Database")
74 + C -->|"Optionally streams metrics"| E("Another Netdata Agent")
75 + C -->|"Optionally sends metadata"| F("Netdata Cloud")
76 + F --> G("Dashboards<br/>& Notifications")
77 +
78 + %% Style definitions
79 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
80 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
81 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
82 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
83 +
84 + %% Apply styles
85 + class A alert
86 + class B,C neutral
87 + class D,E complete
88 + class F,G database
89 ```
90
83 ----
84 -
91 ## Authentication
92
93 Netdata supports multiple authentication methods depending on the connection type:
@@ -98,8 +104,6 @@ For additional access control, place Netdata Agents behind an authenticating web
104
105 :::
106
101 ----
102 -
107 ## Security Vulnerability Response
108
109 Netdata follows a structured vulnerability response process:
@@ -116,8 +120,6 @@ Learn more in [Netdata's GitHub Security Policy](https://github.com/netdata/netd
120
121 :::
122
119 ----
120 -
123 ## Protection Against Common Security Threats
124
125 Netdata Agent is resilient against major security threats:
@@ -134,8 +136,6 @@ Additional protections include:
136 - Isolating escalated privileges to specific collectors
137 - Proactive CPU and memory management
138
137 ----
138 -
139 ## User-Customizable Security Settings
140
141 You can tailor the Agent's security settings:
docs/security-and-privacy-design/netdata-cloud-security.md
+15 -4
@@ -57,10 +57,21 @@ Metric data travels via secure Agent-Cloud Link (ACLK):
57
58 ```mermaid
59 flowchart TD
60 - A[Netdata Agent] -->|Encrypts metrics<br/>and minimal metadata| B[Agent-Cloud Link ACLK]
61 - B -->|TLS Encryption| C[Netdata Cloud]
62 - C -->|Aggregates metadata<br/>for dashboards and alerts| D[User Browser]
63 -
60 + A("Netdata Agent") -->|"Encrypts metrics<br/>and minimal metadata"| B("Agent-Cloud Link ACLK")
61 + B -->|"TLS Encryption"| C("Netdata Cloud")
62 + C -->|"Aggregates metadata<br/>for dashboards and alerts"| D("User Browser")
63 +
64 + %% Style definitions
65 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
66 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
67 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
68 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
69 +
70 + %% Apply styles
71 + class A alert
72 + class B neutral
73 + class C database
74 + class D complete
75 ```
76
77 ## Data Retention and Erasure
src/collectors/statsd.plugin/README.md
+65 -48
@@ -39,17 +39,22 @@ Want a hands-on example? [Jump to the K6 StatsD Walkthrough](#step-by-step-guide
39 ### How StatsD Works with Netdata
40
41 ```mermaid
42 -graph TD
43 - A[Your Application] -->|Sends metrics| B[Netdata StatsD]
44 - B -->|Creates| C[Private Charts]
45 - B -->|Creates| D[Synthetic Charts]
46 - B -->|Stores in| E[Database]
42 +flowchart TD
43 + A("Your Application") -->|"Sends metrics"| B("Netdata StatsD")
44 + B -->|"Creates"| C("Private Charts")
45 + B -->|"Creates"| D("Synthetic Charts")
46 + B -->|"Stores in"| E("Database")
47
48 - style A fill:#f9f9f9,stroke:#333,stroke-width:1px
49 - style B fill:#4caf50,stroke:#333,stroke-width:1px,color:black
50 - style C fill:#4caf50,stroke:#333,stroke-width:1px,color:black
51 - style D fill:#4caf50,stroke:#333,stroke-width:1px,color:black
52 - style E fill:#4caf50,stroke:#333,stroke-width:1px,color:black
48 + %% Style definitions
49 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
50 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
51 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
52 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
53 +
54 + %% Apply styles
55 + class A alert
56 + class B,C,D neutral
57 + class E complete
58 ```
59
60 ## Netdata as a StatsD Server
@@ -90,23 +95,25 @@ Currently available applications:
95 Netdata fully supports the StatsD protocol and extends it for more advanced use cases. All StatsD client libraries are compatible with Netdata.
96
97 ```mermaid
93 -graph TD
94 - A[Application] -->|Sends| B[Metrics]
95 - B --> C[Gauges]
96 - B --> D[Counters]
97 - B --> E[Timers]
98 - B --> F[Histograms]
99 - B --> G[Sets]
100 - B --> H[Dictionaries]
98 +flowchart TD
99 + A("Application") -->|"Sends"| B("Metrics")
100 + B --> C("Gauges")
101 + B --> D("Counters")
102 + B --> E("Timers")
103 + B --> F("Histograms")
104 + B --> G("Sets")
105 + B --> H("Dictionaries")
106
102 - style A fill:#f9f9f9,stroke:#333,stroke-width:1px
103 - style B fill:#4caf50,stroke:#333,stroke-width:1px,color:black
104 - style C fill:#4caf50,stroke:#333,stroke-width:1px,color:black
105 - style D fill:#4caf50,stroke:#333,stroke-width:1px,color:black
106 - style E fill:#4caf50,stroke:#333,stroke-width:1px,color:black
107 - style F fill:#4caf50,stroke:#333,stroke-width:1px,color:black
108 - style G fill:#4caf50,stroke:#333,stroke-width:1px,color:black
109 - style H fill:#4caf50,stroke:#333,stroke-width:1px,color:black
107 + %% Style definitions
108 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
109 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
110 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
111 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
112 +
113 + %% Apply styles
114 + class A alert
115 + class B neutral
116 + class C,D,E,F,G,H complete
117 ```
118
119 <details>
@@ -284,19 +291,24 @@ You can find the StatsD configuration in `/etc/netdata/netdata.conf`:
291 Netdata's StatsD chart system uses three key sections in its configuration:
292
293 ```mermaid
287 -graph TD
288 - A[[statsd.d config]] --> B[app]
289 - A --> C[dictionary]
290 - A --> D[chart definitions]
291 - B --> E[metric filtering]
292 - C --> F[renaming for display]
293 - D --> G[chart family/context/units/priorities]
294 +flowchart TD
295 + A("statsd.d config") --> B("app")
296 + A --> C("dictionary")
297 + A --> D("chart definitions")
298 + B --> E("metric filtering")
299 + C --> F("renaming for display")
300 + D --> G("chart family/context/units/priorities")
301
295 - classDef default fill:#4caf50,stroke:#333,stroke-width:1px,color:black
296 - classDef config fill:#f9f9f9,stroke:#333,stroke-width:1px
297 -
298 - class A config
299 - class B,C,D,E,F,G default
302 + %% Style definitions
303 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
304 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
305 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
306 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
307 +
308 + %% Apply styles
309 + class A alert
310 + class B,C,D neutral
311 + class E,F,G complete
312 ```
313
314 The diagram shows how the configuration flows:
@@ -387,18 +399,23 @@ For ephemeral metrics, use `set charts as obsolete after` and `cleanup obsolete
399 Use synthetic charts to create dedicated sections on the dashboard to render your StatsD charts.
400
401 ```mermaid
390 -graph TD
391 - A[StatsD Metrics] --> B[App]
392 - A --> C[Dictionary]
393 - B --> D[Chart]
402 +flowchart TD
403 + A("StatsD Metrics") --> B("App")
404 + A --> C("Dictionary")
405 + B --> D("Chart")
406 C --> D
395 - D --> E[Dashboard]
407 + D --> E("Dashboard")
408
397 - style A fill:#f9f9f9,stroke:#333,stroke-width:1px
398 - style B fill:#4caf50,stroke:#333,stroke-width:1px,color:black
399 - style C fill:#4caf50,stroke:#333,stroke-width:1px,color:black
400 - style D fill:#4caf50,stroke:#333,stroke-width:1px,color:black
401 - style E fill:#4caf50,stroke:#333,stroke-width:1px,color:black
409 + %% Style definitions
410 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
411 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
412 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
413 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
414 +
415 + %% Apply styles
416 + class A alert
417 + class B,C neutral
418 + class D,E complete
419 ```
420
421 Synthetic charts are organized in:
src/health/REFERENCE.md
+48 -138
@@ -1,15 +1,5 @@
1 # Configure Health Alerts
2
3 -## Table of Contents
4 -
5 -- [Quick Start Guide](#quick-start-guide) <!-- SECTION_TYPE: tutorial -->
6 -- [Common Tasks](#common-tasks) <!-- SECTION_TYPE: workflow -->
7 -- [How-To Guides](#how-to-guides) <!-- SECTION_TYPE: procedures -->
8 -- [Alert Configuration Reference](#alert-configuration-reference) <!-- SECTION_TYPE: reference -->
9 -- [Expressions and Variables](#expressions-and-variables) <!-- SECTION_TYPE: concepts -->
10 -- [Alert Examples](#alert-examples) <!-- SECTION_TYPE: examples -->
11 -- [Troubleshooting](#troubleshooting) <!-- SECTION_TYPE: problem_solving -->
12 -
3 ## Quick Start Guide
4
5 :::tip
@@ -1370,152 +1360,72 @@ Follow the flowcharts below to systematically diagnose and resolve alert issues.
1360
1361 ```mermaid
1362 flowchart TD
1373 - A("Alert Not Working") --> B{"Alert appears<br/>in dashboard?"}
1374 -
1375 - B -->|No| C("Configuration Issue")
1376 - B -->|Yes| D{"Alert triggering<br/>at all?"}
1377 -
1378 - C --> C1("Check syntax errors<br/>Reload configuration<br/>Review debug logs")
1379 -
1380 - D -->|No| E{"Chart exists<br/>and has data?"}
1381 - D -->|Yes| F("Threshold Issue")
1382 -
1383 - E -->|No| E1("Verify chart name<br/>Check data collection<br/>Review collector status")
1384 - E -->|Yes| G{"Variables<br/>resolving?"}
1363 + A("Alert Not Working") --> B("Check Configuration")
1364 + A --> C("Check Data Source")
1365 + A --> D("Check Thresholds")
1366
1386 - G -->|No| G1("Check variable names<br/>Verify dimensions<br/>Use alarm_variables API")
1387 - G -->|Yes| H{"Expression<br/>logic correct?"}
1367 + B --> B1("Syntax errors<br/>Reload config<br/>Review logs")
1368 + C --> C1("Chart exists<br/>Data collection<br/>Variable names")
1369 + D --> D1("Adjust values<br/>Review logic<br/>Test expressions")
1370
1389 - H -->|No| H1("Review operators<br/>Check units<br/>Test with simple thresholds")
1390 - H -->|Yes| I("Check timing<br/>and frequency")
1391 -
1392 - F --> F1("Adjust warn/crit values<br/>Review hysteresis<br/>Check status conditions")
1393 -
1394 - style A fill:#f44336,stroke:#d32f2f,stroke-width:3px,color:#fff
1395 - style C fill:#ffeb3b,stroke:#fbc02d,stroke-width:2px,color:#000
1396 - style F fill:#ffeb3b,stroke:#fbc02d,stroke-width:2px,color:#000
1397 - style B fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1398 - style D fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1399 - style E fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1400 - style G fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1401 - style H fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1402 - style E1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1403 - style G1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1404 - style H1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1405 - style F1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1406 - style C1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1407 - style I fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1408 -
1409 - linkStyle 0 stroke:#2196F3,stroke-width:3px
1410 - linkStyle 1 stroke:#f44336,stroke-width:3px
1411 - linkStyle 2 stroke:#2196F3,stroke-width:3px
1412 - linkStyle 4 stroke:#f44336,stroke-width:3px
1413 - linkStyle 5 stroke:#2196F3,stroke-width:3px
1414 - linkStyle 7 stroke:#f44336,stroke-width:3px
1415 - linkStyle 8 stroke:#2196F3,stroke-width:3px
1416 - linkStyle 10 stroke:#f44336,stroke-width:3px
1417 - linkStyle 11 stroke:#2196F3,stroke-width:3px
1371 + %% Style definitions
1372 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
1373 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
1374 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
1375 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
1376 +
1377 + %% Apply styles
1378 + class A alert
1379 + class B,C,D database
1380 + class B1,C1,D1 complete
1381 ```
1382
1383 #### Decision Tree: Alert Always Triggering
1384
1385 ```mermaid
1386 flowchart TD
1424 - A("Alert Always Triggering") --> B{"Check current<br/>metric value"}
1425 -
1426 - B --> C{"Value actually<br/>above threshold?"}
1427 -
1428 - C -->|Yes| D("Legitimate Alert")
1429 - C -->|No| E{"Expression<br/>logic error?"}
1430 -
1431 - D --> D1("Adjust thresholds<br/>Review alert necessity<br/>Change frequency")
1387 + A("Alert Always Triggering") --> B("Check Values")
1388 + A --> C("Check Logic")
1389 + A --> D("Check Variables")
1390
1433 - E -->|Yes| F{"Wrong operator<br/>direction?"}
1434 - E -->|No| G{"Units<br/>mismatch?"}
1391 + B --> B1("Current metrics<br/>Threshold comparison<br/>Units verification")
1392 + C --> C1("Operator direction<br/>Expression syntax<br/>Status conditions")
1393 + D --> D1("Variable names<br/>Dimension availability<br/>API verification")
1394
1436 - F -->|Yes| F1("Change operators<br/>Fix direction<br/>Review logic")
1437 - F -->|No| H{"Variable name<br/>incorrect?"}
1438 -
1439 - G -->|Yes| G1("Check units<br/>Verify calculations<br/>Review methods")
1440 - G -->|No| I{"Status condition<br/>issue?"}
1441 -
1442 - H -->|Yes| H1("Verify variables<br/>Check dimensions<br/>Use API")
1443 - H -->|No| J("Review expression<br/>Check syntax")
1444 -
1445 - I -->|Yes| I1("Check status usage<br/>Review logic<br/>Simplify conditions")
1446 - I -->|No| J
1447 -
1448 - style A fill:#f44336,stroke:#d32f2f,stroke-width:3px,color:#fff
1449 - style D fill:#ffeb3b,stroke:#fbc02d,stroke-width:2px,color:#000
1450 - style B fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1451 - style C fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1452 - style E fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1453 - style F fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1454 - style G fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1455 - style H fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1456 - style I fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1457 - style F1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1458 - style G1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1459 - style H1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1460 - style I1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1461 - style D1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1462 - style J fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1463 -
1464 - linkStyle 2 stroke:#2196F3,stroke-width:3px
1465 - linkStyle 3 stroke:#f44336,stroke-width:3px
1466 - linkStyle 5 stroke:#2196F3,stroke-width:3px
1467 - linkStyle 6 stroke:#f44336,stroke-width:3px
1468 - linkStyle 7 stroke:#2196F3,stroke-width:3px
1469 - linkStyle 8 stroke:#f44336,stroke-width:3px
1470 - linkStyle 10 stroke:#2196F3,stroke-width:3px
1471 - linkStyle 11 stroke:#f44336,stroke-width:3px
1472 - linkStyle 13 stroke:#2196F3,stroke-width:3px
1473 - linkStyle 14 stroke:#f44336,stroke-width:3px
1395 + %% Style definitions
1396 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
1397 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
1398 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
1399 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
1400 +
1401 + %% Apply styles
1402 + class A alert
1403 + class B,C,D database
1404 + class B1,C1,D1 complete
1405 ```
1406
1407 #### Decision Tree: Alert Flapping
1408
1409 ```mermaid
1410 flowchart TD
1480 - A("Alert Flapping<br/>Too Many Notifications") --> B{"Values oscillating<br/>around threshold?"}
1481 -
1482 - B -->|Yes| C("Implement Hysteresis")
1483 - B -->|No| D{"Data source<br/>noisy/unstable?"}
1484 -
1485 - C --> C1("Use conditional operator<br/>Set different thresholds<br/>Add hysteresis logic")
1486 -
1487 - D -->|Yes| E("Smooth Data")
1488 - D -->|No| F{"Check frequency<br/>too high?"}
1489 -
1490 - E --> E1("Increase lookup time<br/>Use averages<br/>Reduce noise")
1491 -
1492 - F -->|Yes| F1("Increase interval<br/>Match frequency<br/>Reduce checks")
1493 - F -->|No| G{"Delay settings<br/>needed?"}
1494 -
1495 - G -->|Yes| G1("Add delay line<br/>Set up/down delays<br/>Use multipliers")
1496 - G -->|No| H("Review notification<br/>settings")
1411 + A("Alert Flapping") --> B("Add Hysteresis")
1412 + A --> C("Smooth Data")
1413 + A --> D("Adjust Timing")
1414
1498 - style A fill:#f44336,stroke:#d32f2f,stroke-width:3px,color:#fff
1499 - style C fill:#ffeb3b,stroke:#fbc02d,stroke-width:2px,color:#000
1500 - style E fill:#ffeb3b,stroke:#fbc02d,stroke-width:2px,color:#000
1501 - style B fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1502 - style D fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1503 - style F fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1504 - style G fill:#f9f9f9,stroke:#e0e0e0,stroke-width:2px,color:#000
1505 - style C1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1506 - style E1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1507 - style F1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1508 - style G1 fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1509 - style H fill:#4caf50,stroke:#388e3c,stroke-width:2px,color:#fff
1415 + B --> B1("Conditional thresholds<br/>Different up/down values<br/>Status-based logic")
1416 + C --> C1("Increase lookup time<br/>Use averages<br/>Reduce noise")
1417 + D --> D1("Increase intervals<br/>Add delays<br/>Reduce frequency")
1418
1511 - linkStyle 1 stroke:#2196F3,stroke-width:3px
1512 - linkStyle 2 stroke:#f44336,stroke-width:3px
1513 - linkStyle 4 stroke:#2196F3,stroke-width:3px
1514 - linkStyle 5 stroke:#f44336,stroke-width:3px
1515 - linkStyle 7 stroke:#2196F3,stroke-width:3px
1516 - linkStyle 8 stroke:#f44336,stroke-width:3px
1517 - linkStyle 9 stroke:#2196F3,stroke-width:3px
1518 - linkStyle 10 stroke:#f44336,stroke-width:3px
1419 + %% Style definitions
1420 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
1421 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
1422 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
1423 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
1424 +
1425 + %% Apply styles
1426 + class A alert
1427 + class B,C,D database
1428 + class B1,C1,D1 complete
1429 ```
1430
1431 ### Common Issues and Solutions
src/health/notifications/README.md
+41 -58
@@ -21,80 +21,63 @@ This script handles:
21 ## Role-Based Routing Visualization
22
23 ```mermaid
24 -%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#2b2b2b', 'primaryTextColor': '#fff', 'primaryBorderColor': '#7C0000', 'lineColor': '#F8B229', 'secondaryColor': '#006100', 'tertiaryColor': '#333'}}}%%
24 flowchart TD
26 - Alert[High CPU Usage Alert] --> Check{Severity Level}
27 - style Alert fill:#f44336,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
28 - style Check fill:#ffeb3b,stroke:#555,color:#333,stroke-width:1px,rx:10,ry:10
25 + Alert("High CPU Usage Alert") --> Check("Severity Level")
26
30 - Check -->|WARNING| WarningRouting{Role: SysAdmin}
31 - Check -->|CRITICAL| CriticalRouting{Multiple Roles}
27 + Check -->|"WARNING"| WarningRouting("Role: SysAdmin")
28 + Check -->|"CRITICAL"| CriticalRouting("Multiple Roles")
29
33 - style WarningRouting fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
34 - style CriticalRouting fill:#f44336,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
30 + WarningRouting --> SlackChannel("Slack")
31 + WarningRouting --> EmailOps("Email")
32
36 - WarningRouting --> SlackChannel[Slack]
37 - WarningRouting --> EmailOps[Email]
33 + CriticalRouting --> PagerDuty("PagerDuty")
34 + CriticalRouting --> EmailManagers("Email")
35 + CriticalRouting --> SlackUrgent("Slack")
36 + CriticalRouting --> SMS("SMS")
37
39 - CriticalRouting --> PagerDuty[PagerDuty]
40 - CriticalRouting --> EmailManagers[Email]
41 - CriticalRouting --> SlackUrgent[Slack]
42 - CriticalRouting --> SMS[SMS]
43 -
44 - style SlackChannel fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
45 - style EmailOps fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
46 - style PagerDuty fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
47 - style EmailManagers fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
48 - style SlackUrgent fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
49 - style SMS fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
38 + %% Style definitions
39 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
40 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
41 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
42 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
43 +
44 + %% Apply styles
45 + class Alert alert
46 + class Check database
47 + class WarningRouting,CriticalRouting complete
48 + class SlackChannel,EmailOps,PagerDuty,EmailManagers,SlackUrgent,SMS neutral
49 ```
50
51 ## Health Management API Workflow
52
53 ```mermaid
55 -%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#2b2b2b', 'primaryTextColor': '#fff', 'primaryBorderColor': '#7C0000', 'lineColor': '#F8B229', 'secondaryColor': '#006100', 'tertiaryColor': '#333'}}}%%
54 flowchart TD
57 - Start[Normal Operation] --> Maintenance{Maintenance<br/>Window?}
58 - style Start fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
59 - style Maintenance fill:#ffeb3b,stroke:#555,color:#333,stroke-width:1px,rx:10,ry:10
60 -
61 - Maintenance -->|No| NormalOps[Continue Normal Alerting]
62 - Maintenance -->|Yes| ApiAction{Choose API Action}
63 -
64 - style NormalOps fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
65 - style ApiAction fill:#f44336,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
66 -
67 - ApiAction -->|Silence All| SilenceAll[SILENCE ALL]
68 - ApiAction -->|Disable All| DisableAll[DISABLE ALL]
69 - ApiAction -->|Selective Silence| SilenceSelect[SILENCE Specific]
70 -
71 - SilenceAll --> AlertMode["Alerts: Yes<br/>Notifications: No"]
72 - DisableAll --> CheckMode["Alerts: No<br/>Notifications: No"]
73 - SilenceSelect --> SelectMode["Selected: Silenced<br/>Others: Normal"]
74 -
75 - style SilenceAll fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
76 - style DisableAll fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
77 - style SilenceSelect fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
78 -
79 - style AlertMode fill:#ffeb3b,stroke:#555,color:#333,stroke-width:1px,rx:10,ry:10
80 - style CheckMode fill:#ffeb3b,stroke:#555,color:#333,stroke-width:1px,rx:10,ry:10
81 - style SelectMode fill:#ffeb3b,stroke:#555,color:#333,stroke-width:1px,rx:10,ry:10
82 -
83 - AlertMode --> MaintenanceEnd{Maintenance<br/>Complete?}
84 - CheckMode --> MaintenanceEnd
85 - SelectMode --> MaintenanceEnd
55 + Start("Normal Operation") --> Maintenance("Maintenance Window?")
56
87 - style MaintenanceEnd fill:#ffeb3b,stroke:#555,color:#333,stroke-width:1px,rx:10,ry:10
57 + Maintenance -->|"No"| NormalOps("Continue Normal Alerting")
58 + Maintenance -->|"Yes"| ApiAction("Choose Action")
59
89 - MaintenanceEnd -->|Yes| Reset[RESET]
90 - MaintenanceEnd -->|No| Continue[Continue Maintenance]
60 + ApiAction --> SilenceAll("SILENCE ALL")
61 + ApiAction --> DisableAll("DISABLE ALL")
62 + ApiAction --> SilenceSelect("SILENCE Specific")
63
92 - style Reset fill:#f9f9f9,stroke:#444,color:#333,stroke-width:1px,rx:10,ry:10
93 - style Continue fill:#f44336,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
64 + SilenceAll --> Reset("RESET when done")
65 + DisableAll --> Reset
66 + SilenceSelect --> Reset
67
95 - Reset --> Restored[Normal Operations Restored]
68 + Reset --> Restored("Normal Operations Restored")
69
97 - style Restored fill:#4caf50,stroke:#333,color:#fff,stroke-width:1px,rx:10,ry:10
70 + %% Style definitions
71 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
72 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
73 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
74 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:18px
75 +
76 + %% Apply styles
77 + class Start,Restored complete
78 + class Maintenance database
79 + class ApiAction alert
80 + class NormalOps,SilenceAll,DisableAll,SilenceSelect,Reset neutral
81 ```
82
83 ## Quick Setup
src/ml/ml-configuration.md
+38 -79
@@ -19,23 +19,24 @@ Netdata implements machine learning using the lightweight [dlib](https://github.
19
20 ```mermaid
21 flowchart TD
22 - Dlib("dlib C++ Library<br/><br/>Implementation")
22 + Dlib("dlib C++ Library<br/>Implementation")
23
24 - Efficiency("Run efficiently on<br/><br/>any system without<br/><br/>heavy dependencies")
25 - Resources("Minimize resource usage<br/><br/>while maintaining<br/><br/>high accuracy")
26 - Codebase("Operate within the<br/><br/>constraints of agent's<br/><br/>C/C++ codebase")
24 + Efficiency("Run efficiently on<br/>any system without<br/>heavy dependencies")
25 + Resources("Minimize resource usage<br/>while maintaining<br/>high accuracy")
26 + Codebase("Operate within the<br/>constraints of agent's<br/>C/C++ codebase")
27
28 Dlib --> Efficiency
29 Dlib --> Resources
30 Dlib --> Codebase
31
32 %% Style definitions
33 - classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
34 - classDef process fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
35 - classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
36 -
33 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
34 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
35 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
36 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
37 +
38 %% Apply styles
38 - class Dlib process
39 + class Dlib alert
40 class Efficiency,Resources,Codebase complete
41 ```
42
@@ -95,74 +96,31 @@ When your system detects a potential anomaly:
96
97 ```mermaid
98 flowchart TD
98 - NewData("**New Metric<br/><br/>Data Point**")
99 -
100 - M1("**Model 1<br/><br/>Recent 3h**")
101 - M2("**Model 2<br/><br/>3-6h ago**")
102 - M3("**Model 3<br/><br/>6-9h ago**")
103 - M4("**Model N<br/><br/>Older periods**")
104 -
105 - D1("**Anomalous?**")
106 - D2("**Anomalous?**")
107 - D3("**Anomalous?**")
108 - D4("**Anomalous?**")
109 -
110 - R1("**Model 1:<br/><br/>Anomaly**")
111 - N1("**Model 1:<br/><br/>Normal**")
112 - R2("**Model 2:<br/><br/>Anomaly**")
113 - N2("**Model 2:<br/><br/>Normal**")
114 - R3("**Model 3:<br/><br/>Anomaly**")
115 - N3("**Model 3:<br/><br/>Normal**")
116 - R4("**Model N:<br/><br/>Anomaly**")
117 - N4("**Model N:<br/><br/>Normal**")
118 -
119 - AllYes("**All<br/><br/>Models<br/><br/>Agree?**")
120 - AllNo("**Set Anomaly Bit = 0**<br/><br/>Normal")
121 - AllAnom("**Set Anomaly Bit = 1**<br/><br/>Anomalous")
99 + NewData("New Metric<br/>Data Point")
100
123 - NewData --> M1
124 - NewData --> M2
125 - NewData --> M3
126 - NewData --> M4
101 + Models("18 Models<br/>Evaluate Data")
102
128 - M1 --> D1
129 - M2 --> D2
130 - M3 --> D3
131 - M4 --> D4
103 + AllAgree("All Models<br/>Agree?")
104
133 - D1 -->|Yes| R1
134 - D1 -->|No| N1
135 - D2 -->|Yes| R2
136 - D2 -->|No| N2
137 - D3 -->|Yes| R3
138 - D3 -->|No| N3
139 - D4 -->|Yes| R4
140 - D4 -->|No| N4
105 + SetNormal("Set Anomaly Bit = 0<br/>Normal")
106 + SetAnomalous("Set Anomaly Bit = 1<br/>Anomalous")
107
142 - R1 --> AllYes
143 - R2 --> AllYes
144 - R3 --> AllYes
145 - R4 --> AllYes
146 - N1 --> AllNo
147 - N2 --> AllNo
148 - N3 --> AllNo
149 - N4 --> AllNo
150 -
151 - AllYes -->|Yes| AllAnom
152 - AllYes -->|No| AllNo
108 + NewData --> Models
109 + Models --> AllAgree
110 + AllAgree -->|"Yes"| SetAnomalous
111 + AllAgree -->|"No"| SetNormal
112
113 %% Style definitions
155 - classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
156 - classDef process fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
157 - classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
158 - classDef anomaly fill:#f44336,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
159 -
114 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
115 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
116 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
117 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
118 +
119 %% Apply styles
161 - class NewData neutral
162 - class M1,M2,M3,M4 complete
163 - class D1,D2,D3,D4,AllYes process
164 - class R1,R2,R3,R4,AllAnom anomaly
165 - class N1,N2,N3,N4,AllNo complete
120 + class NewData alert
121 + class Models,AllAgree neutral
122 + class SetNormal complete
123 + class SetAnomalous database
124 ```
125
126 :::note
@@ -185,24 +143,25 @@ This example assumes three child nodes [streaming](/docs/observability-centraliz
143
144 ```mermaid
145 flowchart BT
188 - C1("**Netdata Child 0**<br/><br/>ML enabled")
189 - C2("**Netdata Child 1**<br/><br/>ML enabled")
190 - C3("**Netdata Child 2**<br/><br/>ML disabled")
191 - P1("**Netdata Parent**<br/><br/>(ML enabled for itself<br/><br/>and Child 1 & 2)")
146 + C1("Netdata Child 0<br/>ML enabled")
147 + C2("Netdata Child 1<br/>ML enabled")
148 + C3("Netdata Child 2<br/>ML disabled")
149 + P1("Netdata Parent<br/>ML enabled for itself<br/>and Child 1 & 2")
150
151 C1 --> P1
152 C2 --> P1
153 C3 --> P1
154
155 %% Style definitions
198 - classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
199 - classDef process fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
200 - classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:16px
201 -
156 + classDef alert fill:#ffeb3b,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
157 + classDef neutral fill:#f9f9f9,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
158 + classDef complete fill:#4caf50,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
159 + classDef database fill:#2196F3,stroke:#000000,stroke-width:3px,color:#000000,font-size:14px
160 +
161 %% Apply styles
162 class C1,C2 complete
163 class C3 neutral
205 - class P1 process
164 + class P1 alert
165 ```
166
167 ```text