0
0
Fork 0
mirror of https://github.com/netdata/netdata.git synced 2025-04-03 04:55:33 +00:00

Docs directory lint documentation and fix issues ()

* alerts-and-notifications broken link pass

* category-overview-pages pass

* dashboards and charts pass

* deployment-guides pass

* dev corner pass

* exporting metrics pass

* Netdata Agent pass

* Netdata Cloud pass

* observ centrl points pass

* sec and priv design pass

* final docs on docs/ folder

* web server readme fix

* fix broken link
This commit is contained in:
Fotis Voutsas 2024-10-03 12:05:07 +03:00 committed by GitHub
parent dbec34183b
commit a5460023bf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
67 changed files with 664 additions and 871 deletions
docs
Demo-Sites.md
alerts-and-notifications/notifications
category-overview-pages
dashboards-and-charts
deployment-guides
developer-and-contributor-corner
exporting-metrics
glossary.mdguidelines.md
netdata-agent
netdata-assistant.md
netdata-cloud
observability-centralization-points
security-and-privacy-design
src
collectors
web/server

View file

@ -11,34 +11,34 @@ sidebar_position: "90"
# Live demos
See the live Netdata Cloud demo with Rooms (listed below) for specific use cases at **https://app.netdata.cloud/spaces/netdata-demo**
See the live Netdata Cloud demo with Rooms (listed below) for specific use cases at `https://app.netdata.cloud/spaces/netdata-demo`
| Location | Netdata Demo URL | 60 mins reqs | VM donated by |
| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| :------------------------------------------------- |
| Netdata Cloud | **[Netdata Demo - All nodes](https://app.netdata.cloud/spaces/netdata-demo/rooms/all-nodes/overview)** |||
| Netdata Cloud | **[Netdata Demo - Active Directory](https://app.netdata.cloud/spaces/netdata-demo/rooms/active-directory/overview)** |||
| Netdata Cloud | **[Netdata Demo - Apache](https://app.netdata.cloud/spaces/netdata-demo/rooms/apache/overview)** |||
| Netdata Cloud | **[Netdata Demo - Cassandra](https://app.netdata.cloud/spaces/netdata-demo/rooms/cassandra/overview)** |||
| Netdata Cloud | **[Netdata Demo - CoreDNS](https://app.netdata.cloud/spaces/netdata-demo/rooms/coredns/overview)** |||
| Netdata Cloud | **[Netdata Demo - DNS Query](https://app.netdata.cloud/spaces/netdata-demo/rooms/dns-query/overview)** |||
| Netdata Cloud | **[Netdata Demo - Docker](https://app.netdata.cloud/spaces/netdata-demo/rooms/docker/overview)** |||
| Netdata Cloud | **[Netdata Demo - Host Reachability](https://app.netdata.cloud/spaces/netdata-demo/rooms/host-reachability/overview)** |||
| Netdata Cloud | **[Netdata Demo - HTTP Endpoints](https://app.netdata.cloud/spaces/netdata-demo/rooms/http-endpoints/overview)** |||
| Netdata Cloud | **[Netdata Demo - IIS](https://app.netdata.cloud/spaces/netdata-demo/rooms/iis/overview)** |||
| Netdata Cloud | **[Netdata Demo - Kubernetes](https://app.netdata.cloud/spaces/netdata-demo/rooms/kubernetes/kubernetes)** |||
| Netdata Cloud | **[Netdata Demo - Machine Learning](https://app.netdata.cloud/spaces/netdata-demo/rooms/machine-learning/overview)** |||
| Netdata Cloud | **[Netdata Demo - MS Exchange](https://app.netdata.cloud/spaces/netdata-demo/rooms/ms-exchange/overview)** |||
| Netdata Cloud | **[Netdata Demo - Nginx](https://app.netdata.cloud/spaces/netdata-demo/rooms/nginx/overview)** |||
| Netdata Cloud | **[Netdata Demo - PostgreSQL](https://app.netdata.cloud/spaces/netdata-demo/rooms/postgresql/overview)** |||
| Netdata Cloud | **[Netdata Demo - Redis](https://app.netdata.cloud/spaces/netdata-demo/rooms/redis/overview)** |||
| Netdata Cloud | **[Netdata Demo - Windows](https://app.netdata.cloud/spaces/netdata-demo/rooms/windows/overview)** |||
| London (UK) | **[london3.my-netdata.io](https://london3.my-netdata.io)**<br/>(this is the global Netdata **registry** and has **named** and **mysql** charts) | [![Requests Per Second](https://london3.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://london3.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
| Atlanta (USA) | **[cdn77.my-netdata.io](https://cdn77.my-netdata.io)**<br/>(with **named** and **mysql** charts) | [![Requests Per Second](https://cdn77.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://cdn77.my-netdata.io) | [CDN77.com](https://www.cdn77.com/) |
| Bangalore (India) | **[bangalore.my-netdata.io](https://bangalore.my-netdata.io)** | [![Requests Per Second](https://bangalore.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://bangalore.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
| Frankfurt (Germany) | **[frankfurt.my-netdata.io](https://frankfurt.my-netdata.io)** | [![Requests Per Second](https://frankfurt.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://frankfurt.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
| New York (USA) | **[newyork.my-netdata.io](https://newyork.my-netdata.io)** | [![Requests Per Second](https://newyork.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://newyork.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
| San Francisco (USA) | **[sanfrancisco.my-netdata.io](https://sanfrancisco.my-netdata.io)** | [![Requests Per Second](https://sanfrancisco.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://sanfrancisco.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
| Singapore | **[singapore.my-netdata.io](https://singapore.my-netdata.io)** | [![Requests Per Second](https://singapore.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://singapore.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
| Toronto (Canada) | **[toronto.my-netdata.io](https://toronto.my-netdata.io)** | [![Requests Per Second](https://toronto.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://toronto.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
| Location | Netdata Demo URL | 60 mins reqs | VM donated by |
|:--------------------|:------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------|
| Netdata Cloud | **[Netdata Demo - All nodes](https://app.netdata.cloud/spaces/netdata-demo/rooms/all-nodes/overview)** | | |
| Netdata Cloud | **[Netdata Demo - Active Directory](https://app.netdata.cloud/spaces/netdata-demo/rooms/active-directory/overview)** | | |
| Netdata Cloud | **[Netdata Demo - Apache](https://app.netdata.cloud/spaces/netdata-demo/rooms/apache/overview)** | | |
| Netdata Cloud | **[Netdata Demo - Cassandra](https://app.netdata.cloud/spaces/netdata-demo/rooms/cassandra/overview)** | | |
| Netdata Cloud | **[Netdata Demo - CoreDNS](https://app.netdata.cloud/spaces/netdata-demo/rooms/coredns/overview)** | | |
| Netdata Cloud | **[Netdata Demo - DNS Query](https://app.netdata.cloud/spaces/netdata-demo/rooms/dns-query/overview)** | | |
| Netdata Cloud | **[Netdata Demo - Docker](https://app.netdata.cloud/spaces/netdata-demo/rooms/docker/overview)** | | |
| Netdata Cloud | **[Netdata Demo - Host Reachability](https://app.netdata.cloud/spaces/netdata-demo/rooms/host-reachability/overview)** | | |
| Netdata Cloud | **[Netdata Demo - HTTP Endpoints](https://app.netdata.cloud/spaces/netdata-demo/rooms/http-endpoints/overview)** | | |
| Netdata Cloud | **[Netdata Demo - IIS](https://app.netdata.cloud/spaces/netdata-demo/rooms/iis/overview)** | | |
| Netdata Cloud | **[Netdata Demo - Kubernetes](https://app.netdata.cloud/spaces/netdata-demo/rooms/kubernetes/kubernetes)** | | |
| Netdata Cloud | **[Netdata Demo - Machine Learning](https://app.netdata.cloud/spaces/netdata-demo/rooms/machine-learning/overview)** | | |
| Netdata Cloud | **[Netdata Demo - MS Exchange](https://app.netdata.cloud/spaces/netdata-demo/rooms/ms-exchange/overview)** | | |
| Netdata Cloud | **[Netdata Demo - Nginx](https://app.netdata.cloud/spaces/netdata-demo/rooms/nginx/overview)** | | |
| Netdata Cloud | **[Netdata Demo - PostgreSQL](https://app.netdata.cloud/spaces/netdata-demo/rooms/postgresql/overview)** | | |
| Netdata Cloud | **[Netdata Demo - Redis](https://app.netdata.cloud/spaces/netdata-demo/rooms/redis/overview)** | | |
| Netdata Cloud | **[Netdata Demo - Windows](https://app.netdata.cloud/spaces/netdata-demo/rooms/windows/overview)** | | |
| London (UK) | **[london3.my-netdata.io](https://london3.my-netdata.io)**<br/>(this is the global Netdata **registry** and has **named** and **mysql** charts) | [![Requests Per Second](https://london3.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://london3.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
| Atlanta (USA) | **[cdn77.my-netdata.io](https://cdn77.my-netdata.io)**<br/>(with **named** and **mysql** charts) | [![Requests Per Second](https://cdn77.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://cdn77.my-netdata.io) | [CDN77.com](https://www.cdn77.com/) |
| Bangalore (India) | **[bangalore.my-netdata.io](https://bangalore.my-netdata.io)** | [![Requests Per Second](https://bangalore.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://bangalore.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
| Frankfurt (Germany) | **[frankfurt.my-netdata.io](https://frankfurt.my-netdata.io)** | [![Requests Per Second](https://frankfurt.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://frankfurt.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
| New York (USA) | **[newyork.my-netdata.io](https://newyork.my-netdata.io)** | [![Requests Per Second](https://newyork.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://newyork.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
| San Francisco (USA) | **[sanfrancisco.my-netdata.io](https://sanfrancisco.my-netdata.io)** | [![Requests Per Second](https://sanfrancisco.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://sanfrancisco.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
| Singapore | **[singapore.my-netdata.io](https://singapore.my-netdata.io)** | [![Requests Per Second](https://singapore.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://singapore.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
| Toronto (Canada) | **[toronto.my-netdata.io](https://toronto.my-netdata.io)** | [![Requests Per Second](https://toronto.my-netdata.io/api/v1/badge.svg?chart=netdata.requests&dimensions=requests&after=-3600&options=unaligned&group=sum&label=reqs&units=empty&value_color=blue&precision=0&v42)](https://toronto.my-netdata.io) | [DigitalOcean.com](https://m.do.co/c/83dc9f941745) |
Netdata dashboards are mobile- and touch-friendly.

View file

@ -2,6 +2,8 @@
This section includes the documentation of the integrations for both of Netdata's notification methods.
<!-- following links are virtual links to a generated page, should not lead somewhere upon click from GitHub -->
- Netdata Cloud provides centralized alert notifications, utilizing the health status data already sent to Netdata Cloud from connected nodes to send alerts to configured integrations. [Supported integrations](/docs/alerts-&-notifications/notifications/centralized-cloud-notifications) include Amazon SNS, Discord, Slack, Splunk, and others.
- The Netdata Agent offers a [wider range of notification options](/docs/alerts-&-notifications/notifications/agent-dispatched-notifications) directly from the agent itself. You can choose from over a dozen services, including email, Slack, PagerDuty, Twilio, and others, for more granular control over notifications on each node.

View file

@ -6,4 +6,4 @@ The [systemd journal plugin](/src/collectors/systemd-journal.plugin/) is the cor
For structured logs, Netdata provides tools like [log2journal](/src/collectors/log2journal/README.md) and [systemd-cat-native](/src/libnetdata/log/systemd-cat-native.md) to convert them into compatible systemd journal entries.
You can also find useful guides on how to set up log centralization points in the [Observability Cetralization Points](/docs/observability-centralization-points/README.md) section of our docs.
You can also find useful guides on how to set up log centralization points in the [Observability Centralization Points](/docs/observability-centralization-points/README.md) section of our docs.

View file

@ -35,6 +35,6 @@ You can access the dashboard at <https://app.netdata.cloud/> and [sign-in with a
### Netdata Agent
To view your Netdata dashboard, open a web browser and enter the address `http://NODE:19999` - replace `NODE` with your Agent's IP address or hostname. If the Agent is on the same machine, use http://localhost:19999.
To view your Netdata dashboard, open a web browser and enter the address `http://NODE:19999` - replace `NODE` with your Agent's IP address or hostname. If the Agent is on the same machine, use `http://localhost:19999`.
Documentation for previous Agent dashboard can still be found [here](/src/web/gui/README.md).

View file

@ -1,7 +1,6 @@
# Anomaly Advisor tab
The Anomaly Advisor tab lets you focus on potentially anomalous metrics and charts related to a particular highlighted window of interest. In addition to this tab, each chart in the [Metrics tab](/docs/dashboards-and-charts/metrics-tab-and-single-node-tabs.md) also has an [Anomaly Rate ribbon](/docs/dashboards-and-charts/netdata-charts.md#anomaly-rate-ribbon).
The Anomaly Advisor tab lets you focus on potentially anomalous metrics and charts related to a particular highlighted window of interest. In addition to this tab, each chart in the [Metrics tab](/docs/dashboards-and-charts/metrics-tab-and-single-node-tabs.md) also has an [Anomaly Rate ribbon](/docs/dashboards-and-charts/netdata-charts.md#anomaly-rate-ribbon).
More details about configuration can be found in the [ML documentation](/src/ml/README.md).

View file

@ -66,8 +66,8 @@ All users will be able to see events from the Topology and Alerts domain but Aud
## How to use the events feed
1. Click on the **Events** tab (located near the top of your screen)
1. You will be presented with a table listing the events that occurred from the timeframe defined on the [date time picker](/docs/dashboards-and-charts/visualization-date-and-time-controls.md#date-and-time-selector)
1. You can use the filtering capabilities available on right-hand bar to slice through the results provided. See more details on [event types and filters](#event-types-and-filters)
2. You will be presented with a table listing the events that occurred from the timeframe defined on the [date time picker](/docs/dashboards-and-charts/visualization-date-and-time-controls.md#date-and-time-selector)
3. You can use the filtering capabilities available on right-hand bar to slice through the results provided
> **Note**
>

View file

@ -15,8 +15,7 @@ learn_rel_path: "Operations"
# Import, export, and print a snapshot
>❗This feature is only available on v1 dashboards, it hasn't been port-forwarded to v2.
> For more information on accessing dashboards check [this documentation](/docs/dashboards-and-charts/README.md).
> For more information on accessing dashboards check [this documentation](/docs/dashboards-and-charts/README.md).
Netdata can export snapshots of the contents of your dashboard at a given time, which you can then import into any other
node running Netdata. Or, you can create a print-ready version of your dashboard to save to PDF or actually print to
@ -44,7 +43,7 @@ Select the Netdata snapshot file to import. Once the file is loaded, the modal u
snapshot and the system from which it was taken. Click **Import** to begin to process.
Netdata takes the data embedded inside the snapshot and re-creates a static replica on your dashboard. When the import
finishes, you're free to move around and examine the charts.
finishes, you're free to move around and examine the charts.
Some caveats and tips to keep in mind:

View file

@ -27,7 +27,6 @@ Netdata Cloud organizes and visualizes the following metrics from your Kubernete
| `k8s.cgroup.net_net` | Sum of `received` and `sent` bandwidth per second. |
| `k8s.cgroup.net_packets` | Sum of `multicast`, `received`, and `sent` packets. |
When viewing the [overview of this dashboard](#kubernetes-containers-overview), Netdata presents the above metrics per container, or aggregated based on
their associated pods.

View file

@ -19,14 +19,14 @@ These charts provide a lot of useful information, so that you can:
- View individual metric collection status about a chart
These charts are available on Netdata Cloud's
[Metrics tab](/docs/dashboards-and-charts/metrics-tab-and-single-node-tabs.md), [single sode tabs](/docs/dashboards-and-charts/metrics-tab-and-single-node-tabs.md) and
[Metrics tab](/docs/dashboards-and-charts/metrics-tab-and-single-node-tabs.md), [single node tabs](/docs/dashboards-and-charts/metrics-tab-and-single-node-tabs.md) and
on your [Custom Dashboards](/docs/dashboards-and-charts/dashboards-tab.md).
## Overview
A Netdata chart looks like this:
<img src="https://user-images.githubusercontent.com/70198089/236133212-353c102f-a6ed-45b7-9251-34e004c7a10a.png" width="900"/>
<img src="https://user-images.githubusercontent.com/70198089/236133212-353c102f-a6ed-45b7-9251-34e004c7a10a.png" width="900" alt="A Netdata Chart"/>
With a quick glance you have immediate information available at your disposal:
@ -37,7 +37,7 @@ With a quick glance you have immediate information available at your disposal:
- [Chart area](#hover-over-the-chart)
- [Legend with dimensions](#dimensions-bar)
## Fundemental elements
## Fundamental elements
While Netdata's charts require no configuration and are easy to interact with, they have a lot of underlying complexity. To meaningfully organize charts out of the box based on what's happening in your nodes, Netdata uses the concepts of [dimensions](#dimensions), [contexts](#contexts), and [families](#families).
@ -100,7 +100,7 @@ names:
When you start interacting with a chart, you'll notice valuable information on the Title bar:
<img src="https://github.com/netdata/netdata/assets/70198089/75d700de-bc7d-4b96-b73d-7b248b83afea" width="900"/>
<img src="https://github.com/netdata/netdata/assets/70198089/75d700de-bc7d-4b96-b73d-7b248b83afea" width="900" alt="Netdata Chart Title bar"/>
Title bar elements:
@ -110,8 +110,7 @@ Title bar elements:
Along with viewing chart type, context and units, on this bar you have access to immediate actions over the chart:
<img src="https://github.com/netdata/netdata/assets/70198089/d21f326e-065c-4a08-bee9-69ad23736e38" width="200" />
<img src="https://github.com/netdata/netdata/assets/70198089/d21f326e-065c-4a08-bee9-69ad23736e38" width="200" alt="Netdata Chart Title bar immediate actions"/>
- **Manage Alerts**: manage [Alert configurations](/docs/dashboards-and-charts/alerts-tab.md#alert-configurations-tab) for this chart.
- **Chart info**: get more information relevant to the chart you are interacting with.
@ -119,14 +118,14 @@ Along with viewing chart type, context and units, on this bar you have access to
- **Enter fullscreen mode**: expand the current chart to the full size of your screen.
- **User settings**: save your settings for the chart at hand, so it persists across dashboard reloads.
- Personal has the top priority.
- Room and Space settings for a chart are shared across all users who don't have personal settings for it.
- Room and Space settings for a chart are shared across all users who don't have personal settings for it.
- **Drag and Drop the chart to a Dashboard**: add the chart to an existing custom [Dashboard](/docs/dashboards-and-charts/dashboards-tab.md) or directly create a new one that includes the chart.
## Definition bar
Each composite chart has a definition bar to provide information and options about the following:
<img src="https://user-images.githubusercontent.com/70198089/236134615-e53a1d68-8a0f-466b-b2ef-1974085f0e8d.png" width="900"/>
<img src="https://user-images.githubusercontent.com/70198089/236134615-e53a1d68-8a0f-466b-b2ef-1974085f0e8d.png" width="900" alt="Netdata Chart Definition bar"/>
- Group by option
- Aggregate function to be applied in case multiple data sources exist
@ -145,14 +144,14 @@ To help users instantly understand and validate the data they see on charts, we
> allowing you to zoom in to the different parts of it.
>
> <a href="https://user-images.githubusercontent.com/2662304/235475061-44628011-3b1f-4c44-9528-34452018eb89.png" target="_blank">
> <img src="https://user-images.githubusercontent.com/2662304/235475061-44628011-3b1f-4c44-9528-34452018eb89.png" width="400" border="0" align="center"/>
> <img src="https://user-images.githubusercontent.com/2662304/235475061-44628011-3b1f-4c44-9528-34452018eb89.png" width="400" border="0" align="center" alt="Netdata NIDL Framework"/>
> </a>
You can rapidly access condensed information for collected metrics, grouped by node, monitored instances, dimension, or any key/value label pair.
At the Definition bar of each chart, there are a few dropdown menus:
<img src="https://user-images.githubusercontent.com/43294513/235470150-62a3b9ac-51ca-4c0d-81de-8804e3d733eb.png" width="900"/>
<img src="https://user-images.githubusercontent.com/43294513/235470150-62a3b9ac-51ca-4c0d-81de-8804e3d733eb.png" width="900" alt="Netdata Chart NIDL Dropdown menus"/>
These dropdown menus have 2 functions:
@ -171,7 +170,7 @@ All of these dropdown menus can be used for instantly filtering the information
The "Group by" dropdown menu allows selecting 1 or more groupings to be applied at once on the same dataset.
<img src="https://user-images.githubusercontent.com/43294513/235468819-3af5a1d3-8619-48fb-a8b7-8e8b4cf6a8ff.png" width="900"/>
<img src="https://user-images.githubusercontent.com/43294513/235468819-3af5a1d3-8619-48fb-a8b7-8e8b4cf6a8ff.png" width="900" alt="Netdata Chart Group by dropdown"/>
It supports:
@ -188,7 +187,7 @@ Using this menu, you can slice and dice the data in any possible way, to quickly
> You have the means to change the default group by or apply filtering to get a better view into what data your are trying to analyze.
> For example, if you change the group by to _instance_ you get a view with the data of all the instances (cgroups) that contribute to that chart.
> Then you can use further filtering tools to focus the data that is important to you and even save the result to your own dashboards.
>
> ### Tip
>
> Group by instance, dimension to see the time series of every individual collected metric participating in the chart.
@ -197,7 +196,7 @@ Using this menu, you can slice and dice the data in any possible way, to quickly
Each chart uses an opinionated-but-valuable default aggregate function over the data sources.
<img src="https://user-images.githubusercontent.com/70198089/236136725-778670b4-7e81-44a8-8d3d-f38ded823c94.png" width="500"/>
<img src="https://user-images.githubusercontent.com/70198089/236136725-778670b4-7e81-44a8-8d3d-f38ded823c94.png" width="500" alt="Netdata Chart Aggregate functions over data"/>
For example, the `system.cpu` chart shows the average for each dimension from every contributing chart, while the `net.net` chart shows the sum for each dimension from every contributing chart, which can also come from multiple networking interfaces.
@ -218,7 +217,7 @@ The following aggregate functions are available for each selected dimension:
In this dropdown, you can view or filter the nodes contributing time-series metrics to the chart.
This menu also provides the contribution of each node to the volume of the chart, and a break down of the anomaly rate of the queried data per node.
<img src="https://user-images.githubusercontent.com/70198089/236137765-b57d5443-3d4b-42f4-9e3d-db1eb606626f.png" width="900"/>
<img src="https://user-images.githubusercontent.com/70198089/236137765-b57d5443-3d4b-42f4-9e3d-db1eb606626f.png" width="900" alt="Netdata Chart Nodes dropdown"/>
If one or more nodes can't contribute to a given chart, the definition bar shows a warning symbol plus the number of
affected nodes, then lists them in the dropdown along with the associated error. Nodes might return errors because of
@ -229,38 +228,38 @@ networking issues, a stopped `netdata` service, or because that node does not ha
In this dropdown, you can view or filter the instances contributing time-series metrics to the chart.
This menu also provides the contribution of each instance to the volume of the chart, and a break down of the anomaly rate of the queried data per instance.
<img src="https://user-images.githubusercontent.com/70198089/236138302-4dd4072e-3a0d-43bb-a9d8-4dde79c65e92.png" width="900"/>
<img src="https://user-images.githubusercontent.com/70198089/236138302-4dd4072e-3a0d-43bb-a9d8-4dde79c65e92.png" width="900" alt="Netdata Chart Instances dropdown"/>
### Dimensions dropdown
In this dropdown, you can view or filter the original dimensions contributing time-series metrics to the chart.
This menu also presents the contribution of each original dimensions on the chart, and a break down of the anomaly rate of the data per dimension.
<img src="https://user-images.githubusercontent.com/70198089/236138796-08dc6ac6-9a50-4913-a46d-d9bbcedd48f6.png" width="900"/>
<img src="https://user-images.githubusercontent.com/70198089/236138796-08dc6ac6-9a50-4913-a46d-d9bbcedd48f6.png" width="900" alt="Netdata Chart Dimensions Dropdown"/>
### Labels dropdown
In this dropdown, you can view or filter the contributing time-series labels of the chart.
This menu also presents the contribution of each label on the chart,and a break down of the anomaly rate of the data per label.
<img src="https://user-images.githubusercontent.com/70198089/236139027-8a51a958-2074-4675-a41b-efff30d8f51a.png" width="900"/>
<img src="https://user-images.githubusercontent.com/70198089/236139027-8a51a958-2074-4675-a41b-efff30d8f51a.png" width="900" alt="Netdata Chart Labels Dropdown"/>
### Aggregate functions over time
When the granularity of the data collected is higher than the plotted points on the chart an aggregation function over
time is applied.
<img src="https://user-images.githubusercontent.com/70198089/236411297-e123db06-0117-4e24-a5ac-955b980a8f55.png" width="400"/>
<img src="https://user-images.githubusercontent.com/70198089/236411297-e123db06-0117-4e24-a5ac-955b980a8f55.png" width="400" alt="Netdata Chart Aggregate functions over time"/>
By default the aggregation applied is _average_ but the user can choose different options from the following:
- Min, Max, Average or Sum
- Percentile
- you can specify the percentile you want to focus on: 25th, 50th, 75th, 80th, 90th, 95th, 97th, 98th and 99th.
<img src="https://user-images.githubusercontent.com/70198089/236410299-de5f3367-f3b0-4beb-a73f-a49007c543d4.png" width="250"/>
<img src="https://user-images.githubusercontent.com/70198089/236410299-de5f3367-f3b0-4beb-a73f-a49007c543d4.png" width="250" alt="Netdata Chart Aggregate functions over time Percentile selection"/>
- Trimmed Mean or Trimmed Median
- you can choose the percentage of data tha you want to focus on: 1%, 2%, 3%, 5%, 10%, 15%, 20% and 25%.
<img src="https://user-images.githubusercontent.com/70198089/236410858-74b46af9-280a-4ab2-ad26-5a6aa9403aa8.png" width="250"/>
<img src="https://user-images.githubusercontent.com/70198089/236410858-74b46af9-280a-4ab2-ad26-5a6aa9403aa8.png" width="250" alt="Netdata Chart Aggregate functions over time Trimmed Mean or Median selection"/>
- Median
- Standard deviation
- Coefficient of variation
@ -280,7 +279,7 @@ It then uses these unique models during data collection to predict the value tha
If the value collected is an outlier, it is marked as anomalous.
<img src="https://user-images.githubusercontent.com/70198089/236139886-79d63cf6-61ed-4aa7-842c-b5a1728c870d.png" width="900"/>
<img src="https://user-images.githubusercontent.com/70198089/236139886-79d63cf6-61ed-4aa7-842c-b5a1728c870d.png" width="900" alt="Netdata Chart Anomaly Rate Ribbon"/>
This unmatched capability of real-time predictions as data is collected allows you to **detect anomalies for potentially millions of metrics across your entire infrastructure within a second of occurrence**.
@ -297,29 +296,29 @@ It includes a bar indicating the volume percentage of each time series compared
This overlay sorts all dimensions by value, makes bold the closest dimension to the mouse and presents a histogram based on the values of the dimensions.
<img src="https://user-images.githubusercontent.com/70198089/236141460-bfa66b99-d63c-4a2c-84b1-2509ed94857f.png" width="500"/>
<img src="https://user-images.githubusercontent.com/70198089/236141460-bfa66b99-d63c-4a2c-84b1-2509ed94857f.png" width="500" alt="Netdata Chart Hover over Chart"/>
When hovering the anomaly ribbon, the overlay sorts all dimensions by anomaly rate, and presents a histogram of these anomaly rates.
#### Info column
### Info column
Additionally, when hovering over the chart, the overlay may display an indication in the "Info" column.
Currently, this column is used to inform users of any data collection issues that might affect the chart.
Below each chart, there is an information ribbon. This ribbon currently shows 3 states related to the points presented in the chart:
1. **[P]: Partial Data**
1. **Partial Data**
At least one of the dimensions in the chart has partial data, meaning that not all instances available contributed data to this point. This can happen when a container is stopped, or when a node is restarted. This indicator helps to gain confidence of the dataset, in situations when unusual spikes or dives appear due to infrastructure maintenance, or due to failures to part of the infrastructure.
2. **[O]: Overflown**
2. **Overflown**
At least one of the data sources included in the chart has a counter that has overflowed at this point.
3. **[E]: Empty Data**
3. **Empty Data**
At least one of the dimensions included in the chart has no data at all for the given points.
All these indicators are also visualized per dimension, in the pop-over that appears when hovering the chart.
<img src="https://user-images.githubusercontent.com/70198089/236145768-8ffadd02-93a4-4e9e-b4ae-c1367f614a7e.png" width="700"/>
<img src="https://user-images.githubusercontent.com/70198089/236145768-8ffadd02-93a4-4e9e-b4ae-c1367f614a7e.png" width="700" alt="Netdata Chart Hover over the chart Info Column"/>
## Play, Pause and Reset
@ -346,7 +345,7 @@ Note: These interactions are available when the default "Pan" action is used fro
While exploring the chart, a tool bar will appear. This tool bar is there to support you on this task.
The available manipulation tools you can select are:
<img src="https://user-images.githubusercontent.com/70198089/236143292-c1d75528-263d-4ddd-9db8-b8d6a31cb83e.png" width="400" />
<img src="https://user-images.githubusercontent.com/70198089/236143292-c1d75528-263d-4ddd-9db8-b8d6a31cb83e.png" width="400" alt="Netdata Chart Tool bar"/>
- Pan
- Highlight
@ -382,10 +381,10 @@ Selecting timeframes is useful when you see an interesting spike or change in a
You can zoom to a specific timeframe, either horizontally of vertically, by selecting a timeframe.
| Interaction | Keyboard/mouse | Touchpad/touchscreen |
|:-------------------------------------------|:-------------------------------------|:-----------------------------------------------------|
| **Zoom** to a specific timeframe | `Shift + mouse vertical selection` | `n/a` |
| **Horizontal Zoom** a specific Y-axis area | `Shift + mouse horizontal selection` | `n/a` |
| Interaction | Keyboard/mouse | Touchpad/touchscreen |
|:-------------------------------------------|:-------------------------------------|:---------------------|
| **Zoom** to a specific timeframe | `Shift + mouse vertical selection` | `n/a` |
| **Horizontal Zoom** a specific Y-axis area | `Shift + mouse horizontal selection` | `n/a` |
### Chart zoom
@ -394,9 +393,9 @@ of an anomaly or outage.
Zooming out lets you see metrics within the larger context, such as the last hour, day, or week, which is useful in understanding what "normal" looks like, or to identify long-term trends, like a slow creep in memory usage.
| Interaction | Keyboard/mouse | Touchpad/touchscreen |
|:-------------------------------------------|:-------------------------------------|:-----------------------------------------------------|
| **Zoom** in or out | `Shift + mouse scrollwheel` | `two-finger pinch` <br />`Shift + two-finger scroll` |
| Interaction | Keyboard/mouse | Touchpad/touchscreen |
|:-------------------|:----------------------------|:-----------------------------------------------------|
| **Zoom** in or out | `Shift + mouse scrollwheel` | `two-finger pinch` <br />`Shift + two-finger scroll` |
## Dimensions bar
@ -404,7 +403,7 @@ Zooming out lets you see metrics within the larger context, such as the last hou
The bottom legend where you can see the dimensions of the chart can be ordered by:
<img src="https://user-images.githubusercontent.com/70198089/236144658-6c3d0e31-9bcb-45f3-bb95-4eafdcbb0a58.png" width="300" />
<img src="https://user-images.githubusercontent.com/70198089/236144658-6c3d0e31-9bcb-45f3-bb95-4eafdcbb0a58.png" width="300" alt="Netdata Chart order dimensions legend"/>
- Dimension name (Ascending or Descending)
- Dimension value (Ascending or Descending)

View file

@ -12,4 +12,3 @@ tab, and then choose your preferred theme: **Light** or **Dark**.
**Light**:
![Light theme](https://github.com/netdata/netdata/assets/70198089/eb0fb8c1-5695-450a-8ba8-a185874e8496)

View file

@ -6,7 +6,7 @@ They can be used to retrieve additional information to help you troubleshoot or
> **Tip**
>
> You can also execute a Function from the [Nodes tab](/docs/dashboards-and-charts/nodes-tab.md), by pressing the `f(x)` button.
>
> **Note**
>
> If you get an error saying that your node can't execute Functions please check the [prerequisites](/docs/top-monitoring-netdata-functions.md#prerequisites).

View file

@ -77,7 +77,7 @@ To edit `stream.conf`, use again the [edit-config](/docs/netdata-agent/configura
#### Parent config
For the Parent, besides setting up streaming, this example also provides configuration for multiple [tiers of metrics storage](/docs/netdata-agent/configuration/optimizing-metrics-database/change-metrics-storage.md#calculate-the-system-resources-ram-disk-space-needed-to-store-metrics), for 10 Children, with about 2k metrics each. This allows for:
For the Parent, besides setting up streaming, this example also provides configuration for multiple [tiers of metrics storage](/docs/netdata-agent/configuration/optimizing-metrics-database/change-metrics-storage.md), for 10 Children, with about 2k metrics each. This allows for:
- 1s granularity at tier 0 for 1 week
- 1m granularity at tier 1 for 1 month

View file

@ -1,3 +1,3 @@
# Developer and Contributor Corner
In this section of our Documentation you will find more advanced information, suited for developers and contributors alike.
In this section of our Documentation you will find more advanced information, suited for developers and contributors alike.

View file

@ -1,3 +1,3 @@
# Build the Netdata Agent yourself
This section contains documentation on all the ways that you can build the Netdata Agent.
This section contains documentation on all the ways that you can build the Netdata Agent.

View file

@ -81,18 +81,13 @@ jobs:
log_type: auto
```
Restart Netdata with `sudo systemctl restart netdata`, or the [appropriate
method](/docs/netdata-agent/start-stop-restart.md)) for your system. Netdata should pick up your web server's access log and
begin showing real-time charts!
Restart Netdata with `sudo systemctl restart netdata`, or the [appropriate method](/docs/netdata-agent/start-stop-restart.md) for your system. Netdata should pick up your web server's access log and begin showing real-time charts!
### Custom log formats and fields
The web log collector is capable of parsing custom Nginx and Apache log formats and presenting them as charts, but we'll
leave that topic for a separate guide.
The web log collector is capable of parsing custom Nginx and Apache log formats and presenting them as charts, but we'll leave that topic for a separate guide.
We do have [extensive
documentation](/src/go/plugin/go.d/modules/weblog/README.md#custom-log-format) on how
to build custom parsing for Nginx and Apache logs.
We do have [extensive documentation](/src/go/plugin/go.d/modules/weblog/README.md) on how to build custom parsing for Nginx and Apache logs.
## Tweak web log collector alerts
@ -100,7 +95,7 @@ Over time, we've created some default alerts for web log monitoring. These alert
web server is receiving more than 120 requests per minute. Otherwise, there's simply not enough data to make conclusions
about what is "too few" or "too many."
- [web log alerts](https://raw.githubusercontent.com/netdata/netdata/master/src/health/health.d/web_log.conf).
- [web log alerts](https://raw.githubusercontent.com/netdata/netdata/master/src/health/health.d/web_log.conf).
You can also edit this file directly with `edit-config`:
@ -108,5 +103,5 @@ You can also edit this file directly with `edit-config`:
./edit-config health.d/weblog.conf
```
For more information about editing the defaults or writing new alert entities, see our
For more information about editing the defaults or writing new alert entities, see our
[health monitoring documentation](/src/health/README.md).

View file

@ -137,5 +137,3 @@ Now that you're collecting metrics from your Unbound servers, let us know how it
for improvement or refinement based on real-world use cases. Feel free to [file an
issue](https://github.com/netdata/netdata/issues/new?assignees=&labels=bug%2Cneeds+triage&template=BUG_REPORT.yml) with your
thoughts.

View file

@ -1,15 +1,15 @@
# Customize the standard dashboard
> ### Disclaimer
> **Disclaimer**
>
> This document is only applicable to the v1 version of the dashboard and doesn't affect the [Netdata Dashboard](/docs/dashboards-and-charts/README.md).
While the [Netdata dashboard](/src/web/gui/README.md) comes preconfigured with hundreds of charts and
While the [Netdata dashboard](/src/web/gui/README.md) comes pre-configured with hundreds of charts and
thousands of metrics, you may want to alter your experience based on a particular use case or preferences.
## Dashboard settings
To change dashboard settings, click the on the **settings** icon
To change dashboard settings, click the on the **settings** icon
![Import icon](https://raw.githubusercontent.com/netdata/netdata-ui/98e31799c1ec0983f433537ff16d2ac2b0d994aa/src/components/icon/assets/gear.svg)
in the top panel.
@ -21,10 +21,9 @@ Here are a few popular settings:
### Change chart legend position
Find this setting under the **Visual** tab. By default, Netdata places the legend of dimensions _below_ charts.
Find this setting under the **Visual** tab. By default, Netdata places the legend of dimensions _below_ charts.
Click this toggle to move the legend to the _right_ of charts.
### Change theme
Find this setting under the **Visual** tab. Choose between Dark (the default) and White.
@ -72,4 +71,4 @@ the following line to the `[web]` section to tell Netdata where to find your cus
custom dashboard_info.js = your_dashboard_info_file.js
```
Reload your browser tab to see your custom configuration.
Reload your browser tab to see your custom configuration.

View file

@ -19,7 +19,7 @@ troubleshoot issues with your cluster.
Some k8s providers, like GKE (Google Kubernetes Engine), do deploy clusters bundled with monitoring capabilities, such
as Google Stackdriver Monitoring. However, these pre-configured solutions might not offer the depth of metrics,
customization, or integration with your preferred alerting methods.
customization, or integration with your preferred alerting methods.
Without this visibility, it's like you built an entire house and _then_ smashed your way through the finished walls to
add windows.
@ -35,15 +35,15 @@ navigation and best practices are the same for every cluster.
To follow this tutorial, you need:
- A free Netdata Cloud account. [Sign up](https://app.netdata.cloud/sign-up?cloudRoute=/spaces) if you don't have one
- A free Netdata Cloud account. [Sign up](https://app.netdata.cloud/sign-up?cloudRoute=/spaces) if you don't have one
already.
- A working cluster running Kubernetes v1.9 or newer, with a Netdata deployment and connected parent/child nodes. See
- A working cluster running Kubernetes v1.9 or newer, with a Netdata deployment and connected parent/child nodes. See
our [Kubernetes deployment process](/packaging/installer/methods/kubernetes.md) for details on deployment and
conneting to Cloud.
- The [`kubectl`](https://kubernetes.io/docs/reference/kubectl/overview/) command line tool, within [one minor version
connecting to Cloud.
- The [`kubectl`](https://kubernetes.io/docs/reference/kubectl/overview/) command line tool, within [one minor version
difference](https://kubernetes.io/docs/tasks/tools/install-kubectl/#before-you-begin) of your cluster, on an
administrative system.
- The [Helm package manager](https://helm.sh/) v3.0.0 or newer on the same administrative system.
- The [Helm package manager](https://helm.sh/) v3.0.0 or newer on the same administrative system.
### Install the `robot-shop` demo (optional)
@ -112,7 +112,6 @@ cluster](https://user-images.githubusercontent.com/1153921/109042169-19c8fa00-76
For example, the chart above shows a spike in the CPU utilization from `rabbitmq` every minute or so, along with a
baseline CPU utilization of 10-15% across the cluster.
## Pod and container metrics
Click on the **Kubernetes xxxxxxx...** section to jump down to Netdata Cloud's unique Kubernetes visualizations for view
@ -233,5 +232,3 @@ clusters of all sizes.
- [Netdata Agent · `kube-proxy`
collector](/src/go/plugin/go.d/modules/k8s_kubeproxy/README.md)
- [Netdata Agent · `cgroups.plugin`](/src/collectors/cgroups.plugin/README.md)

View file

@ -104,8 +104,7 @@ GRANT USAGE, REPLICATION CLIENT, PROCESS ON *.* TO 'netdata'@'localhost';
FLUSH PRIVILEGES;
```
Run `sudo systemctl restart netdata`, or the [appropriate alternative for your
system](/packaging/installer/README.md#maintaining-a-netdata-agent-installation), to collect dozens of metrics every second for robust MySQL monitoring.
Run `sudo systemctl restart netdata`, or the [appropriate alternative for your system](/docs/netdata-agent/start-stop-restart.md), to collect dozens of metrics every second for robust MySQL monitoring.
## Enable PHP monitoring

View file

@ -60,8 +60,7 @@ dev: custom-app
...
```
Restart Netdata with `sudo systemctl restart netdata`, or the [appropriate
method](/packaging/installer/README.md#maintaining-a-netdata-agent-installation) for your system, to begin seeing metrics for this particular
Restart Netdata with `sudo systemctl restart netdata`, or the [appropriate method](/docs/netdata-agent/start-stop-restart.md) for your system, to begin seeing metrics for this particular
group+process. You can also add additional processes to the same group.
You can set up `apps_groups.conf` to more show more precise eBPF metrics for any application or service running on your
@ -109,8 +108,7 @@ Replace `entry` with `return`:
network viewer = yes
```
Restart Netdata with `sudo systemctl restart netdata`, or the [appropriate
method](/packaging/installer/README.md#maintaining-a-netdata-agent-installation) for your system.
Restart Netdata with `sudo systemctl restart netdata`, or the [appropriate method](/docs/netdata-agent/start-stop-restart.md) for your system.
## Get familiar with per-application eBPF metrics and charts
@ -139,7 +137,7 @@ In these charts, you can see first a spike in syscalls to open and close files f
followed by a similar spike from the Apache benchmark.
> 👋 Don't forget that you can view chart data directly via Netdata's API!
>
>
> For example, open your browser and navigate to `http://NODE:19999/api/v1/data?chart=apps.file_open`, replacing `NODE`
> with the IP address or hostname of your Agent. The API returns JSON of that chart's dimensions and metrics, which you
> can use in other operations.
@ -245,10 +243,7 @@ Once you've added one or more nodes to a Space in Netdata Cloud, you can see agg
dashboard under the same **Applications** or **eBPF** sections that you
find on the local Agent dashboard. Or, [create new dashboards](/docs/dashboards-and-charts/dashboards-tab.md) using eBPF metrics
from any number of distributed nodes to see how your application interacts with multiple Linux kernels on multiple Linux
systems.
systems.
Now that you can see eBPF metrics in Netdata Cloud, you can [invite your
team](/docs/netdata-cloud/organize-your-infrastructure-invite-your-team.md#invite-your-team) and share your findings with others.

View file

@ -27,8 +27,8 @@ alternative, like the guide available from
For more specifics on the collection modules used in this guide, read the respective pages in our documentation:
- [HDFS](/src/go/plugin/go.d/modules/hdfs/README.md)
- [Zookeeper](/src/go/plugin/go.d/modules/zookeeper/README.md)
- [HDFS](/src/go/plugin/go.d/modules/hdfs/README.md)
- [Zookeeper](/src/go/plugin/go.d/modules/zookeeper/README.md)
## Set up your HDFS and Zookeeper installations
@ -164,7 +164,7 @@ jobs:
address : 203.0.113.10:2182
```
Finally, [restart Netdata](/packaging/installer/README.md#maintaining-a-netdata-agent-installation).
Finally, [restart Netdata](/docs/netdata-agent/start-stop-restart.md).
```sh
sudo systemctl restart netdata
@ -178,7 +178,7 @@ showing real-time metrics for both in your Netdata dashboard. 🎉
The Netdata community helped us create sane defaults for alerts related to both HDFS and Zookeeper. You may want to
investigate these to ensure they work well with your Hadoop implementation.
- [HDFS alerts](https://raw.githubusercontent.com/netdata/netdata/master/src/health/health.d/hdfs.conf)
- [HDFS alerts](https://raw.githubusercontent.com/netdata/netdata/master/src/health/health.d/hdfs.conf)
You can also access/edit these files directly with `edit-config`:
@ -187,5 +187,4 @@ sudo /etc/netdata/edit-config health.d/hdfs.conf
sudo /etc/netdata/edit-config health.d/zookeeper.conf
```
For more information about editing the defaults or writing new alert entities, see our
[health monitoring documentation](/src/health/README.md).
For more information about editing the defaults or writing new alert entities, see our [health monitoring documentation](/src/health/README.md).

View file

@ -1,8 +1,8 @@
# Develop a custom data collector in Python
The Netdata Agent uses [data collectors](/src/collectors/README.md) to
fetch metrics from hundreds of system, container, and service endpoints. While the Netdata team and community has built
[powerful collectors](/src/collectors/COLLECTORS.md) for most system, container,
The Netdata Agent uses [data collectors](/src/collectors/README.md) to
fetch metrics from hundreds of system, container, and service endpoints. While the Netdata team and community has built
[powerful collectors](/src/collectors/COLLECTORS.md) for most system, container,
and service/application endpoints, some custom applications can't be monitored by default.
In this tutorial, you'll learn how to leverage the [Python programming language](https://www.python.org/) to build a
@ -17,16 +17,16 @@ execute. Python plugins require Python on the machine to be executed. Netdata us
production-grade collectors.
We generally do not accept contributions of Python modules to the GitHub project netdata/netdata. If you write a Python collector and
want to make it available for other users, you should create the pull request in https://github.com/netdata/community.
want to make it available for other users, you should create the pull request in <https://github.com/netdata/community>.
## What you need to get started
- A physical or virtual Linux system, which we'll call a _node_.
- A working [installation of Netdata](/packaging/installer/README.md) monitoring agent.
- A physical or virtual Linux system, which we'll call a _node_.
- A working [installation of Netdata](/packaging/installer/README.md) monitoring agent.
### Quick start
For a quick start, you can look at the
For a quick start, you can look at the
[example plugin](https://raw.githubusercontent.com/netdata/netdata/master/src/collectors/python.d.plugin/example/example.chart.py).
**Note**: If you are working 'locally' on a new collector and would like to run it in an already installed and running
@ -72,21 +72,21 @@ The basic elements of a Netdata collector are:
- `data{}`: A dictionary containing the values to be displayed.
- `get_data()`: The basic function of the plugin which will return to Netdata the correct values.
**Note**: All names are better explained in the
**Note**: All names are better explained in the
[External Plugins Documentation](/src/plugins.d/README.md).
Parameters like `priority` and `update_every` mentioned in that documentation are handled by the `python.d.plugin`,
not by each collection module.
not by each collection module.
Let's walk through these jobs and elements as independent elements first, then apply them to example Python code.
### Determine how to gather metrics data
Netdata can collect data from any program that can print to stdout. Common input sources for collectors can be logfiles,
Netdata can collect data from any program that can print to stdout. Common input sources for collectors can be log files,
HTTP requests, executables, and more. While this tutorial will offer some example inputs, your custom application will
have different inputs and metrics.
A great deal of the work in developing a Netdata collector is investigating the target application and understanding
which metrics it exposes and how to
which metrics it exposes and how to
### Create charts
@ -117,13 +117,14 @@ context, charttype]`, where:
that is `A.B`, with `A` being the name of the collector, and `B` being the name of the specific metric.
- `charttype`: Either `line`, `area`, or `stacked`. If null line is the default value.
You can read more about `family` and `context` in the [web dashboard](/src/web/README.md#families) doc.
You can read more about `family` and `context` in the [Netdata Charts](/docs/dashboards-and-charts/netdata-charts.md) doc.
Once the chart has been defined, you should define the dimensions of the chart. Dimensions are basically the metrics to
be represented in this chart and each chart can have more than one dimension. In order to define the dimensions, the
"lines" list should be filled in with the required dimensions. Each dimension is a list:
`dimension: [id, name, algorithm, multiplier, divisor]`
- `id` : The id of the dimension. Mandatory unique field (string) required in order to set a value.
- `name`: The name to be presented in the chart. If null id will be used.
- `algorithm`: Can be absolute or incremental. If null absolute is used. Incremental shows the difference from the
@ -145,6 +146,7 @@ Once you have process your data and get the required values, you need to assign
This is done using the `data` dictionary, which is in the form:
`"data": {dimension_id: value }`, where:
- `dimension_id`: The id of a defined dimension in a created chart.
- `value`: The numerical value to associate with this dimension.
@ -153,6 +155,7 @@ This is done using the `data` dictionary, which is in the form:
Next, set the order of chart appearance with the `ORDER` list, which is in the form:
`"ORDER": [chart_name_1,chart_name_2, …., chart_name_X]`, where:
- `chart_name_x`: is the chart name to be shown in X order.
### Give the charts data to Netdata for visualization
@ -160,19 +163,19 @@ Next, set the order of chart appearance with the `ORDER` list, which is in the f
Our plugin should just rerun the data dictionary. If everything is set correctly the charts should be updated with the
correct values.
## Framework classes
## Framework classes
Every module needs to implement its own `Service` class. This class should inherit from one of the framework classes:
- `SimpleService`
- `UrlService`
- `SocketService`
- `LogService`
- `ExecutableService`
- `SimpleService`
- `UrlService`
- `SocketService`
- `LogService`
- `ExecutableService`
Also it needs to invoke the parent class constructor in a specific way as well as assign global variables to class variables.
Also it needs to invoke the parent class constructor in a specific way as well as assign global variables to class variables.
For example, the snippet below is from the
For example, the snippet below is from the
[RabbitMQ collector](https://github.com/netdata/netdata/blob/91f3268e9615edd393bd43de4ad8068111024cc9/collectors/python.d.plugin/rabbitmq/rabbitmq.chart.py#L273).
This collector uses an HTTP endpoint and uses the `UrlService` framework class, which only needs to define an HTTP
endpoint for data collection.
@ -229,10 +232,11 @@ CHARTS = {
## Parse the data to extract or create the actual data to be represented
Every collector must implement `_get_data`. This method should grab raw data from `_get_raw_data`,
Every collector must implement `_get_data`. This method should grab raw data from `_get_raw_data`,
parse it, and return a dictionary where keys are unique dimension names, or `None` if no data is collected.
For example:
```py
def _get_data(self):
try:
@ -374,7 +378,7 @@ class Service(SimpleService):
To enrich the example, add another chart the collector which to present the humidity metric.
Add a new entry in the `CHARTS` dictionary with the definition for the new chart.
Add a new entry in the `CHARTS` dictionary with the definition for the new chart.
```python
CHARTS = {
@ -410,7 +414,7 @@ ORDER = [
]
```
[Restart Netdata](/packaging/installer/README.md#maintaining-a-netdata-agent-installation) with `sudo systemctl restart netdata` to see the new humidity
[Restart Netdata](/docs/netdata-agent/start-stop-restart.md) to see the new humidity
chart:
![A snapshot of the modified chart](https://i.imgur.com/XOeCBmg.png)
@ -467,8 +471,7 @@ ORDER = [
]
```
[Restart Netdata](/packaging/installer/README.md#maintaining-a-netdata-agent-installation) with `sudo systemctl restart netdata` to see the new
min/max/average temperature chart with multiple dimensions:
[Restart Netdata](/docs/netdata-agent/start-stop-restart.md) to see the new min/max/average temperature chart with multiple dimensions:
![A snapshot of the modified chart](https://i.imgur.com/g7E8lnG.png)
@ -485,7 +488,7 @@ configuration in [YAML](https://www.tutorialspoint.com/yaml/yaml_basics.htm) for
serially and will stop at the first job that returns data. If multiple jobs have the same name, only one of them can
run. This enables you to define different "ways" to fetch data from a particular data source so that the collector has
more chances to work out-of-the-box. For example, if the data source supports both `HTTP` and `linux socket`, you can
define 2 jobs named `local`, with each using a different method.
define 2 jobs named `local`, with each using a different method.
- Check the `example` collector configuration file on
[GitHub](https://github.com/netdata/netdata/blob/master/src/collectors/python.d.plugin/example/example.conf) to get a
sense of the structure.
@ -521,26 +524,26 @@ variables and inform the user about the defaults. For example, take a look at th
[GitHub](https://github.com/netdata/netdata/blob/master/src/collectors/python.d.plugin/example/example.conf).
You can read more about the configuration file on the [`python.d.plugin`
documentation](/src/collectors/python.d.plugin/README.md).
documentation](/src/collectors/python.d.plugin/README.md).
You can find the source code for the above examples on [GitHub](https://github.com/papajohn-uop/netdata).
You can find the source code for the above examples on [GitHub](https://github.com/papajohn-uop/netdata).
## Pull Request Checklist for Python Plugins
Pull requests should be created in https://github.com/netdata/community.
Pull requests should be created in <https://github.com/netdata/community>.
This is a generic checklist for submitting a new Python plugin for Netdata. It is by no means comprehensive.
At minimum, to be buildable and testable, the PR needs to include:
- The module itself, following proper naming conventions: `collectors/python.d.plugin/<module_dir>/<module_name>.chart.py`
- A README.md file for the plugin under `collectors/python.d.plugin/<module_dir>`.
- The configuration file for the module: `collectors/python.d.plugin/<module_dir>/<module_name>.conf`. Python config files are in YAML format, and should include comments describing what options are present. The instructions are also needed in the configuration section of the README.md
- A basic configuration for the plugin in the appropriate global config file: `collectors/python.d.plugin/python.d.conf`, which is also in YAML format. Either add a line that reads `# <module_name>: yes` if the module is to be enabled by default, or one that reads `<module_name>: no` if it is to be disabled by default.
- A makefile for the plugin at `collectors/python.d.plugin/<module_dir>/Makefile.inc`. Check an existing plugin for what this should look like.
- A line in `collectors/python.d.plugin/Makefile.am` including the above-mentioned makefile. Place it with the other plugin includes (please keep the includes sorted alphabetically).
- Optionally, chart information in `src/web/gui/dashboard_info.js`. This generally involves specifying a name and icon for the section, and may include descriptions for the section or individual charts.
- Optionally, some default alert configurations for your collector in `health/health.d/<module_name>.conf` and a line adding `<module_name>.conf` in `health/Makefile.am`.
- The module itself, following proper naming conventions: `collectors/python.d.plugin/<module_dir>/<module_name>.chart.py`
- A README.md file for the plugin under `collectors/python.d.plugin/<module_dir>`.
- The configuration file for the module: `collectors/python.d.plugin/<module_dir>/<module_name>.conf`. Python config files are in YAML format, and should include comments describing what options are present. The instructions are also needed in the configuration section of the README.md
- A basic configuration for the plugin in the appropriate global config file: `collectors/python.d.plugin/python.d.conf`, which is also in YAML format. Either add a line that reads `# <module_name>: yes` if the module is to be enabled by default, or one that reads `<module_name>: no` if it is to be disabled by default.
- A makefile for the plugin at `collectors/python.d.plugin/<module_dir>/Makefile.inc`. Check an existing plugin for what this should look like.
- A line in `collectors/python.d.plugin/Makefile.am` including the above-mentioned makefile. Place it with the other plugin includes (please keep the includes sorted alphabetically).
- Optionally, chart information in `src/web/gui/dashboard_info.js`. This generally involves specifying a name and icon for the section, and may include descriptions for the section or individual charts.
- Optionally, some default alert configurations for your collector in `health/health.d/<module_name>.conf` and a line adding `<module_name>.conf` in `health/Makefile.am`.
## Framework class reference
@ -567,11 +570,11 @@ Example: `ceph`, `sensors`
It is the lowest-level class which implements most of module logic, like:
- threading
- handling run times
- chart formatting
- logging
- chart creation and updating
- threading
- handling run times
- chart formatting
- logging
- chart creation and updating
### `LogService`
@ -589,11 +592,11 @@ Variable from config file: `command`.
This allows to execute a shell command in a secure way. It will check for invalid characters in `command` variable and won't proceed if there is one of:
- '&'
- '|'
- ';'
- '>'
- '\<'
- '&'
- '|'
- ';'
- '>'
- '\<'
For additional security it uses python `subprocess.Popen` (without `shell=True` option) to execute command. Command can be specified with absolute or relative name. When using relative name, it will try to find `command` in `PATH` environment variable as well as in `/sbin` and `/usr/sbin`.

View file

@ -102,7 +102,7 @@ You can edit the configuration file using the `edit-config` script from the Netd
destination = tcp:127.0.0.1:19999
```
[Restart the Agents](/packaging/installer/README.md#maintaining-a-netdata-agent-installation), and you are done!
[Restart the Agents](/docs/netdata-agent/start-stop-restart.md), and you are done!
You should now be able to have a Local Dashboard that gets its metrics from Child instances, running through Cloudflare tunnels.

View file

@ -2,7 +2,7 @@
The _Netdata style guide_ establishes editorial guidelines for any writing produced by the Netdata team or the Netdata community, including documentation, articles, in-product UX copy, and more.
> ### Note
> **Note**
> This document is meant to be accompanied by the [Documentation Guidelines](/docs/guidelines.md). If you want to contribute to Netdata's documentation, please read it too.
Both internal Netdata teams and external contributors to any of Netdata's open-source projects should reference and adhere to this style guide as much as possible.
@ -30,7 +30,6 @@ you're around. In writing, you reflect tone in your word choice, punctuation, se
The same idea about voice and tone applies to organizations, too. Our voice shouldn't change much between two pieces of
content, no matter who wrote each, but the tone might be quite different based on who we think is reading.
### Voice
Netdata's voice is authentic, passionate, playful, and respectful.
@ -63,7 +62,7 @@ the [language, grammar, and mechanics](#language-grammar-and-mechanics) section
- Would this language make sense to someone who doesn't work here?
- Could someone quickly scan this document and understand the material?
- Create an information hierarchy with key information presented first and clearly called out to improve scannability.
- Create an information hierarchy with key information presented first and clearly called out to improve clarity and readability.
- Avoid directional language like "sidebar on the right of the page" or "header at the top of the page" since
presentation elements may adapt for devices.
- Use descriptive links rather than "click here" or "learn more".
@ -236,8 +235,8 @@ must reflect the _current state of [production](https://app.netdata.cloud).
Every link should clearly state its destination. Don't use words like "here" to describe where a link will take your
reader.
| | |
|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------|
| | |
|-----------------|-------------------------------------------------------------------------------------------|
| Not recommended | To install Netdata, click [here](/packaging/installer/README.md). |
| **Recommended** | To install Netdata, read the [installation instructions](/packaging/installer/README.md). |
@ -300,9 +299,9 @@ universal.
Don't include full paths, beginning from the system's root (`/`), as these might not work on certain systems.
| | |
|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Not recommended | Use `edit-config` to edit Netdata's configuration: `sudo /etc/netdata/edit-config netdata.conf`. |
| | |
|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Not recommended | Use `edit-config` to edit Netdata's configuration: `sudo /etc/netdata/edit-config netdata.conf`. |
| **Recommended** | Use `edit-config` to edit Netdata's configuration by first navigating to your [Netdata config directory](/docs/netdata-agent/configuration/README.md#the-netdata-config-directory), which is typically at `/etc/netdata`, then running `sudo edit-config netdata.conf`. |
### `sudo`
@ -394,27 +393,26 @@ the [Docusaurus documentation](https://v2.docusaurus.io/docs/markdown-features#c
Notes inside files should render properly both in GitHub and in Learn, to do that, it is best to use the format listed below:
```
> ### Note
```md
> **Note**
> This is an info or a note block.
> ### Tip, Best Practice
> **Tip, Best Practice**
> This is a tip or a best practice block.
> ### Warning, Caution
> **Warning, Caution**
> This is a warning or a caution block.
```
Which renders into:
> ### Note
> **Note**
> This is an info or a note block.
> ### Tip, Best Practice
> **Tip, Best Practice**
> This is a tip or a best practice block.
> ### Warning, Caution
> **Warning, Caution**
> This is a warning or a caution block.
### Tabs
@ -450,21 +448,21 @@ The following tables describe the standard spelling, capitalization, and usage o
| Term | Definition |
|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **claimed node** | A node that you've proved ownership of by completing the [connecting to Cloud process](/src/claim/README.md). The claimed node will then appear in your Space and any Rooms you added it to. |
| **Connected Node** | A node that you've proved ownership of by completing the [connecting to Cloud process](/src/claim/README.md). The claimed node will then appear in your Space and any Rooms you added it to. |
| **Netdata** | The company behind the open-source Netdata Agent and the Netdata Cloud web application. Never use _netdata_ or _NetData_. <br /><br />In general, focus on the user's goals, actions, and solutions rather than what the company provides. For example, write _Learn more about enabling alert notifications on your preferred platforms_ instead of _Netdata sends alert notifications to your preferred platforms_. |
| **Netdata Agent** | The free and open source [monitoring agent](https://github.com/netdata/netdata) that you can install on all of your distributed systems, whether they're physical, virtual, containerized, ephemeral, and more. The Agent monitors systems running Linux, Docker, Kubernetes, macOS, FreeBSD, and more, and collects metrics from hundreds of popular services and applications. |
| **Netdata Cloud** | The web application hosted at [https://app.netdata.cloud](https://app.netdata.cloud) that helps you monitor an entire infrastructure of distributed systems in real time. <br /><br />Never use _Cloud_ without the preceding _Netdata_ to avoid ambiguity. |
| **Netdata community forum** | The Discourse-powered forum for feature requests, Netdata Cloud technical support, and conversations about Netdata's monitoring and troubleshooting products. |
| **node** | A system on which the Netdata Agent is installed. The system can be physical, virtual, in a Docker container, and more. Depending on your infrastructure, you may have one, dozens, or hundreds of nodes. Some nodes are _ephemeral_, in that they're created/destroyed automatically by an orchestrator service. |
| **Node** | A system on which the Netdata Agent is installed. The system can be physical, virtual, in a Docker container, and more. Depending on your infrastructure, you may have one, dozens, or hundreds of nodes. Some nodes are _ephemeral_, in that they're created/destroyed automatically by an orchestrator service. |
| **Space** | The highest level container within Netdata Cloud for a user to organize their team members and nodes within their infrastructure. A Space likely represents an entire organization or a large team. <br /><br />_Space_ is always capitalized. |
| **unreachable node** | A connected node with a disrupted [Agent-Cloud link](/src/aclk/README.md). Unreachable could mean the node no longer exists or is experiencing network connectivity issues with Cloud. |
| **visited node** | A node which has had its Agent dashboard directly visited by a user. A list of these is maintained on a per-user basis. |
| **Room** | A smaller grouping of nodes where users can view key metrics in real-time and monitor the health of many nodes with their alert status. Rooms can be used to organize nodes in any way that makes sense for your infrastructure, such as by a service, purpose, physical location, and more. <br /><br />_Room_ is always capitalized. |
| **Unreachable node** | A connected node with a disrupted [Agent-Cloud link](/src/aclk/README.md). Unreachable could mean the node no longer exists or is experiencing network connectivity issues with Cloud. |
| **Visited Node** | A node which has had its Agent dashboard directly visited by a user. A list of these is maintained on a per-user basis. |
| **Room** | A smaller grouping of nodes where users can view key metrics in real-time and monitor the health of many nodes with their alert status. Rooms can be used to organize nodes in any way that makes sense for your infrastructure, such as by a service, purpose, physical location, and more. <br /><br />_Room_ is always capitalized. |
### Other technical terms
| Term | Definition |
|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **filesystem** | Use instead of _file system_. |
| **preconfigured** | The concept that many of Netdata's features come with sane defaults that users don't need to configure to find immediate value. |
| **pre-configured** | The concept that many of Netdata's features come with sane defaults that users don't need to configure to find immediate value. |
| **real time**/**real-time** | Use _real time_ as a noun phrase, most often with _in_: _Netdata collects metrics in real time_. Use _real-time_ as an adjective: _Netdata collects real-time metrics from hundreds of supported applications and services. |

View file

@ -3,7 +3,7 @@
Netdata allows you to export metrics to external time-series databases with the [exporting
engine](/src/exporting/README.md). This system uses a number of **connectors** to initiate connections to [more than
thirty](#supported-databases) supported databases, including InfluxDB, Prometheus, Graphite, ElasticSearch, and much
more.
more.
The exporting engine resamples Netdata's thousands of per-second metrics at a user-configurable interval, and can export
metrics to multiple time-series databases simultaneously.
@ -22,45 +22,45 @@ Netdata supports exporting metrics to the following databases through several
[connectors](/src/exporting/README.md#features). Once you find the connector that works for your database, open its
documentation and the [enabling a connector](/docs/exporting-metrics/enable-an-exporting-connector.md) doc for details on enabling it.
- **AppOptics**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **AWS Kinesis**: [AWS Kinesis Data Streams](/src/exporting/aws_kinesis/README.md)
- **Azure Data Explorer**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Azure Event Hubs**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Blueflood**: [Graphite](/src/exporting/graphite/README.md)
- **Chronix**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Cortex**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **CrateDB**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **ElasticSearch**: [Graphite](/src/exporting/graphite/README.md), [Prometheus remote
- **AppOptics**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **AWS Kinesis**: [AWS Kinesis Data Streams](/src/exporting/aws_kinesis/README.md)
- **Azure Data Explorer**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Azure Event Hubs**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Blueflood**: [Graphite](/src/exporting/graphite/README.md)
- **Chronix**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Cortex**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **CrateDB**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **ElasticSearch**: [Graphite](/src/exporting/graphite/README.md), [Prometheus remote
write](/src/exporting/prometheus/remote_write/README.md)
- **Gnocchi**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Google BigQuery**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Google Cloud Pub/Sub**: [Google Cloud Pub/Sub Service](/src/exporting/pubsub/README.md)
- **Graphite**: [Graphite](/src/exporting/graphite/README.md), [Prometheus remote
- **Gnocchi**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Google BigQuery**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Google Cloud Pub/Sub**: [Google Cloud Pub/Sub Service](/src/exporting/pubsub/README.md)
- **Graphite**: [Graphite](/src/exporting/graphite/README.md), [Prometheus remote
write](/src/exporting/prometheus/remote_write/README.md)
- **InfluxDB**: [Graphite](/src/exporting/graphite/README.md), [Prometheus remote
- **InfluxDB**: [Graphite](/src/exporting/graphite/README.md), [Prometheus remote
write](/src/exporting/prometheus/remote_write/README.md)
- **IRONdb**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **JSON**: [JSON document databases](/src/exporting/json/README.md)
- **Kafka**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **KairosDB**: [Graphite](/src/exporting/graphite/README.md), [OpenTSDB](/src/exporting/opentsdb/README.md)
- **M3DB**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **MetricFire**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **MongoDB**: [MongoDB](/src/exporting/mongodb/README.md)
- **New Relic**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **OpenTSDB**: [OpenTSDB](/src/exporting/opentsdb/README.md), [Prometheus remote
- **IRONdb**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **JSON**: [JSON document databases](/src/exporting/json/README.md)
- **Kafka**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **KairosDB**: [Graphite](/src/exporting/graphite/README.md), [OpenTSDB](/src/exporting/opentsdb/README.md)
- **M3DB**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **MetricFire**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **MongoDB**: [MongoDB](/src/exporting/mongodb/README.md)
- **New Relic**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **OpenTSDB**: [OpenTSDB](/src/exporting/opentsdb/README.md), [Prometheus remote
write](/src/exporting/prometheus/remote_write/README.md)
- **PostgreSQL**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **PostgreSQL**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
via [PostgreSQL Prometheus Adapter](https://github.com/CrunchyData/postgresql-prometheus-adapter)
- **Prometheus**: [Prometheus scraper](/src/exporting/prometheus/README.md)
- **TimescaleDB**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md),
- **Prometheus**: [Prometheus scraper](/src/exporting/prometheus/README.md)
- **TimescaleDB**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md),
[netdata-timescale-relay](/src/exporting/TIMESCALE.md)
- **QuasarDB**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **SignalFx**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Splunk**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **TiKV**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Thanos**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **VictoriaMetrics**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Wavefront**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **QuasarDB**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **SignalFx**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Splunk**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **TiKV**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Thanos**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **VictoriaMetrics**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
- **Wavefront**: [Prometheus remote write](/src/exporting/prometheus/remote_write/README.md)
Can't find your preferred external time-series database? Ask our [community](https://community.netdata.cloud/) for
solutions, or file an [issue on

View file

@ -6,7 +6,7 @@ As such, we want to provide a little Glossary as a reference starting point for
If you're here looking for the definition of a term you heard elsewhere in our community or products, or if you just want to learn Netdata from the ground up, you've come to the right page.
Use the alphabatized list below to find the answer to your single-term questions, and click the bolded list items to explore more on the topics! We'll be sure to keep constantly updating this list, so if you hear a word that you would like for us to cover, just let us know or submit a request!
Use the alphabetized list below to find the answer to your single-term questions, and click the bolded list items to explore more on the topics! We'll be sure to keep constantly updating this list, so if you hear a word that you would like for us to cover, just let us know or submit a request!
[A](#a) | [B](#b) | [C](#c) | [D](#d)| [E](#e) | [F](#f) | [G](#g) | [H](#h) | [I](#i) | [J](#j) | [K](#k) | [L](#l) | [M](#m) | [N](#n) | [O](#o) | [P](#p)
| [Q](#q) | [R](#r) | [S](#s) | [T](#t) | [U](#u) | [V](#v) | [W](#w) | [X](#x) | [Y](#y) | [Z](#z)
@ -65,7 +65,7 @@ Use the alphabatized list below to find the answer to your single-term questions
## G
- [**Group by**](/docs/dashboards-and-charts/netdata-charts.md#group-by-dimension-node-or-chart): The drop-down on the dimension bar of a composite chart that allows you to group metrics by dimension, node, or chart.
- [**Group by**](/docs/dashboards-and-charts/netdata-charts.md#group-by-dropdown): The drop-down on the dimension bar of a composite chart that allows you to group metrics by dimension, node, or chart.
- [**Health Configuration Files**](/src/health/REFERENCE.md#edit-health-configuration-files): Files that you can edit to configure your Agent's health watchdog service.
@ -110,7 +110,7 @@ metrics, troubleshoot complex performance problems, and make data interoperable
## O
- [**Obsoletion**(of nodes)](/docs/netdata-cloud/organize-your-infrastructure-invite-your-team.md#obsoleting-offline-nodes-from-a-space): Removing nodes from a space.
- [**Obsoletion**(of nodes)](/docs/dashboards-and-charts/nodes-tab.md): Removing nodes from a space.
- [**Orchestrators**](/src/collectors/README.md#collector-architecture-and-terminology): External plugins that run and manage one or more modules. They run as independent processes.
@ -145,8 +145,8 @@ even thousands of nodes. There are no actual bottlenecks especially if you retai
## V
- [**Visualizations**](/docs/category-overview-pages/visualizations-overview.md): Netdata uses dimensions, contexts, and families to sort your metric data into graphs, charts, and alerts that maximize your understand of your infrastructure and your ability to troubleshoot it, along or on a team.
- [**Visualizations**](/docs/dashboards-and-charts/README.md): Netdata uses dimensions, contexts, and families to sort your metric data into graphs, charts, and alerts that maximize your understand of your infrastructure and your ability to troubleshoot it, along or on a team.
## Z
- **Zero Configuration**: Netdata is preconfigured and capable to autodetect and monitor any well known application that runs on your system. You just deploy and claim Netdata Agents in your Netdata space, and monitor them in seconds.
- **Zero Configuration**: Netdata is pre-configured and capable to autodetect and monitor any well known application that runs on your system. You just deploy and claim Netdata Agents in your Netdata space, and monitor them in seconds.

View file

@ -49,7 +49,7 @@ Please ensure that any links to a different documentation resource are fully exp
e.g.
```
```txt
[Correct link to this document](/docs/guidelines.md)
vs
[Incorrect link to this document](https://learn.netdata.cloud/XYZ)

View file

@ -1,19 +1,18 @@
# Backing up a Netdata Agent
> **Note**
>
>
> Users are responsible for backing up, recovering, and ensuring their data's availability because Netdata stores data locally on each system due to its decentralized architecture.
## Introduction
When preparing to backup a Netdata Agent it is worth considering that there are different kinds of data that you may wish to backup independently or all together:
| Data type | Description | Location |
|---------------------|------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------|
| Data type | Description | Location |
|---------------------|------------------------------------------------------|-----------------------------------------------------------------|
| Agent configuration | Files controlling configuration of the Netdata Agent | [config directory](/docs/netdata-agent/configuration/README.md) |
| Metrics | Database files | /var/cache/netdata |
| Identity | Claim token, API key and some other files | /var/lib/netdata |
| Metrics | Database files | /var/cache/netdata |
| Identity | Claim token, API key and some other files | /var/lib/netdata |
## Scenarios
@ -30,11 +29,11 @@ In this standard scenario, you are backing up your Netdata Agent in case of a no
Backing up the Agent configuration and Identity folders is straightforward as they should not be changing very frequently.
3. Using a backup tool such as `tar` you will need to run the backup as _root_ or as the _netdata_ user to access all the files in the directories.
```
```bash
sudo tar -cvpzf netdata_backup.tar.gz /etc/netdata/ /var/cache/netdata /var/lib/netdata
```
Stopping the Netdata agent is typically necessary to back up the database files of the Netdata Agent.
If you want to minimize the gap in metrics caused by stopping the Netdata Agent, consider implementing a backup job or script that follows this sequence:
@ -50,21 +49,21 @@ If you want to minimize the gap in metrics caused by stopping the Netdata Agent,
If you plan to deploy the Agent and restore a backup on top of it, then you might find it helpful to use the [`--dont-start-it`](/packaging/installer/methods/kickstart.md#other-options) option upon installation.
```
```bash
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --dont-start-it
```
> **Note**
> If you are going to restore the database files then you should first ensure that the Metrics directory is empty.
>
> ```
>
> ```bash
> sudo rm -Rf /var/cache/netdata
> ```
2. Restore the backup from the archive
```
```bash
sudo tar -xvpzf /path/to/netdata_backup.tar.gz -C /
```
3. [Start the Netdata agent](/docs/netdata-agent/start-stop-restart.md))
3. [Start the Netdata agent](/docs/netdata-agent/start-stop-restart.md)

View file

@ -4,7 +4,7 @@ The main Netdata Agent configuration is `netdata.conf`.
## The Netdata config directory
On most Linux systems, by using our [recommended one-line installation](/packaging/installer/README.md#install-on-linux-with-one-line-installer), the **Netdata config
On most Linux systems, the **Netdata config
directory** will be `/etc/netdata/`. The config directory contains several configuration files with the `.conf` extension, a
few directories, and a shell script named `edit-config`.
@ -33,7 +33,7 @@ Your editor will open.
The running version of `netdata.conf` can be downloaded from a running Netdata Agent, at this URL:
```
```url
http://agent-ip:19999/netdata.conf
```

View file

@ -1,30 +1,22 @@
<!--
title: "Anonymous telemetry events"
custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/anonymous-telemetry-events.md
sidebar_label: "Anonymous telemetry events"
learn_status: "Published"
learn_rel_path: "Configuration"
-->
# Anonymous telemetry events
By default, Netdata collects anonymous usage information from the open-source monitoring agent. For agent events like start,stop,crash etc we use our own cloud function in GCP. For frontend telemetry (pageviews etc.) on the agent dashboard itself we use the open-source
By default, Netdata collects anonymous usage information from the open-source monitoring agent. For agent events like start,stop,crash etc we use our own cloud function in GCP. For frontend telemetry (page views etc.) on the agent dashboard itself we use the open-source
product analytics platform [PostHog](https://github.com/PostHog/posthog).
We are strongly committed to your [data privacy](https://netdata.cloud/privacy/).
We use the statistics gathered from this information for two purposes:
1. **Quality assurance**, to help us understand if Netdata behaves as expected, and to help us classify repeated
1. **Quality assurance**, to help us understand if Netdata behaves as expected, and to help us classify repeated
issues with certain distributions or environments.
2. **Usage statistics**, to help us interpret how people use the Netdata agent in real-world environments, and to help
2. **Usage statistics**, to help us interpret how people use the Netdata agent in real-world environments, and to help
us identify how our development/design decisions influence the community.
Netdata collects usage information via two different channels:
- **Agent dashboard**: We use the [PostHog JavaScript integration](https://posthog.com/docs/integrations/js-integration) (with sensitive event attributes overwritten to be anonymized) to send product usage events when you access an [Agent's dashboard](/docs/dashboards-and-charts/README.md).
- **Agent backend**: The `netdata` daemon executes the [`anonymous-statistics.sh`](https://github.com/netdata/netdata/blob/6469cf92724644f5facf343e4bdd76ac0551a418/daemon/anonymous-statistics.sh.in) script when Netdata starts, stops cleanly, or fails.
- **Agent dashboard**: We use the [PostHog JavaScript integration](https://posthog.com/docs/integrations/js-integration) (with sensitive event attributes overwritten to be anonymized) to send product usage events when you access an [Agent's dashboard](/docs/dashboards-and-charts/README.md).
- **Agent backend**: The `netdata` daemon executes the [`anonymous-statistics.sh`](https://github.com/netdata/netdata/blob/6469cf92724644f5facf343e4bdd76ac0551a418/daemon/anonymous-statistics.sh.in) script when Netdata starts, stops cleanly, or fails.
You can opt-out from sending anonymous statistics to Netdata through three different [opt-out mechanisms](#opt-out).
@ -55,25 +47,25 @@ Every time the daemon is started or stopped and every time a fatal condition is
statistics script to collect system information and send it to the Netdata telemetry cloud function via an http call. The information collected for all
events is:
- Netdata version
- OS name, version, id, id_like
- Kernel name, version, architecture
- Virtualization technology
- Containerization technology
- Netdata version
- OS name, version, id, id_like
- Kernel name, version, architecture
- Virtualization technology
- Containerization technology
Furthermore, the FATAL event sends the Netdata process & thread name, along with the source code function, source code
filename and source code line number of the fatal error.
Starting with v1.21, we additionally collect information about:
- Failures to build the dependencies required to use Cloud features.
- Unavailability of Cloud features in an agent.
- Failures to connect to the Cloud in case the [connection process](/src/claim/README.md) has been completed. This includes error codes
- Failures to build the dependencies required to use Cloud features.
- Unavailability of Cloud features in an agent.
- Failures to connect to the Cloud in case the [connection process](/src/claim/README.md) has been completed. This includes error codes
to inform the Netdata team about the reason why the connection failed.
To see exactly what and how is collected, you can review the script template `daemon/anonymous-statistics.sh.in`. The
template is converted to a bash script called `anonymous-statistics.sh`, installed under the Netdata `plugins
directory`, which is usually `/usr/libexec/netdata/plugins.d`.
directory`, which is usually `/usr/libexec/netdata/plugins.d`.
## Opt-out
@ -96,8 +88,6 @@ the anonymous statistics script inside of the container.
Each of these opt-out processes does the following:
- Prevents the daemon from executing the anonymous statistics script.
- Forces the anonymous statistics script to exit immediately.
- Stops the PostHog JavaScript snippet, which remains on the dashboard, from firing and sending any data to the Netdata PostHog.
- Prevents the daemon from executing the anonymous statistics script.
- Forces the anonymous statistics script to exit immediately.
- Stops the PostHog JavaScript snippet, which remains on the dashboard, from firing and sending any data to the Netdata PostHog.

View file

@ -2,7 +2,7 @@
Below you will find some of the most common actions that one can take while using Netdata. You can use this page as a quick reference for installing Netdata, connecting a node to the Cloud, properly editing the configuration, accessing Netdata's API, and more!
### Install Netdata
## Install Netdata
```bash
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh
@ -11,12 +11,12 @@ wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /
curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh
```
#### Connect a node to Netdata Cloud
### Connect a node to Netdata Cloud
To do so, sign in to Netdata Cloud, on your Space under the Nodes tab, click `Add Nodes` and paste the provided command into your nodes terminal and run it.
You can also copy the Claim token and pass it to the installation script with `--claim-token` and re-run it.
### Configuration
## Configuration
**Netdata's config directory** is `/etc/netdata/` but in some operating systems it might be `/opt/netdata/etc/netdata/`.
Look for the `# config directory =` line over at `http://NODE_IP:19999/netdata.conf` to find your config directory.
@ -25,51 +25,7 @@ From within that directory you can run `sudo ./edit-config netdata.conf` **to ed
You can edit other config files too, by specifying their filename after `./edit-config`.
You are expected to use this method in all following configuration changes.
<!-- #### Edit Netdata's other config files (examples):
- `$ sudo ./edit-config apps_groups.conf`
- `$ sudo ./edit-config ebpf.conf`
- `$ sudo ./edit-config health.d/load.conf`
- `$ sudo ./edit-config go.d/prometheus.conf`
#### View the running Netdata configuration: `http://NODE:19999/netdata.conf`
> Replace `NODE` with the IP address or hostname of your node. Often `localhost`.
## Metrics collection & retention
You can tweak your settings in the netdata.conf file.
📄 [Find your netdata.conf file](/src/daemon/config/README.md)
Open a new terminal and navigate to the netdata.conf file. Use the edit-config script to make changes: `sudo ./edit-config netdata.conf`
The most popular settings to change are:
#### Increase metrics retention (4GiB)
```
sudo ./edit-config netdata.conf
```
```
[global]
dbengine multihost disk space = 4096
```
#### Reduce the collection frequency (every 5 seconds)
```
sudo ./edit-config netdata.conf
```
```
[global]
update every = 5
``` -->
---
#### Enable/disable plugins (groups of collectors)
### Enable/disable plugins (groups of collectors)
```bash
sudo ./edit-config netdata.conf
@ -81,7 +37,7 @@ sudo ./edit-config netdata.conf
node.d = no # disabled
```
#### Enable/disable specific collectors
### Enable/disable specific collectors
```bash
sudo ./edit-config go.d.conf # edit a plugin's config
@ -93,20 +49,14 @@ modules:
cockroachdb: yes # enabled
```
#### Edit a collector's config
### Edit a collector's config
```bash
sudo ./edit-config go.d/mysql.conf
```
### Alerts & notifications
## Alerts & notifications
<!-- #### Add a new alert
```
sudo touch health.d/example-alert.conf
sudo ./edit-config health.d/example-alert.conf
``` -->
After any change, reload the Netdata health configuration:
```bash
@ -115,32 +65,23 @@ netdatacli reload-health
killall -USR2 netdata
```
#### Configure a specific alert
### Configure a specific alert
```bash
sudo ./edit-config health.d/example-alert.conf
```
#### Silence a specific alert
### Silence a specific alert
```bash
sudo ./edit-config health.d/example-alert.conf
```
```
```txt
to: silent
```
<!-- #### Disable alerts and notifications
```conf
[health]
enabled = no
``` -->
---
### Manage the daemon
## Manage the daemon
| Intent | Action |
|:----------------------------|------------------------------------------------------------:|
@ -151,65 +92,22 @@ sudo ./edit-config health.d/example-alert.conf
| View error logs | `less /var/log/netdata/error.log` |
| View collectors logs | `less /var/log/netdata/collector.log` |
#### Change the port Netdata listens to (example, set it to port 39999)
### Change the port Netdata listens to (example, set it to port 39999)
```conf
[web]
default port = 39999
```
### See metrics and dashboards
## See metrics and dashboards
#### Netdata Cloud: `https://app.netdata.cloud`
### Netdata Cloud: `https://app.netdata.cloud`
#### Local dashboard: `https://NODE:19999`
### Local dashboard: `https://NODE:19999`
> Replace `NODE` with the IP address or hostname of your node. Often `localhost`.
### Access the Netdata API
## Access the Netdata API
You can access the API like this: `http://NODE:19999/api/VERSION/REQUEST`.
If you want to take a look at all the API requests, check our API page at <https://learn.netdata.cloud/api>
<!--
## Interact with charts
| Intent | Action |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| Stop a chart from updating | `click` |
| Zoom | **Cloud** <br/> use the `zoom in` and `zoom out` buttons on any chart (upper right corner) <br/><br/> **Agent**<br/>`SHIFT` or `ALT` + `mouse scrollwheel` <br/> `SHIFT` or `ALT` + `two-finger pinch` (touchscreen) <br/> `SHIFT` or `ALT` + `two-finger scroll` (touchscreen) |
| Zoom to a specific timeframe | **Cloud**<br/>use the `select and zoom` button on any chart and then do a `mouse selection` <br/><br/> **Agent**<br/>`SHIFT` + `mouse selection` |
| Pan forward or back in time | `click` & `drag` <br/> `touch` & `drag` (touchpad/touchscreen) |
| Select a certain timeframe | `ALT` + `mouse selection` <br/> WIP need to evaluate this `command?` + `mouse selection` (macOS) |
| Reset to default auto refreshing state | `double click` | -->
<!-- ## Dashboards
#### Disable the local dashboard
Use the `edit-config` script to edit the `netdata.conf` file.
```
[web]
mode = none
``` -->
<!-- #### Opt out from anonymous statistics
```
sudo touch .opt-out-from-anonymous-statistics
``` -->
<!-- ## Understanding the dashboard
**Charts**: A visualization displaying one or more collected/calculated metrics in a time series. Charts are generated
by collectors.
**Dimensions**: Any value shown on a chart, which can be raw or calculated values, such as percentages, averages,
minimums, maximums, and more.
**Families**: One instance of a monitored hardware or software resource that needs to be monitored and displayed
separately from similar instances. Example, disks named
**sda**, **sdb**, **sdc**, and so on.
**Contexts**: A grouping of charts based on the types of metrics collected and visualized.
**disk.io**, **disk.ops**, and **disk.backlog** are all contexts. -->

View file

@ -52,7 +52,7 @@ for that specific module. Uncomment the line and change its value to `no`.
## Modify alerts and notifications
Netdata's health monitoring watchdog uses hundreds of preconfigured health entities, with intelligent thresholds, to
Netdata's health monitoring watchdog uses hundreds of pre-configured health entities, with intelligent thresholds, to
generate warning and critical alerts for most production systems and their applications without configuration. However,
each alert and notification method is completely customizable.
@ -107,7 +107,7 @@ section of `netdata.conf`.
### Enable alert notifications
Open `health_alarm_notify.conf` for editing. First, read the [enabling notifications](/docs/alerts-and-notifications/notifications/README.md#netdata-agent) doc
Open `health_alarm_notify.conf` for editing. First, read the [enabling notifications](/src/health/notifications/README.md) doc
for an example of the process using Slack, then
click on the link to your preferred notification method to find documentation for that specific endpoint.

View file

@ -11,7 +11,7 @@ The Dynamic Configuration Manager allows direct configuration of collectors and
> **Info**
>
> To understand what actions users can perform based on their role, refer to the [Role Based Access documentation](/docs/netdata-cloud/authentication-and-authorization/role-based-access-model.md#dynamic-configuration-manager).
> To understand what actions users can perform based on their role, refer to the [Role Based Access documentation](/docs/netdata-cloud/authentication-and-authorization/role-based-access-model.md#dynamic-configuration-manager).
## Collectors

View file

@ -88,8 +88,7 @@ require disk I/O may stop and show gaps in charts.
To optimize your disk footprint in any aspect described below you can:
To configure retention, you can:
To configure retention, you can:
1. [Change how long Netdata stores metrics](/docs/netdata-agent/configuration/optimizing-metrics-database/change-metrics-storage.md).
@ -97,7 +96,6 @@ To control disk I/O:
1. [Use a different metric storage database](/src/database/README.md),
Minimize deployment impact on the production system by optimizing disk footprint:
1. [Using streaming and replication](#use-streaming-and-replication)
@ -141,9 +139,9 @@ Open `netdata.conf` and scroll down to the `[plugins]` section. To disable any p
```conf
[plugins]
proc = yes
python.d = no
charts.d = no
go.d = yes
python.d = no
charts.d = no
go.d = yes
```
Disable specific collectors by opening their respective plugin configuration files, uncommenting the line for the
@ -160,8 +158,8 @@ For example, to disable a few Python collectors:
```conf
modules:
apache: no
dockerd: no
fail2ban: no
dockerd: no
fail2ban: no
```
## Reduce collection frequency
@ -263,4 +261,3 @@ Or to lower the default compression level:
enable gzip compression = yes
gzip compression level = 1
```

View file

@ -1,3 +1,3 @@
# Optimizing Metrics Database Overview
This section contains documentation to help you understand how the metrics DB works, understand the key features and configure them to suit your needs.
This section contains documentation to help you understand how the metrics DB works, understand the key features and configure them to suit your needs.

View file

@ -32,9 +32,9 @@ retention strategies as shown in the table below:
You can change these limits in `netdata.conf`:
```
```text
[db]
mode = dbengine
mode = dbengine
storage tiers = 3
# Tier 0, per second data. Set to 0 for no limit.
@ -63,7 +63,7 @@ your storage space (disk space limits) and time (time limits) are used for metri
Netdata prior to v2 supports the following configuration options in `netdata.conf`.
They have the same defaults as the latest v2, but the unit of each value is given in the option name, not at the value.
```
```text
storage tiers = 3
# Tier 0, per second data. Set to 0 for no limit.
dbengine tier 0 disk space MB = 1024
@ -90,9 +90,9 @@ Netdata versions prior to v1.46.0 relied on a disk space-based retention.
You can change these limits in `netdata.conf`:
```
```text
[db]
mode = dbengine
mode = dbengine
storage tiers = 3
# Tier 0, per second data
dbengine multihost disk space MB = 256
@ -128,7 +128,6 @@ If `dbengine disk space MB`(**deprecated**) is set to the default `256`, each in
which means the total disk space required to store all instances is,
roughly, `256 MiB * 1 parent * 4 child nodes = 1280 MiB`.
#### Backward compatibility
All existing metrics belonging to child nodes are automatically converted to legacy dbengine instances and the localhost

View file

@ -5,45 +5,47 @@ Netdata allows to organize your observability infrastructure with Spaces, Rooms,
## Spaces and Rooms
[Spaces](/docs/netdata-cloud/organize-your-infrastructure-invite-your-team.md#netdata-cloud-spaces) are used for organization-level or infrastructure-level
[Spaces](/docs/netdata-cloud/organize-your-infrastructure-invite-your-team.md#netdata-cloud-spaces) are used for organization-level or infrastructure-level
grouping of nodes and people. A node can only appear in a single space, while people can have access to multiple spaces.
The [Rooms](/docs/netdata-cloud/organize-your-infrastructure-invite-your-team.md#netdata-cloud-rooms) in a space bring together nodes and people in
collaboration areas. Rooms can also be used for fine-tuned
[role based access control](/docs/netdata-cloud/authentication-and-authorization/role-based-access-model.md).
The [Rooms](/docs/netdata-cloud/organize-your-infrastructure-invite-your-team.md#netdata-cloud-rooms) in a space bring together nodes and people in
collaboration areas. Rooms can also be used for fine-tuned
[role based access control](/docs/netdata-cloud/authentication-and-authorization/role-based-access-model.md).
## Virtual nodes
Netdatas virtual nodes functionality allows you to define nodes in configuration files and have them be treated as regular nodes
in all of the UI, dashboards, tabs, filters etc. For example, you can create a virtual node each for all your Windows machines
and monitor them as discrete entities. Virtual nodes can help you simplify your infrastructure monitoring and focus on the
Netdatas virtual nodes functionality allows you to define nodes in configuration files and have them be treated as regular nodes
in all of the UI, dashboards, tabs, filters etc. For example, you can create a virtual node each for all your Windows machines
and monitor them as discrete entities. Virtual nodes can help you simplify your infrastructure monitoring and focus on the
individual node that matters.
To define your windows server as a virtual node you need to:
* Define virtual nodes in `/etc/netdata/vnodes/vnodes.conf`
* Define virtual nodes in `/etc/netdata/vnodes/vnodes.conf`
```yaml
- hostname: win_server1
guid: <value>
```
Just remember to use a valid guid (On Linux you can use `uuidgen` command to generate one, on Windows just use the `[guid]::NewGuid()` command in PowerShell)
* Add the vnode config to the data collection job. e.g. in `go.d/windows.conf`:
* Add the vnode config to the data collection job. e.g. in `go.d/windows.conf`:
```yaml
jobs:
- name: win_server1
vnode: win_server1
url: http://203.0.113.10:9182/metrics
```
## Host labels
Host labels can be extremely useful when:
- You need alerts that adapt to the system's purpose
- You need properly-labeled metrics archiving so you can sort, correlate, and mash-up your data to your heart's content.
- You need to keep tabs on ephemeral Docker containers in a Kubernetes cluster.
* You need alerts that adapt to the system's purpose
* You need properly-labeled metrics archiving so you can sort, correlate, and mash-up your data to your heart's content.
* You need to keep tabs on ephemeral Docker containers in a Kubernetes cluster.
Let's take a peek into how to create host labels and apply them across a few of Netdata's features to give you more
organization power over your infrastructure.
@ -56,16 +58,17 @@ parent-child status, and more.
They capture the following:
- Kernel version
- Operating system name and version
- CPU architecture, system cores, CPU frequency, RAM, and disk space
- Whether Netdata is running inside of a container, and if so, the OS and hardware details about the container's host
- Whether Netdata is running inside K8s node
- What virtualization layer the system runs on top of, if any
- Whether the system is a streaming parent or child
* Kernel version
* Operating system name and version
* CPU architecture, system cores, CPU frequency, RAM, and disk space
* Whether Netdata is running inside of a container, and if so, the OS and hardware details about the container's host
* Whether Netdata is running inside K8s node
* What virtualization layer the system runs on top of, if any
* Whether the system is a streaming parent or child
If you want to organize your systems without manually creating host labels, try the automatic labels in some of the
features below. You can see them under `http://HOST-IP:19999/api/v1/info`, beginning with an underscore `_`.
```json
{
...
@ -126,7 +129,6 @@ read the status of your agent. For example, from a VPS system running Debian 10:
}
```
### Host labels in streaming
You may have noticed the `_is_parent` and `_is_child` automatic labels from above. Host labels are also now
@ -138,8 +140,7 @@ Now, if you'd like to remind yourself of how much RAM a certain child node has,
child system. It's a vastly simplified way of accessing critical information about your infrastructure.
> ⚠️ Because automatic labels for child nodes are accessible via API calls, and contain sensitive information like
> kernel and operating system versions, you should secure streaming connections with SSL. See the [streaming
> documentation](/src/streaming/README.md#securing-streaming-communications) for details. You may also want to use
> kernel and operating system versions, you should secure streaming connections with SSL. See the [streaming documentation](/src/streaming/README.md#securing-streaming-with-tlsssl) for details. You may also want to use
> [access lists](/src/web/server/README.md#access-lists) or [expose the API only to LAN/localhost
> connections](/docs/netdata-agent/securing-netdata-agents.md#expose-netdata-only-in-a-private-lan).
@ -227,27 +228,27 @@ more about exporting, read the [documentation](/src/exporting/README.md).
The Netdata aggregate charts allow you to filter and group metrics based on label name-value pairs.
All go.d plugin collectors support the specification of labels at the "collection job" level. Some collectors come with out of the box
labels (e.g. generic Prometheus collector, Kubernetes, Docker and more). But you can also add your own custom labels, by configuring
the data collection jobs.
All go.d plugin collectors support the specification of labels at the "collection job" level. Some collectors come with out of the box
labels (e.g. generic Prometheus collector, Kubernetes, Docker and more). But you can also add your own custom labels, by configuring
the data collection jobs.
For example, suppose we have a single Netdata agent, collecting data from two remote Apache web servers, located in different data centers.
For example, suppose we have a single Netdata agent, collecting data from two remote Apache web servers, located in different data centers.
The web servers are load balanced and provide access to the service "Payments".
You can define the following in `go.d.conf`, to be able to group the web requests by service or location:
```
```yaml
jobs:
- name: mywebserver1
- name: my_webserver1
url: http://host1/server-status?auto
labels:
service: "Payments"
location: "Atlanta"
- name: mywebserver2
- name: my_webserver2
url: http://host2/server-status?auto
labels:
service: "Payments"
location: "New York"
```
Of course you may define as many custom label/value pairs as you like, in as many data collection jobs you need.
Of course you may define as many custom label/value pairs as you like, in as many data collection jobs you need.

View file

@ -1,7 +1,7 @@
# Running the Netdata Agent behind a reverse proxy
If you need to access a Netdata agent's user interface or API in a production environment we recommend you put Netdata behind
another web server and secure access to the dashboard via SSL, user authentication and firewall rules.
another web server and secure access to the dashboard via SSL, user authentication and firewall rules.
A dedicated web server also provides more robustness and capabilities than the Agent's [internal web server](/src/web/README.md).
@ -12,7 +12,7 @@ We have documented running behind
[Lighttpd](/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-lighttpd.md),
[Caddy](/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-caddy.md),
and [H2O](/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-h2o.md).
If you prefer a different web server, we suggest you follow the documentation for nginx and tell us how you did it
If you prefer a different web server, we suggest you follow the documentation for nginx and tell us how you did it
by adding your own "Running behind webserverX" document.
When you run Netdata behind a reverse proxy, we recommend you firewall protect all your Netdata servers, so that only the web server IP will be allowed to directly access Netdata. To do this, run this on each of your servers (or use your firewall manager):
@ -26,9 +26,9 @@ The above will prevent anyone except your web server to access a Netdata dashboa
You can also use `netdata.conf`:
```
```txt
[web]
allow connections from = localhost 1.2.3.4
allow connections from = localhost 1.2.3.4
```
Of course, you can add more IPs.

View file

@ -1,4 +1,4 @@
# Netdata via Apache's mod_proxy
# Running Netdata behind Apache's mod_proxy
Below you can find instructions for configuring an apache server to:
@ -29,6 +29,7 @@ Also, enable the rewrite module:
```sh
sudo a2enmod rewrite
```
## Netdata on an existing virtual host
On any **existing** and already **working** apache virtual host, you can redirect requests for URL `/netdata/` to one or more Netdata servers.
@ -40,26 +41,26 @@ Add the following on top of any existing virtual host. It will allow you to acce
```conf
<VirtualHost *:80>
RewriteEngine On
ProxyRequests Off
ProxyPreserveHost On
RewriteEngine On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
<Proxy *>
Require all granted
</Proxy>
# Local Netdata server accessed with '/netdata/', at localhost:19999
ProxyPass "/netdata/" "http://localhost:19999/" connectiontimeout=5 timeout=30 keepalive=on
ProxyPassReverse "/netdata/" "http://localhost:19999/"
# Local Netdata server accessed with '/netdata/', at localhost:19999
ProxyPass "/netdata/" "http://localhost:19999/" connectiontimeout=5 timeout=30 keepalive=on
ProxyPassReverse "/netdata/" "http://localhost:19999/"
# if the user did not give the trailing /, add it
# for HTTP (if the virtualhost is HTTP, use this)
RewriteRule ^/netdata$ http://%{HTTP_HOST}/netdata/ [L,R=301]
# for HTTPS (if the virtualhost is HTTPS, use this)
#RewriteRule ^/netdata$ https://%{HTTP_HOST}/netdata/ [L,R=301]
# if the user did not give the trailing /, add it
# for HTTP (if the virtualhost is HTTP, use this)
RewriteRule ^/netdata$ http://%{HTTP_HOST}/netdata/ [L,R=301]
# for HTTPS (if the virtualhost is HTTPS, use this)
#RewriteRule ^/netdata$ https://%{HTTP_HOST}/netdata/ [L,R=301]
# rest of virtual host config here
# rest of virtual host config here
</VirtualHost>
```
@ -70,13 +71,13 @@ Add the following on top of any existing virtual host. It will allow you to acce
```conf
<VirtualHost *:80>
RewriteEngine On
ProxyRequests Off
ProxyPreserveHost On
RewriteEngine On
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
<Proxy *>
Require all granted
</Proxy>
# proxy any host, on port 19999
ProxyPassMatch "^/netdata/([A-Za-z0-9\._-]+)/(.*)" "http://$1:19999/$2" connectiontimeout=5 timeout=30 keepalive=on
@ -87,8 +88,8 @@ Add the following on top of any existing virtual host. It will allow you to acce
# for HTTPS (if the virtualhost is HTTPS, use this)
RewriteRule "^/netdata/([A-Za-z0-9\._-]+)$" https://%{HTTP_HOST}/netdata/$1/ [L,R=301]
# rest of virtual host config here
# rest of virtual host config here
</VirtualHost>
```
@ -97,7 +98,7 @@ Add the following on top of any existing virtual host. It will allow you to acce
If you want to control the servers your users can connect to, replace the `ProxyPassMatch` line with the following. This allows only `server1`, `server2`, `server3` and `server4`.
```
```txt
ProxyPassMatch "^/netdata/(server1|server2|server3|server4)/(.*)" "http://$1:19999/$2" connectiontimeout=5 timeout=30 keepalive=on
```
@ -115,24 +116,24 @@ with this content:
```conf
<VirtualHost *:80>
ProxyRequests Off
ProxyPreserveHost On
ServerName netdata.domain.tld
ProxyRequests Off
ProxyPreserveHost On
ServerName netdata.domain.tld
<Proxy *>
Require all granted
</Proxy>
<Proxy *>
Require all granted
</Proxy>
ProxyPass "/" "http://localhost:19999/" connectiontimeout=5 timeout=30 keepalive=on
ProxyPassReverse "/" "http://localhost:19999/"
ProxyPass "/" "http://localhost:19999/" connectiontimeout=5 timeout=30 keepalive=on
ProxyPassReverse "/" "http://localhost:19999/"
ErrorLog ${APACHE_LOG_DIR}/netdata-error.log
CustomLog ${APACHE_LOG_DIR}/netdata-access.log combined
ErrorLog ${APACHE_LOG_DIR}/netdata-error.log
CustomLog ${APACHE_LOG_DIR}/netdata-access.log combined
</VirtualHost>
```
Enable the VirtualHost:
Enable the VirtualHost:
```sh
sudo a2ensite netdata.conf && service apache2 reload
@ -142,15 +143,15 @@ sudo a2ensite netdata.conf && service apache2 reload
_Assuming the main goal is to make Netdata running in HTTPS._
1. Make a subdomain for Netdata on which you enable and force HTTPS - You can use a free Let's Encrypt certificate
2. Go to "Apache & nginx Settings", and in the following section, add:
1. Make a subdomain for Netdata on which you enable and force HTTPS - You can use a free Let's Encrypt certificate
2. Go to "Apache & nginx Settings", and in the following section, add:
```conf
RewriteEngine on
RewriteRule (.*) http://localhost:19999/$1 [P,L]
```
3. Optional: If your server is remote, then just replace "localhost" with your actual hostname or IP, it just works.
```conf
RewriteEngine on
RewriteRule (.*) http://localhost:19999/$1 [P,L]
```
3. Optional: If your server is remote, then just replace "localhost" with your actual hostname or IP, it just works.
Repeat the operation for as many servers as you need.
@ -166,21 +167,21 @@ Then, generate password for user `netdata`, using `htpasswd -c /etc/apache2/.htp
Modify the virtual host with these:
```conf
# replace the <Proxy *> section
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# replace the <Proxy *> section
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# add a <Location /netdata/> section
<Location /netdata/>
AuthType Basic
AuthName "Protected site"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
Order deny,allow
Allow from all
</Location>
# add a <Location /netdata/> section
<Location /netdata/>
AuthType Basic
AuthName "Protected site"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
Order deny,allow
Allow from all
</Location>
```
Specify `Location /` if Netdata is running on dedicated virtual host.
@ -189,25 +190,25 @@ Specify `Location /` if Netdata is running on dedicated virtual host.
```conf
<VirtualHost *:80>
RewriteEngine On
ProxyRequests Off
ProxyPreserveHost On
ServerName netdata.domain.tld
RewriteEngine On
ProxyRequests Off
ProxyPreserveHost On
ServerName netdata.domain.tld
<Proxy *>
AllowOverride None
AuthType Basic
AuthName "Protected site"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Proxy>
<Proxy *>
AllowOverride None
AuthType Basic
AuthName "Protected site"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Proxy>
ProxyPass "/" "http://localhost:19999/" connectiontimeout=5 timeout=30 keepalive=on
ProxyPassReverse "/" "http://localhost:19999/"
ProxyPass "/" "http://localhost:19999/" connectiontimeout=5 timeout=30 keepalive=on
ProxyPassReverse "/" "http://localhost:19999/"
ErrorLog ${APACHE_LOG_DIR}/netdata-error.log
CustomLog ${APACHE_LOG_DIR}/netdata-access.log combined
ErrorLog ${APACHE_LOG_DIR}/netdata-error.log
CustomLog ${APACHE_LOG_DIR}/netdata-access.log combined
</VirtualHost>
```
@ -217,8 +218,8 @@ Note: Changes are applied by reloading or restarting Apache.
If you want to enable CSP within your Apache, you should consider some special requirements of the headers. Modify your configuration like that:
```
Header always set Content-Security-Policy "default-src http: 'unsafe-inline' 'self' 'unsafe-eval'; script-src http: 'unsafe-inline' 'self' 'unsafe-eval'; style-src http: 'self' 'unsafe-inline'"
```txt
Header always set Content-Security-Policy "default-src http: 'unsafe-inline' 'self' 'unsafe-eval'; script-src http: 'unsafe-inline' 'self' 'unsafe-eval'; style-src http: 'self' 'unsafe-inline'"
```
Note: Changes are applied by reloading or restarting Apache.
@ -257,98 +258,90 @@ following:
```conf
<VirtualHost *:80>
...
# Increase the DOSPageCount to prevent 403 errors and IP addresses being blocked.
<IfModule mod_evasive20.c>
DOSPageCount 30
</IfModule>
...
# Increase the DOSPageCount to prevent 403 errors and IP addresses being blocked.
<IfModule mod_evasive20.c>
DOSPageCount 30
</IfModule>
</VirtualHost>
```
See issues [#2011](https://github.com/netdata/netdata/issues/2011) and
[#7658](https://github.com/netdata/netdata/issues/7568) for more information.
# Netdata configuration
## Netdata configuration
You might edit `/etc/netdata/netdata.conf` to optimize your setup a bit. For applying these changes you need to restart Netdata.
## Response compression
### Response compression
If you plan to use Netdata exclusively via apache, you can gain some performance by preventing double compression of its output (Netdata compresses its response, apache re-compresses it) by editing `/etc/netdata/netdata.conf` and setting:
```
```txt
[web]
enable gzip compression = no
```
Once you disable compression at Netdata (and restart it), please verify you receive compressed responses from apache (it is important to receive compressed responses - the charts will be more snappy).
## Limit direct access to Netdata
### Limit direct access to Netdata
You would also need to instruct Netdata to listen only on `localhost`, `127.0.0.1` or `::1`.
```
```txt
[web]
bind to = localhost
```
or
```
```txt
[web]
bind to = 127.0.0.1
```
or
```
```txt
[web]
bind to = ::1
```
You can also use a unix domain socket. This will also provide a faster route between apache and Netdata:
```
```txt
[web]
bind to = unix:/tmp/netdata.sock
```
Apache 2.4.24+ can not read from `/tmp` so create your socket in `/var/run/netdata`
```
```txt
[web]
bind to = unix:/var/run/netdata/netdata.sock
```
_note: Netdata v1.8+ support unix domain sockets_
At the apache side, prepend the 2nd argument to `ProxyPass` with `unix:/tmp/netdata.sock|`, like this:
```
```txt
ProxyPass "/netdata/" "unix:/tmp/netdata.sock|http://localhost:19999/" connectiontimeout=5 timeout=30 keepalive=on
```
If your apache server is not on localhost, you can set:
```
```txt
[web]
bind to = *
allow connections from = IP_OF_APACHE_SERVER
```
*note: Netdata v1.9+ support `allow connections from`*
`allow connections from` accepts [Netdata simple patterns](/src/libnetdata/simple_pattern/README.md) to match against the connection IP address.
## Prevent the double access.log
apache logs accesses and Netdata logs them too. You can prevent Netdata from generating its access log, by setting this in `/etc/netdata/netdata.conf`:
```
```txt
[logs]
access = off
```
@ -357,7 +350,5 @@ apache logs accesses and Netdata logs them too. You can prevent Netdata from gen
Make sure the requests reach Netdata, by examining `/var/log/netdata/access.log`.
1. if the requests do not reach Netdata, your apache does not forward them.
2. if the requests reach Netdata but the URLs are wrong, you have not re-written them properly.
1. if the requests do not reach Netdata, your apache does not forward them.
2. if the requests reach Netdata but the URLs are wrong, you have not re-written them properly.

View file

@ -1,15 +1,6 @@
<!--
title: "Netdata via Caddy"
custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/Running-behind-caddy.md"
sidebar_label: "Netdata via Caddy"
learn_status: "Published"
learn_topic_type: "Tasks"
learn_rel_path: "Configuration/Secure your nodes"
-->
# Running Netdata behind Caddy
# Netdata via Caddy
To run Netdata via [Caddy v2 proxying,](https://caddyserver.com/docs/caddyfile/directives/reverse_proxy) set your Caddyfile up like this:
To run Netdata via [Caddy v2 reverse proxy,](https://caddyserver.com/docs/caddyfile/directives/reverse_proxy) set your Caddyfile up like this:
```caddyfile
netdata.domain.tld {
@ -34,5 +25,3 @@ netdata.domain.tld {
You would also need to instruct Netdata to listen only to `127.0.0.1` or `::1`.
To limit access to Netdata only from localhost, set `bind socket to IP = 127.0.0.1` or `bind socket to IP = ::1` in `/etc/netdata/netdata.conf`.

View file

@ -15,23 +15,23 @@ It is notable for having much simpler configuration than many popular HTTP serve
## Why H2O
- Sane configuration defaults mean that typical configurations are very minimalistic and easy to work with.
- Sane configuration defaults mean that typical configurations are very minimalistic and easy to work with.
- Native support for HTTP/2 provides improved performance when accessing the Netdata dashboard remotely.
- Native support for HTTP/2 provides improved performance when accessing the Netdata dashboard remotely.
- Password protect access to the Netdata dashboard without requiring Netdata Cloud.
- Password protect access to the Netdata dashboard without requiring Netdata Cloud.
## H2O configuration file.
## H2O configuration file
On most systems, the H2O configuration is found under `/etc/h2o`. H2O uses [YAML 1.1](https://yaml.org/spec/1.1/), with a few special extensions, for its configuration files, with the main configuration file being `/etc/h2o/h2o.conf`.
On most systems, the H2O configuration is found under `/etc/h2o`. H2O uses [YAML 1.1](https://yaml.org/spec/1.1/), with a few special extensions, for its configuration files, with the main configuration file being `/etc/h2o/h2o.conf`.
You can edit the H2O configuration file with Nano, Vim or any other text editors with which you are comfortable.
After making changes to the configuration files, perform the following:
- Test the configuration with `h2o -m test -c /etc/h2o/h2o.conf`
- Test the configuration with `h2o -m test -c /etc/h2o/h2o.conf`
- Restart H2O to apply tha changes with `/etc/init.d/h2o restart` or `service h2o restart`
- Restart H2O to apply tha changes with `/etc/init.d/h2o restart` or `service h2o restart`
## Ways to access Netdata via H2O
@ -52,7 +52,7 @@ hosts:
### As a subfolder of an existing virtual host
This method is recommended when Netdata is to be served from a subfolder (or directory).
This method is recommended when Netdata is to be served from a subfolder (or directory).
In this case, the virtual host `netdata.example.com` already exists and Netdata has to be accessed via `netdata.example.com/netdata/`.
```yaml
@ -72,7 +72,7 @@ hosts:
### As a subfolder for multiple Netdata servers, via one H2O instance
This is the recommended configuration when one H2O instance will be used to manage multiple Netdata servers via subfolders.
This is the recommended configuration when one H2O instance will be used to manage multiple Netdata servers via sub-folders.
```yaml
hosts:
@ -100,12 +100,12 @@ Of course you can add as many backend servers as you like.
Using the above, you access Netdata on the backend servers, like this:
- `http://netdata.example.com/netdata/server1/` to reach Netdata on `198.51.100.1:19999`
- `http://netdata.example.com/netdata/server2/` to reach Netdata on `198.51.100.2:19999`
- `http://netdata.example.com/netdata/server1/` to reach Netdata on `198.51.100.1:19999`
- `http://netdata.example.com/netdata/server2/` to reach Netdata on `198.51.100.2:19999`
### Encrypt the communication between H2O and Netdata
In case Netdata's web server has been [configured to use TLS](/src/web/server/README.md#enabling-tls-support), it is
In case Netdata's web server has been [configured to use TLS](/src/web/server/README.md#enable-httpstls-support), it is
necessary to specify inside the H2O configuration that the final destination is using TLS. To do this, change the
`http://` on the `proxy.reverse.url` line in your H2O configuration with `https://`
@ -141,31 +141,27 @@ For more information on using basic authentication with H2O, see [their official
If your H2O server is on `localhost`, you can use this to ensure external access is only possible through H2O:
```
```txt
[web]
bind to = 127.0.0.1 ::1
```
You can also use a unix domain socket. This will provide faster communication between H2O and Netdata as well:
```
```txt
[web]
bind to = unix:/run/netdata/netdata.sock
```
In the H2O configuration, use a line like the following to connect to Netdata via the unix socket:
```yaml
```txt
proxy.reverse.url http://[unix:/run/netdata/netdata.sock]
```
If your H2O server is not on localhost, you can set:
```
```txt
[web]
bind to = *
allow connections from = IP_OF_H2O_SERVER
@ -181,7 +177,7 @@ the connection IP address.
H2O logs accesses and Netdata logs them too. You can prevent Netdata from generating its access log, by setting
this in `/etc/netdata/netdata.conf`:
```
```txt
[logs]
access = off
```

View file

@ -1,16 +1,6 @@
<!--
title: "Netdata via HAProxy"
custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-haproxy.md"
sidebar_label: "Netdata via HAProxy"
learn_status: "Published"
learn_topic_type: "Tasks"
learn_rel_path: "Configuration/Secure your nodes"
-->
# Running Netdata behind HAProxy
# Netdata via HAProxy
> HAProxy is a free, very fast and reliable solution offering high availability, load balancing,
> and proxying for TCP and HTTP-based applications. It is particularly suited for very high traffic websites
> HAProxy is a free, very fast and reliable solution offering high availability, load balancing, and proxying for TCP and HTTP-based applications. It is particularly suited for very high traffic websites
> and powers quite a number of the world's most visited ones.
If Netdata is running on a host running HAProxy, rather than connecting to Netdata from a port number, a domain name can
@ -18,7 +8,7 @@ be pointed at HAProxy, and HAProxy can redirect connections to the Netdata port.
Netdata at `https://example.com` or `https://example.com/netdata/`, which is a much nicer experience then
`http://example.com:19999`.
To proxy requests from [HAProxy](https://github.com/haproxy/haproxy) to Netdata,
To proxy requests from [HAProxy](https://github.com/haproxy/haproxy) to Netdata,
the following configuration can be used:
## Default Configuration
@ -107,7 +97,7 @@ backend netdata_backend
## Using TLS communication
TLS can be used by adding port `443` and a cert to the frontend.
TLS can be used by adding port `443` and a cert to the frontend.
This example will only use Netdata if host matches example.com (replace with your domain).
### Frontend
@ -143,7 +133,7 @@ In the cert list file place a mapping from a certificate file to the domain used
example.com /etc/letsencrypt/live/example.com/example.com.pem
```
The file `/etc/letsencrypt/live/example.com/example.com.pem` should contain the key and
The file `/etc/letsencrypt/live/example.com/example.com.pem` should contain the key and
certificate (in that order) concatenated into a `.pem` file.:
```sh
@ -177,17 +167,17 @@ To use basic HTTP Authentication, create an authentication list:
userlist basic-auth-list
group is-admin
# Plaintext password
user admin password passwordhere groups is-admin
user admin password YOUR_PASSWORD groups is-admin
```
You can create a hashed password using the `mkpassword` utility.
```sh
printf "passwordhere" | mkpasswd --stdin --method=sha-256
printf "YOUR_PASSWORD" | mkpasswd --stdin --method=sha-256
$5$l7Gk0VPIpKO$f5iEcxvjfdF11khw.utzSKqP7W.0oq8wX9nJwPLwzy1
```
Replace `passwordhere` with hash:
Replace `YOUR_PASSWORD` with hash:
```conf
user admin password $5$l7Gk0VPIpKO$f5iEcxvjfdF11khw.utzSKqP7W.0oq8wX9nJwPLwzy1 groups is-admin
@ -293,5 +283,3 @@ backend netdata_backend
http-request set-header X-Forwarded-Port %[dst_port]
http-request set-header Connection "keep-alive"
```

View file

@ -1,13 +1,4 @@
<!--
title: "Netdata via lighttpd v1.4.x"
custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-lighttpd.md"
sidebar_label: "Netdata via lighttpd v1.4.x"
learn_status: "Published"
learn_topic_type: "Tasks"
learn_rel_path: "Configuration/Secure your nodes"
-->
# Netdata via lighttpd v1.4.x
# Running Netdata behind lighttpd v1.4.x
Here is a config for accessing Netdata in a suburl via lighttpd 1.4.46 and newer:
@ -18,7 +9,7 @@ $HTTP["url"] =~ "^/netdata/" {
}
```
If you have older lighttpd you have to use a chain (such as below), as explained [at this stackoverflow answer](http://stackoverflow.com/questions/14536554/lighttpd-configuration-to-proxy-rewrite-from-one-domain-to-another).
If you have older lighttpd you have to use a chain (such as below), as explained [at this Stack Overflow answer](http://stackoverflow.com/questions/14536554/lighttpd-configuration-to-proxy-rewrite-from-one-domain-to-another).
```txt
$HTTP["url"] =~ "^/netdata/" {
@ -31,19 +22,16 @@ $SERVER["socket"] == ":19998" {
}
```
If the only thing the server is exposing via the web is Netdata (and thus no suburl rewriting required),
then you can get away with just
```
```txt
proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => 19999 )))
```
Though if it's public facing you might then want to put some authentication on it. htdigest support
looks like:
Though if it's public facing you might then want to put some authentication on it. `htdigest` support looks like:
```
```txt
auth.backend = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/lighttpd.htdigest"
auth.require = ( "" => ( "method" => "digest",
@ -55,14 +43,12 @@ auth.require = ( "" => ( "method" => "digest",
other auth methods, and more info on htdigest, can be found in lighttpd's [mod_auth docs](http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModAuth).
It seems that lighttpd (or some versions of it), fail to proxy compressed web responses.
To solve this issue, disable web response compression in Netdata.
Open `/etc/netdata/netdata.conf` and set in [global]\:
Open `/etc/netdata/netdata.conf` and set in `[global]`:
```
```txt
enable web responses gzip compression = no
```
@ -71,5 +57,3 @@ enable web responses gzip compression = no
You would also need to instruct Netdata to listen only to `127.0.0.1` or `::1`.
To limit access to Netdata only from localhost, set `bind socket to IP = 127.0.0.1` or `bind socket to IP = ::1` in `/etc/netdata/netdata.conf`.

View file

@ -2,19 +2,19 @@
## Intro
[Nginx](https://nginx.org/en/) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server used to host websites and applications of all sizes.
[Nginx](https://nginx.org/en/) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server used to host websites and applications of all sizes.
The software is known for its low impact on memory resources, high scalability, and its modular, event-driven architecture which can offer secure, predictable performance.
## Why Nginx
- By default, Nginx is fast and lightweight out of the box.
- By default, Nginx is fast and lightweight out of the box.
- Nginx is used and useful in cases when you want to access different instances of Netdata from a single server.
- Nginx is used and useful in cases when you want to access different instances of Netdata from a single server.
- Password-protect access to Netdata, until distributed authentication is implemented via the Netdata cloud Sign In mechanism.
- Password-protect access to Netdata, until distributed authentication is implemented via the Netdata cloud Sign In mechanism.
- A proxy was necessary to encrypt the communication to Netdata, until v1.16.0, which provided TLS (HTTPS) support.
- A proxy was necessary to encrypt the communication to Netdata, until v1.16.0, which provided TLS (HTTPS) support.
## Nginx configuration file
@ -22,21 +22,21 @@ All Nginx configurations can be found in the `/etc/nginx/` directory. The main c
Configuration options in Nginx are known as directives. Directives are organized into groups known as blocks or contexts. The two terms can be used interchangeably.
Depending on your installation source, youll find an example configuration file at `/etc/nginx/conf.d/default.conf` or `etc/nginx/sites-enabled/default`, in some cases you may have to manually create the `sites-available` and `sites-enabled` directories.
Depending on your installation source, youll find an example configuration file at `/etc/nginx/conf.d/default.conf` or `etc/nginx/sites-enabled/default`, in some cases you may have to manually create the `sites-available` and `sites-enabled` directories.
You can edit the Nginx configuration file with Nano, Vim or any other text editors you are comfortable with.
After making changes to the configuration files:
- Test Nginx configuration with `nginx -t`.
- Test Nginx configuration with `nginx -t`.
- Restart Nginx to effect the change with `/etc/init.d/nginx restart` or `service nginx restart`.
- Restart Nginx to effect the change with `/etc/init.d/nginx restart` or `service nginx restart`.
## Ways to access Netdata via Nginx
### As a virtual host
With this method instead of `SERVER_IP_ADDRESS:19999`, the Netdata dashboard can be accessed via a human-readable URL such as `netdata.example.com` used in the configuration below.
With this method instead of `SERVER_IP_ADDRESS:19999`, the Netdata dashboard can be accessed via a human-readable URL such as `netdata.example.com` used in the configuration below.
```conf
upstream backend {
@ -69,7 +69,7 @@ server {
### As a subfolder to an existing virtual host
This method is recommended when Netdata is to be served from a subfolder (or directory).
This method is recommended when Netdata is to be served from a subfolder (or directory).
In this case, the virtual host `netdata.example.com` already exists and Netdata has to be accessed via `netdata.example.com/netdata/`.
```conf
@ -112,7 +112,7 @@ server {
### As a subfolder for multiple Netdata servers, via one Nginx
This is the recommended configuration when one Nginx will be used to manage multiple Netdata servers via subfolders.
This is the recommended configuration when one Nginx will be used to manage multiple Netdata servers via sub-folders.
```conf
upstream backend-server1 {
@ -159,12 +159,12 @@ Of course you can add as many backend servers as you like.
Using the above, you access Netdata on the backend servers, like this:
- `http://netdata.example.com/netdata/server1/` to reach `backend-server1`
- `http://netdata.example.com/netdata/server2/` to reach `backend-server2`
- `http://netdata.example.com/netdata/server1/` to reach `backend-server1`
- `http://netdata.example.com/netdata/server2/` to reach `backend-server2`
### Encrypt the communication between Nginx and Netdata
In case Netdata's web server has been [configured to use TLS](/src/web/server/README.md#enabling-tls-support), it is
In case Netdata's web server has been [configured to use TLS](/src/web/server/README.md#enable-httpstls-support), it is
necessary to specify inside the Nginx configuration that the final destination is using TLS. To do this, please, append
the following parameters in your `nginx.conf`
@ -202,20 +202,18 @@ server {
If your Nginx is on `localhost`, you can use this to protect your Netdata:
```
```txt
[web]
bind to = 127.0.0.1 ::1
```
You can also use a unix domain socket. This will also provide a faster route between Nginx and Netdata:
```
```txt
[web]
bind to = unix:/var/run/netdata/netdata.sock
```
*note: Netdata v1.8+ support unix domain sockets*
At the Nginx side, use something like this to use the same unix domain socket:
```conf
@ -225,17 +223,14 @@ upstream backend {
}
```
If your Nginx server is not on localhost, you can set:
```
```txt
[web]
bind to = *
allow connections from = IP_OF_NGINX_SERVER
```
*note: Netdata v1.9+ support `allow connections from`*
`allow connections from` accepts [Netdata simple patterns](/src/libnetdata/simple_pattern/README.md) to match against the
connection IP address.
@ -243,7 +238,7 @@ connection IP address.
Nginx logs accesses and Netdata logs them too. You can prevent Netdata from generating its access log, by setting this in `/etc/netdata/netdata.conf`:
```
```txt
[logs]
access = off
```
@ -254,11 +249,11 @@ By default, netdata compresses its responses. You can have nginx do that instead
```conf
location / {
...
gzip on;
gzip_proxied any;
gzip_types *;
}
...
gzip on;
gzip_proxied any;
gzip_types *;
}
```
To disable Netdata's gzip compression, open `netdata.conf` and in the `[web]` section put:
@ -278,5 +273,3 @@ If you get an 502 Bad Gateway error you might check your Nginx error log:
```
If you see something like the above, chances are high that SELinux prevents nginx from connecting to the backend server. To fix that, just use this policy: `setsebool -P httpd_can_network_connect true`.

View file

@ -1,26 +1,26 @@
# Securing Netdata Agents
Netdata is a monitoring system. It should be protected, the same way you protect all your admin apps. We assume Netdata
Netdata is a monitoring system. It should be protected, the same way you protect all your admin apps. We assume Netdata
will be installed privately, for your eyes only.
Upon installation, the Netdata Agent serves the **local dashboard** at port `19999`. If the node is accessible to the
internet at large, anyone can access the dashboard and your node's metrics at `http://NODE:19999`. We made this decision
so that the local dashboard was immediately accessible to users, and so that we don't dictate how professionals set up
and secure their infrastructures.
and secure their infrastructures.
Viewers will be able to get some information about the system Netdata is running. This information is everything the dashboard
provides. The dashboard includes a list of the services each system runs (the legends of the charts under the `Systemd Services`
section), the applications running (the legends of the charts under the `Applications` section), the disks of the system and
their names, the user accounts of the system that are running processes (the `Users` and `User Groups` section of the dashboard),
Viewers will be able to get some information about the system Netdata is running. This information is everything the dashboard
provides. The dashboard includes a list of the services each system runs (the legends of the charts under the `Systemd Services`
section), the applications running (the legends of the charts under the `Applications` section), the disks of the system and
their names, the user accounts of the system that are running processes (the `Users` and `User Groups` section of the dashboard),
the network interfaces and their names (not the IPs) and detailed information about the performance of the system and its applications.
This information is not sensitive (meaning that it is not your business data), but **it is important for possible attackers**.
It will give them clues on what to check, what to try and in the case of DDoS against your applications, they will know if they
This information is not sensitive (meaning that it is not your business data), but **it is important for possible attackers**.
It will give them clues on what to check, what to try and in the case of DDoS against your applications, they will know if they
are doing it right or not.
Also, viewers could use Netdata itself to stress your servers. Although the Netdata daemon runs unprivileged, with the minimum
process priority (scheduling priority `idle` - lower than nice 19) and adjusts its OutOfMemory (OOM) score to 1000 (so that it
will be first to be killed by the kernel if the system starves for memory), some pressure can be applied on your systems if
Also, viewers could use Netdata itself to stress your servers. Although the Netdata daemon runs unprivileged, with the minimum
process priority (scheduling priority `idle` - lower than nice 19) and adjusts its OutOfMemory (OOM) score to 1000 (so that it
will be first to be killed by the kernel if the system starves for memory), some pressure can be applied on your systems if
someone attempts a DDoS against Netdata.
Instead of dictating how to secure your infrastructure, we give you many options to establish security best practices
@ -34,7 +34,7 @@ that align with your goals and your organization's standards.
- [Fine-grained access control](#fine-grained-access-control): Allow local dashboard access from
only certain IP addresses, such as a trusted static IP or connections from behind a management LAN. Full support for Netdata Cloud.
- [Use a reverse proxy (authenticating web server in proxy mode)](#use-an-authenticating-web-server-in-proxy-mode): Password-protect
- [Use a reverse proxy (authenticating web server in proxy mode)](#use-an-authenticating-web-server-in-proxy-mode): Password-protect
a local dashboard and enable TLS to secure it. Full support for Netdata Cloud.
- [Use Netdata parents as Web Application Firewalls](#use-netdata-parents-as-web-application-firewalls)
@ -46,7 +46,7 @@ that align with your goals and your organization's standards.
This is the _recommended method for those who have connected their nodes to Netdata Cloud_ and prefer viewing real-time
metrics using the Room Overview, Nodes tab, and Cloud dashboards.
You can disable the local dashboard (and API) but retain the encrypted Agent-Cloud link
You can disable the local dashboard (and API) but retain the encrypted Agent-Cloud link
([ACLK](/src/aclk/README.md)) that
allows you to stream metrics on demand from your nodes via the Netdata Cloud interface. This change mitigates all
concerns about revealing metrics and system design to the internet at large, while keeping all the functionality you
@ -60,53 +60,50 @@ static-threaded` setting, and change it to `none`.
mode = none
```
Save and close the editor, then [restart your Agent](/packaging/installer/README.md#maintaining-a-netdata-agent-installation)
using `sudo systemctl
restart netdata`. If you try to visit the local dashboard to `http://NODE:19999` again, the connection will fail because
Save and close the editor, then [restart your Agent](/docs/netdata-agent/start-stop-restart.md). If you try to visit the local dashboard to `http://NODE:19999` again, the connection will fail because
that node no longer serves its local dashboard.
> See the [configuration basics doc](/docs/netdata-agent/configuration/README.md) for details on how to find
> See the [configuration basics doc](/docs/netdata-agent/configuration/README.md) for details on how to find
`netdata.conf` and use
> `edit-config`.
If you are using Netdata with Docker, make sure to set the `NETDATA_HEALTHCHECK_TARGET` environment variable to `cli`.
## Expose Netdata only in a private LAN
If your organisation has a private administration and management LAN, you can bind Netdata on this network interface on all your servers.
If your organization has a private administration and management LAN, you can bind Netdata on this network interface on all your servers.
This is done in `Netdata.conf` with these settings:
```
```txt
[web]
bind to = 10.1.1.1:19999 localhost:19999
bind to = 10.1.1.1:19999 localhost:19999
```
You can bind Netdata to multiple IPs and ports. If you use hostnames, Netdata will resolve them and use all the IPs
You can bind Netdata to multiple IPs and ports. If you use hostnames, Netdata will resolve them and use all the IPs
(in the above example `localhost` usually resolves to both `127.0.0.1` and `::1`).
**This is the best and the suggested way to protect Netdata**. Your systems **should** have a private administration and management
**This is the best and the suggested way to protect Netdata**. Your systems **should** have a private administration and management
LAN, so that all management tasks are performed without any possibility of them being exposed on the internet.
For cloud based installations, if your cloud provider does not provide such a private LAN (or if you use multiple providers),
you can create a virtual management and administration LAN with tools like `tincd` or `gvpe`. These tools create a mesh VPN
allowing all servers to communicate securely and privately. Your administration stations join this mesh VPN to get access to
For cloud based installations, if your cloud provider does not provide such a private LAN (or if you use multiple providers),
you can create a virtual management and administration LAN with tools like `tincd` or `gvpe`. These tools create a mesh VPN
allowing all servers to communicate securely and privately. Your administration stations join this mesh VPN to get access to
management and administration tasks on all your cloud servers.
For `gvpe` we have developed a [simple provisioning tool](https://github.com/netdata/netdata-demo-site/tree/master/gvpe) you
may find handy (it includes statically compiled `gvpe` binaries for Linux and FreeBSD, and also a script to compile `gvpe`
on your macOS system). We use this to create a management and administration LAN for all Netdata demo sites (spread all over
For `gvpe` we have developed a [simple provisioning tool](https://github.com/netdata/netdata-demo-site/tree/master/gvpe) you
may find handy (it includes statically compiled `gvpe` binaries for Linux and FreeBSD, and also a script to compile `gvpe`
on your macOS system). We use this to create a management and administration LAN for all Netdata demo sites (spread all over
the internet using multiple hosting providers).
## Fine-grained access control
If you want to keep using the local dashboard, but don't want it exposed to the internet, you can restrict access with
[access lists](/src/web/server/README.md#access-lists). This method also fully
[access lists](/src/web/server/README.md#access-lists). This method also fully
retains the ability to stream metrics
on-demand through Netdata Cloud.
The `allow connections from` setting helps you allow only certain IP addresses or FQDN/hostnames, such as a trusted
static IP, only `localhost`, or connections from behind a management LAN.
static IP, only `localhost`, or connections from behind a management LAN.
By default, this setting is `localhost *`. This setting allows connections from `localhost` in addition to _all_
connections, using the `*` wildcard. You can change this setting using Netdata's [simple
@ -137,29 +134,27 @@ The `allow connections from` setting is global and restricts access to the dashb
allow management from = localhost
```
See the [web server](/src/web/server/README.md#access-lists) docs for additional details
about access lists. You can take
access lists one step further by [enabling SSL](/src/web/server/README.md#enabling-tls-support) to encrypt data from local
See the [web server](/src/web/server/README.md#access-lists) docs for additional details about access lists. You can take access lists one step further by [enabling SSL](/src/web/server/README.md#enable-httpstls-support) to encrypt data from local
dashboard in transit. The connection to Netdata Cloud is always secured with TLS.
## Use an authenticating web server in proxy mode
Use one web server to provide authentication in front of **all your Netdata servers**. So, you will be accessing all your Netdata with
URLs like `http://{HOST}/netdata/{NETDATA_HOSTNAME}/` and authentication will be shared among all of them (you will sign-in once for all your servers).
Instructions are provided on how to set the proxy configuration to have Netdata run behind
[nginx](/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-nginx.md),
[HAproxy](/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-haproxy.md),
[Apache](/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-apache.md),
[lighthttpd](/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-lighttpd.md),
Use one web server to provide authentication in front of **all your Netdata servers**. So, you will be accessing all your Netdata with
URLs like `http://{HOST}/netdata/{NETDATA_HOSTNAME}/` and authentication will be shared among all of them (you will sign-in once for all your servers).
Instructions are provided on how to set the proxy configuration to have Netdata run behind
[nginx](/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-nginx.md),
[HAproxy](/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-haproxy.md),
[Apache](/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-apache.md),
[lighthttpd](/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-lighttpd.md),
[caddy](/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-caddy.md), and
[H2O](/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-h2o.md).
## Use Netdata parents as Web Application Firewalls
The Netdata Agents you install on your production systems do not need direct access to the Internet. Even when you use
Netdata Cloud, you can appoint one or more Netdata Parents to act as border gateways or application firewalls, isolating
your production systems from the rest of the world. Netdata
Parents receive metric data from Netdata Agents or other Netdata Parents on one side, and serve most queries using their own
The Netdata Agents you install on your production systems do not need direct access to the Internet. Even when you use
Netdata Cloud, you can appoint one or more Netdata Parents to act as border gateways or application firewalls, isolating
your production systems from the rest of the world. Netdata
Parents receive metric data from Netdata Agents or other Netdata Parents on one side, and serve most queries using their own
copy of the data to satisfy dashboard requests on the other side.
For more information see [Streaming and replication](/docs/observability-centralization-points/README.md).
@ -168,13 +163,13 @@ For more information see [Streaming and replication](/docs/observability-central
Of course, there are many more methods you could use to protect Netdata:
- Bind Netdata to localhost and use `ssh -L 19998:127.0.0.1:19999 remote.netdata.ip` to forward connections of local port 19998 to remote port 19999.
- Bind Netdata to localhost and use `ssh -L 19998:127.0.0.1:19999 remote.netdata.ip` to forward connections of local port 19998 to remote port 19999.
This way you can ssh to a Netdata server and then use `http://127.0.0.1:19998/` on your computer to access the remote Netdata dashboard.
- If you are always under a static IP, you can use the script given above to allow direct access to your Netdata servers without authentication,
- If you are always under a static IP, you can use the script given above to allow direct access to your Netdata servers without authentication,
from all your static IPs.
- Install all your Netdata in **headless data collector** mode, forwarding all metrics in real-time to a parent
- Install all your Netdata in **headless data collector** mode, forwarding all metrics in real-time to a parent
Netdata server, which will be protected with authentication using an nginx server running locally at the parent
Netdata server. This requires more resources (you will need a bigger parent Netdata server), but does not require
any firewall changes, since all the child Netdata servers will not be listening for incoming connections.

View file

@ -23,7 +23,7 @@ The expected bandwidth consumption using `zstd` for 1 million samples per second
The order compression algorithms is selected is configured in `stream.conf`, per `[API KEY]`, like this:
```
```txt
compression algorithms order = zstd lz4 brotli gzip
```

View file

@ -14,7 +14,7 @@ This number can be lowered by limiting the number of database tier or switching
The general formula, with the default configuration of database tiers, is:
```
```txt
memory = UNIQUE_METRICS x 16KiB + CONFIGURED_CACHES
```
@ -22,7 +22,7 @@ The default `CONFIGURED_CACHES` is 32MiB.
For 1 million concurrently collected time-series (independently of their data collection frequency), the memory required is:
```
```txt
UNIQUE_METRICS = 1000000
CONFIGURED_CACHES = 32MiB

View file

@ -1,9 +1,9 @@
# Start, stop, or restart the Netdata Agent
When you install the Netdata Agent, the [daemon](/src/daemon/README.md) is
When you install the Netdata Agent, the [daemon](/src/daemon/README.md) is
configured to start at boot and stop and restart/shutdown.
You will most often need to _restart_ the Agent to load new or editing configuration files.
You will most often need to _restart_ the Agent to load new or editing configuration files.
[Health configuration](#reload-health-configuration) files are the only exception, as they can be reloaded without restarting
the entire Agent.
@ -24,7 +24,7 @@ If the above commands fail, or you know that you're using a non-systemd system,
## Using `netdata`
Use the `netdata` command, typically located at `/usr/sbin/netdata`, to start the Netdata daemon.
Use the `netdata` command, typically located at `/usr/sbin/netdata`, to start the Netdata daemon.
```bash
sudo netdata

View file

@ -9,11 +9,11 @@ Netdata Agents are available in 2 versions:
| Stable | At most once per month, usually every 45 days | Receiving bug fixes and security updates between releases | Up to the 2nd stable release after them | Previous configuration semantics and data are supported by newer releases |
| Nightly | Every night at 00:00 UTC | Latest pre-released features | Up to the 2nd nightly release after them | Configuration and data of unreleased features may change between nightly releases |
> "Support Duration" defines the time we consider the release as actively used by users in production systems, so that all features of Netdata should be working like the day they were released. However, after the latest release, previous releases stop receiving bug fixes and security updates. All users are advised to update to the latest release to get the latest bug fixes.
> "Support Duration" defines the time we consider the release as actively used by users in production systems, so that all features of Netdata should be working like the day they were released. However, after the latest release, previous releases stop receiving bug fixes and security updates. All users are advised to update to the latest release to get the latest bug fixes.
## Binary Distribution Packages
Binary distribution packages are provided by Netdata, via CI integration, for the following platforms and architectures:
Binary distribution packages are provided by Netdata, via CI integration, for the following platforms and architectures:
| Platform | Platform Versions | Released Packages Architecture | Format |
|:-----------------------:|:--------------------------------:|:------------------------------------------------:|:------------:|
@ -30,7 +30,7 @@ Binary distribution packages are provided by Netdata, via CI integration, for th
| Redhat Enterprise Linux | 8.x, 9.x | `x86_64`, `AArch64` | RPM |
| Ubuntu | 20.04, 22.04, 23.10 | `x86_64`, `i386`, `ARMv7`, `AArch64` | DEB |
> IMPORTANT: Linux distributions frequently provide binary packages of Netdata. However, the packages you will find in the distributions' repositories may be outdated, incomplete, missing significant features or completely broken. We recommend using the packages we provide.
> IMPORTANT: Linux distributions frequently provide binary packages of Netdata. However, the packages you will find in the distributions' repositories may be outdated, incomplete, missing significant features or completely broken. We recommend using the packages we provide.
## Third-party Supported Binary Packages
@ -41,7 +41,6 @@ The following distributions always provide the latest stable version of Netdata:
| Arch Linux | Latest | All the Arch supported architectures |
| MacOS Brew | Latest | All the Brew supported architectures |
## Builds from Source
We guarantee Netdata builds from source for the platforms we provide automated binary packages. These platforms are automatically checked via our CI, and fixes are always applied to allow merging new code into the nightly versions.
@ -59,7 +58,7 @@ The following builds from source should usually work, although we don't regularl
## Static Builds and Unsupported Linux Versions
The static builds of Netdata can be used on any Linux platform of the supported architectures. The only requirement these static builds have is a working Linux kernel, any version. Everything else required for Netdata to run, is inside the package itself.
The static builds of Netdata can be used on any Linux platform of the supported architectures. The only requirement these static builds have is a working Linux kernel, any version. Everything else required for Netdata to run, is inside the package itself.
Static builds usually miss certain features that require operating-system support and cannot be provided in a generic way. These features include:

View file

@ -7,14 +7,14 @@ The Netdata Assistant is a feature that uses large language models and the Netda
- Navigate to the alerts tab
- If there are active alerts, the `Actions` column will have an Assistant button
![](https://github-production-user-asset-6210df.s3.amazonaws.com/24860547/253559075-815ca123-e2b6-4d44-a780-eeee64cca420.png)
![actions column](https://github-production-user-asset-6210df.s3.amazonaws.com/24860547/253559075-815ca123-e2b6-4d44-a780-eeee64cca420.png)
- Clicking on the Assistant button opens up as a floating window with customized information and troubleshooting tips for this alert (note that the window can follow you through your troubleshooting journey on Netdata dashboards)
![](https://github-production-user-asset-6210df.s3.amazonaws.com/24860547/253559645-62850c7b-cd1d-45f2-b2dd-474ecbf2b713.png)
![Netdata Assistant popup](https://github-production-user-asset-6210df.s3.amazonaws.com/24860547/253559645-62850c7b-cd1d-45f2-b2dd-474ecbf2b713.png)
- In case you need more information, or want to understand deeper, Netdata Assistant also provides useful web links to resources that can help.
- In case you need more information, or want to understand deeper, Netdata Assistant also provides useful web links to resources that can help.
![](https://github-production-user-asset-6210df.s3.amazonaws.com/24860547/253560071-e768fa6d-6c9a-4504-bb1f-17d5f4707627.png)
![useful resources](https://github-production-user-asset-6210df.s3.amazonaws.com/24860547/253560071-e768fa6d-6c9a-4504-bb1f-17d5f4707627.png)
- If there are no active alerts, you can still use Netdata Assistant by clicking the Assistant button on the Alert Configuration view.

View file

@ -30,5 +30,5 @@ Currently, the Netdata Cloud is not exposing stable API.
* get the cloud space list
```console
$ curl -H 'Accept: application/json' -H "Authorization: Bearer <token>" https://app.netdata.cloud/api/v2/spaces
curl -H 'Accept: application/json' -H "Authorization: Bearer <token>" https://app.netdata.cloud/api/v2/spaces
```

View file

@ -1,35 +1,36 @@
# Enterprise SSO Authentication
Netdata provides you with means to streamline and control how your team connects and authenticates to Netdata Cloud. We provide
diferent Single Sign-On (SSO) integrations that allow you to connect with the tool that your organization is using to manage your
different Single Sign-On (SSO) integrations that allow you to connect with the tool that your organization is using to manage your
user accounts.
> ❗ This feature focus is on the Authentication flow, it doesn't support the Authorization with managing Users and Roles.
> **Note** This feature focus is on the Authentication flow, it doesn't support the Authorization with managing Users and Roles.
## How to set it up?
If you want to setup your Netdata Space to allow user Authentication through an Enterprise SSO tool you need to:
* Confirm the integration to the tool you want is available ([Authentication integations](https://learn.netdata.cloud/docs/netdata-cloud/authentication-&-authorization/cloud-authentication-&-authorization-integrations))
* Confirm the integration to the tool you want is available ([Authentication integrations](https://learn.netdata.cloud/docs/netdata-cloud/authentication-&-authorization/cloud-authentication-&-authorization-integrations))
* Have a Netdata Cloud account
* Have Access to the Space as an administrator
* Your Space needs to be on the Business plan or higher
Once you ensure the above prerequisites you need to:
1. Click on the Space settings cog (located above your profile icon)
2. Click on the Authentication tab
3. Select the card for the integration you are looking for, click on Configure
4. Fill the required attributes need to establish the integration with the tool
## How to authenticate to Netdata?
### From Netdata Sign-up page
If you're starting your flow from Netdata sign-in page you need to:
1. Click on the link `Sign-in with an Enterprise Signle Sign-On (SSO)`
2. Enter your email address
3. Go to your mailbox and check the `Sign In to Nedata` email that you have received
1. Click on the link `Sign-in with an Enterprise Single Sign-On (SSO)`
2. Enter your email address
3. Go to your mailbox and check the `Sign In to Netdata` email that you have received
4. Click on the **Sign In** button
Note: If you're not authenticated on the Enterprise SSO tool you'll be prompted to authenticate there

View file

@ -108,9 +108,9 @@ In more detail, you can find on the following tables which functionalities are a
| **Functionality** | **Admin** | **Manager** | **Troubleshooter** | **Observer** | **Billing** | **Member** | Notes |
|:-------------------------------|:------------------:|:------------------:|:------------------:|:------------------:|:-----------:|:------------------:|:---------------------------------------------------------------------|
| See all functions in Room | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | - | :heavy_check_mark: |
| Run any function in Room | :heavy_check_mark: | :heavy_check_mark: | - | - | - | - |
| Run read-only function in Room | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | - | :heavy_check_mark: | |
| See all functions in Room | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | - | :heavy_check_mark: | :: |
| Run any function in Room | :heavy_check_mark: | :heavy_check_mark: | - | - | - | - | :: |
| Run read-only function in Room | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | - | :heavy_check_mark: | :: |
| Run sensitive function in Room | :heavy_check_mark: | :heavy_check_mark: | - | - | - | - | There isn't any function on this category yet, so subject to change. |
### Events feed

View file

@ -11,11 +11,13 @@ The following components are required to install Netdata Cloud On-Prem:
- **Kubectl**
The minimum requirements for Netdata-Cloud are:
- 4 CPU cores
- 15GiB of memory
- Cloud services are ephemeral
The requirements for the non-production Dependencies helm chart:
- 8 CPU cores
- 14GiB of memory
- 160GiB for PVCs (SSD)
@ -115,39 +117,40 @@ helm upgrade --wait --install netdata-cloud-onprem -n netdata-cloud --create-nam
## Short description of Netdata Cloud microservices
#### cloud-accounts-service
### cloud-accounts-service
Responsible for user registration & authentication. Manages user account information.
#### cloud-agent-data-ctrl-service
### cloud-agent-data-ctrl-service
Forwards request from the cloud to the relevant agents.
The requests include:
- Fetching chart metadata from the agent
- Fetching chart data from the agent
- Fetching function data from the agent
#### cloud-agent-mqtt-input-service
### cloud-agent-mqtt-input-service
Forwards MQTT messages emitted by the agent related to the agent entities to the internal Pulsar broker. These include agent connection state updates.
#### cloud-agent-mqtt-output-service
### cloud-agent-mqtt-output-service
Forwards Pulsar messages emitted in the cloud related to the agent entities to the MQTT broker. From there, the messages reach the relevant agent.
#### cloud-alarm-config-mqtt-input-service
### cloud-alarm-config-mqtt-input-service
Forwards MQTT messages emitted by the agent related to the alarm-config entities to the internal Pulsar broker. These include the data for the alarm configuration as seen by the agent.
#### cloud-alarm-log-mqtt-input-service
### cloud-alarm-log-mqtt-input-service
Forwards MQTT messages emitted by the agent related to the alarm-log entities to the internal Pulsar broker. These contain data about the alarm transitions that occurred in an agent.
#### cloud-alarm-mqtt-output-service
### cloud-alarm-mqtt-output-service
Forwards Pulsar messages emitted in the cloud related to the alarm entities to the MQTT broker. From there, the messages reach the relevant agent.
#### cloud-alarm-processor-service
### cloud-alarm-processor-service
Persists latest alert statuses received from the agent in the cloud.
Aggregates alert statuses from relevant node instances.
@ -155,69 +158,69 @@ Exposes API endpoints to fetch alert data for visualization on the cloud.
Determines if notifications need to be sent when alert statuses change and emits relevant messages to Pulsar.
Exposes API endpoints to store and return notification-silencing data.
#### cloud-alarm-streaming-service
### cloud-alarm-streaming-service
Responsible for starting the alert stream between the agent and the cloud.
Ensures that messages are processed in the correct order, and starts a reconciliation process between the cloud and the agent if out-of-order processing occurs.
#### cloud-charts-mqtt-input-service
### cloud-charts-mqtt-input-service
Forwards MQTT messages emitted by the agent related to the chart entities to the internal Pulsar broker. These include the chart metadata that is used to display relevant charts on the cloud.
#### cloud-charts-mqtt-output-service
### cloud-charts-mqtt-output-service
Forwards Pulsar messages emitted in the cloud related to the charts entities to the MQTT broker. From there, the messages reach the relevant agent.
#### cloud-charts-service
### cloud-charts-service
Exposes API endpoints to fetch the chart metadata.
Forwards data requests via the `cloud-agent-data-ctrl-service` to the relevant agents to fetch chart data points.
Exposes API endpoints to call various other endpoints on the agent, for instance, functions.
#### cloud-custom-dashboard-service
### cloud-custom-dashboard-service
Exposes API endpoints to fetch and store custom dashboard data.
#### cloud-environment-service
### cloud-environment-service
Serves as the first contact point between the agent and the cloud.
Returns authentication and MQTT endpoints to connecting agents.
#### cloud-feed-service
### cloud-feed-service
Processes incoming feed events and stores them in Elasticsearch.
Exposes API endpoints to fetch feed events from Elasticsearch.
#### cloud-frontend
### cloud-frontend
Contains the on-prem cloud website. Serves static content.
#### cloud-iam-user-service
### cloud-iam-user-service
Acts as a middleware for authentication on most of the API endpoints. Validates incoming token headers, injects the relevant ones, and forwards the requests.
#### cloud-metrics-exporter
### cloud-metrics-exporter
Exports various metrics from an On-Prem Cloud installation. Uses the Prometheus metric exposition format.
#### cloud-netdata-assistant
### cloud-netdata-assistant
Exposes API endpoints to fetch a human-friendly explanation of various netdata configuration options, namely the alerts.
#### cloud-node-mqtt-input-service
### cloud-node-mqtt-input-service
Forwards MQTT messages emitted by the agent related to the node entities to the internal Pulsar broker. These include the node metadata as well as their connectivity state, either direct or via parents.
#### cloud-node-mqtt-output-service
### cloud-node-mqtt-output-service
Forwards Pulsar messages emitted in the cloud related to the charts entities to the MQTT broker. From there, the messages reach the relevant agent.
#### cloud-notifications-dispatcher-service
### cloud-notifications-dispatcher-service
Exposes API endpoints to handle integrations.
Handles incoming notification messages and uses the relevant channels(email, slack...) to notify relevant users.
#### cloud-spaceroom-service
### cloud-spaceroom-service
Exposes API endpoints to fetch and store relations between agents, nodes, spaces, users, and rooms.
Acts as a provider of authorization for other cloud endpoints.

View file

@ -4,7 +4,7 @@ Netdata Cloud is provided in two versions:
- **SaaS**, we run and maintain Netdata Cloud and users use it to complement their observability with the additional features it provides.
- **On Prem**, we provide a licensed copy of the Netdata Cloud software, that users can install and run at their premises.
- **On Prem**, we provide a licensed copy of the Netdata Cloud software, that users can install and run at their premises.
The pricing of both versions is similar, with the On-Prem version introducing a monthly fixed-fee for the extra support and packaging required when users are running Netdata Cloud by themselves.

View file

@ -47,7 +47,7 @@ sudo systemctl enable --now systemd-journal-gatewayd.socket
To use it, open your web browser and navigate to:
```
```txt
http://server.ip:19531/browse
```

View file

@ -26,7 +26,7 @@ This helps to also automate the distribution of the certificates to your servers
We suggest to keep this script and all the involved certificates at the journals centralization server, in the directory `/etc/ssl/systemd-journal`, so that you can make future changes as required. If you prefer to keep the certificate authority and all the certificates at a more secure location, just use the script on that location.
On the server that will issue the certificates (usually the centralizaton server), do the following:
On the server that will issue the certificates (usually the centralization server), do the following:
```bash
# install systemd-journal-remote to add the users and groups required and openssl for the certs

View file

@ -58,7 +58,7 @@ Save the file and restart Netdata.
While encrypting the connection between your parent and child nodes is recommended for security, it's not required to get started.
This example uses self-signed certificates.
This example uses self-signed certificates.
> **Note**
> This section assumes you have read the documentation on [how to edit the Netdata configuration files](/docs/netdata-agent/configuration/README.md).
@ -80,8 +80,6 @@ This example uses self-signed certificates.
3. Restart the Netdata Agent on both the parent and child nodes, to stream encrypted metrics using TLS/SSL.
## Troubleshooting Streaming Connections
You can find any issues related to streaming at Netdata logs.

View file

@ -152,7 +152,7 @@ include:
rate-limiting and automated blacklisting.
7. **Security-Focused Development Process** :
To ensure a secure environment, Netdata employs a security-focused development process. This includes the use of
static code analysers to identify potential security vulnerabilities in the codebase.
static code analyzers to identify potential security vulnerabilities in the codebase.
8. **High Security Standards** :
Netdata Cloud maintains high security standards and can provide additional customization on a per contract basis.
9. **Employee Security Practices** :

View file

@ -14,7 +14,6 @@ databases, sent to upstream Netdata servers, or archived to external time-series
>
> Users are responsible for backing up, recovering, and ensuring their data's availability because Netdata stores data locally on each system due to its decentralized architecture.
The Netdata Agent is programmed to safeguard user data. When collecting data, the raw data does not leave the host. All
plugins, even those running with escalated capabilities or privileges, perform a hard-coded data collection job. They do
not accept commands from Netdata, and the original application data collected do not leave the process they are
@ -60,7 +59,7 @@ information can be found [here](https://github.com/netdata/netdata/security/poli
The Netdata agent is resilient against common security threats such as DDoS attacks and SQL injections. For DDoS,
Netdata agent uses a fixed number of threads for processing requests, providing a cap on the resources that can be
consumed. It also automatically manages its memory to prevent overutilization. SQL injections are prevented as nothing
consumed. It also automatically manages its memory to prevent over-utilization. SQL injections are prevented as nothing
from the UI is passed back to the data collection plugins accessing databases.
Additionally, the Netdata agent is running as a normal, unprivileged, operating system user (a few data collections

View file

@ -44,7 +44,7 @@ Netdata Cloud does not store user credentials.
Netdata Cloud offers a variety of security features, including infrastructure-level dashboards, centralized alerts
notifications, auditing logs, and role-based access to different segments of the infrastructure. The cloud service
employs several protection mechanisms against DDoS attacks, such as rate-limiting and automated blacklisting. It also
uses static code analysers to prevent other types of attacks.
uses static code analyzers to prevent other types of attacks.
In the event of potential security vulnerabilities or incidents, Netdata Cloud follows the same process as the Netdata
agent. Every report is acknowledged and analyzed by the Netdata team within three working days, and the team keeps the

View file

@ -23,8 +23,6 @@ If you don't see the app/service you'd like to monitor in this list:
- If you don't see the collector there, you can make a [feature request](https://github.com/netdata/netdata/issues/new/choose) on GitHub.
- If you have basic software development skills, you can add your own plugin in [Go](/src/go/plugin/go.d/README.md#how-to-develop-a-collector) or [Python](/docs/developer-and-contributor-corner/python-collector.md)
## Available Data Collection Integrations
<!-- AUTOGENERATED PART BY integrations/gen_doc_collector_page.py SCRIPT, DO NOT EDIT MANUALLY -->
### APM

View file

@ -1,6 +1,6 @@
# Web server
The Netdata web server is `static-threaded`, with a fixed, configurable number of threads.
The Netdata web server is `static-threaded`, with a fixed, configurable number of threads.
All the threads are concurrently listening for web requests on the same sockets, and the kernel distributes the incoming
requests to them. Each thread uses non-blocking I/O so it can serve any number of web requests in parallel.
@ -9,53 +9,48 @@ This web server respects the `keep-alive` HTTP header to serve multiple HTTP req
## Configuration
From within your Netdata config directory (typically `/etc/netdata`), [use `edit-config`](/docs/netdata-agent/configuration/README.md) to
open `netdata.conf`.
```
sudo ./edit-config netdata.conf
```
Edit `netdata.conf` using the [`edit-config` script](/docs/netdata-agent/configuration/README.md)
Scroll down to the `[web]` section to find the following settings.
## Settings
| Setting | Default | Description |
|:-----------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `ssl key` | `/etc/netdata/ssl/key.pem` | Declare the location of an SSL key to [enable HTTPS](#enable-httpstls-support). |
| `ssl certificate` | `/etc/netdata/ssl/cert.pem` | Declare the location of an SSL certificate to [enable HTTPS](#enable-httpstls-support). |
| `tls version` | `1.3` | Choose which TLS version to use. While all versions are allowed (`1` or `1.0`, `1.1`, `1.2` and `1.3`), we recommend `1.3` for the most secure encryption. If left blank, Netdata uses the highest available protocol version on your system. |
| `tls ciphers` | `none` | Choose which TLS cipher to use. Options include `TLS_AES_256_GCM_SHA384`, `TLS_CHACHA20_POLY1305_SHA256`, and `TLS_AES_128_GCM_SHA256`. If left blank, Netdata uses the default cipher list for that protocol provided by your TLS implementation. |
| Setting | Default | Description |
|:-----------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `ssl key` | `/etc/netdata/ssl/key.pem` | Declare the location of an SSL key to [enable HTTPS](#enable-httpstls-support). |
| `ssl certificate` | `/etc/netdata/ssl/cert.pem` | Declare the location of an SSL certificate to [enable HTTPS](#enable-httpstls-support). |
| `tls version` | `1.3` | Choose which TLS version to use. While all versions are allowed (`1` or `1.0`, `1.1`, `1.2` and `1.3`), we recommend `1.3` for the most secure encryption. If left blank, Netdata uses the highest available protocol version on your system. |
| `tls ciphers` | `none` | Choose which TLS cipher to use. Options include `TLS_AES_256_GCM_SHA384`, `TLS_CHACHA20_POLY1305_SHA256`, and `TLS_AES_128_GCM_SHA256`. If left blank, Netdata uses the default cipher list for that protocol provided by your TLS implementation. |
| `ses max window` | `15` | See [single exponential smoothing](/src/web/api/queries/ses/README.md). |
| `des max window` | `15` | See [double exponential smoothing](/src/web/api/queries/des/README.md). |
| `mode` | `static-threaded` | Turns on (`static-threaded` or off (`none`) the static-threaded web server. See the [example](#disable-the-web-server) to turn off the web server and disable the dashboard. |
| `listen backlog` | `4096` | The port backlog. Check `man 2 listen`. |
| `default port` | `19999` | The listen port for the static web server. |
| `web files owner` | `netdata` | The user that owns the web static files. Netdata will refuse to serve a file that is not owned by this user, even if it has read access to that file. If the user given is not found, Netdata will only serve files owned by user given in `run as user`. |
| `web files group` | `netdata` | If this is set, Netdata will check if the file is owned by this group and refuse to serve the file if it's not. |
| `disconnect idle clients after` | `1m` | The time in seconds to disconnect web clients after being totally idle. |
| `timeout for first request` | `1m` | How long to wait for a client to send a request before closing the socket. Prevents slow request attacks. |
| `mode` | `static-threaded` | Turns on (`static-threaded` or off (`none`) the static-threaded web server. See the [example](#disable-the-web-server) to turn off the web server and disable the dashboard. |
| `listen backlog` | `4096` | The port backlog. Check `man 2 listen`. |
| `default port` | `19999` | The listen port for the static web server. |
| `web files owner` | `netdata` | The user that owns the web static files. Netdata will refuse to serve a file that is not owned by this user, even if it has read access to that file. If the user given is not found, Netdata will only serve files owned by user given in `run as user`. |
| `web files group` | `netdata` | If this is set, Netdata will check if the file is owned by this group and refuse to serve the file if it's not. |
| `disconnect idle clients after` | `1m` | The time in seconds to disconnect web clients after being totally idle. |
| `timeout for first request` | `1m` | How long to wait for a client to send a request before closing the socket. Prevents slow request attacks. |
| `accept a streaming request every` | `off` | Can be used to set a limit on how often a parent node will accept streaming requests from child nodes in a [streaming and replication setup](/src/streaming/README.md). |
| `respect do not track policy` | `no` | If set to `yes`, Netdata will respect the user's browser preferences for [Do Not Track](https://www.eff.org/issues/do-not-track) (DNT) and storing cookies. If DNT is _enabled_ in the browser, and this option is set to `yes`, nodes will not connect to any [registry](/src/registry/README.md). For certain browsers, users must disable DNT and change this option to `yes` for full functionality. |
| `x-frame-options response header` | ` ` | Avoid [clickjacking attacks](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options), by ensuring that the content is not embedded into other sites. |
| `allow connections from` | `localhost *` | Declare which IP addresses or full-qualified domain names (FQDNs) are allowed to connect to the web server, including the [dashboard](/docs/dashboards-and-charts/README.md) or [HTTP API](/src/web/api/README.md). This is a global setting with higher priority to any of the ones below. |
| `allow connections by dns` | `heuristic` | See the [access list examples](#access-lists) for details on using `allow` settings. |
| `allow dashboard from` | `localhost *` | |
| `allow dashboard by dns` | `heuristic` | |
| `allow badges from` | `*` | |
| `allow badges by dns` | `heuristic` | |
| `allow streaming from` | `*` | |
| `allow streaming by dns` | `heuristic` | |
| `allow netdata.conf` | `localhost fd* 10.* 192.168.* 172.16.* 172.17.* 172.18.* 172.19.* 172.20.* 172.21.* 172.22.* 172.23.* 172.24.* 172.25.* 172.26.* 172.27.* 172.28.* 172.29.* 172.30.* 172.31.* UNKNOWN` | |
| `allow netdata.conf by dns` | `no` | |
| `allow management from` | `localhost` | |
| `allow management by dns` | `heuristic` | |
| `enable gzip compression` | `yes` | When set to `yes`, Netdata web responses will be GZIP compressed, if the web client accepts such responses. |
| `gzip compression strategy` | `default` | Valid settings are `default`, `filtered`, `huffman only`, `rle` and `fixed`. |
| `gzip compression level` | `3` | Valid settings are 1 (fastest) to 9 (best ratio). |
| `web server threads` | ` ` | How many processor threads the web server is allowed. The default is system-specific, the minimum of `6` or the number of CPU cores. |
| `web server max sockets` | ` ` | Available sockets. The default is system-specific, automatically adjusted to 50% of the max number of open files Netdata is allowed to use (via `/etc/security/limits.conf` or systemd), to allow enough file descriptors to be available for data collection. |
| `custom dashboard_info.js` | ` ` | Specifies the location of a custom `dashboard.js` file. See [customizing the standard dashboard](/docs/developer-and-contributor-corner/customize.md#customize-the-standard-dashboard) for details. |
| `x-frame-options response header` | `` | Avoid [clickjacking attacks](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options), by ensuring that the content is not embedded into other sites. |
| `allow connections from` | `localhost *` | Declare which IP addresses or full-qualified domain names (FQDNs) are allowed to connect to the web server, including the [dashboard](/docs/dashboards-and-charts/README.md) or [HTTP API](/src/web/api/README.md). This is a global setting with higher priority to any of the ones below. |
| `allow connections by dns` | `heuristic` | See the [access list examples](#access-lists) for details on using `allow` settings. |
| `allow dashboard from` | `localhost *` | |
| `allow dashboard by dns` | `heuristic` | |
| `allow badges from` | `*` | |
| `allow badges by dns` | `heuristic` | |
| `allow streaming from` | `*` | |
| `allow streaming by dns` | `heuristic` | |
| `allow netdata.conf` | `localhost fd* 10.* 192.168.* 172.16.* 172.17.* 172.18.* 172.19.* 172.20.* 172.21.* 172.22.* 172.23.* 172.24.* 172.25.* 172.26.* 172.27.* 172.28.* 172.29.* 172.30.* 172.31.* UNKNOWN` | |
| `allow netdata.conf by dns` | `no` | |
| `allow management from` | `localhost` | |
| `allow management by dns` | `heuristic` | |
| `enable gzip compression` | `yes` | When set to `yes`, Netdata web responses will be GZIP compressed, if the web client accepts such responses. |
| `gzip compression strategy` | `default` | Valid settings are `default`, `filtered`, `huffman only`, `rle` and `fixed`. |
| `gzip compression level` | `3` | Valid settings are 1 (fastest) to 9 (best ratio). |
| `web server threads` | `` | How many processor threads the web server is allowed. The default is system-specific, the minimum of `6` or the number of CPU cores. |
| `web server max sockets` | `` | Available sockets. The default is system-specific, automatically adjusted to 50% of the max number of open files Netdata is allowed to use (via `/etc/security/limits.conf` or systemd), to allow enough file descriptors to be available for data collection. |
| `custom dashboard_info.js` | `` | Specifies the location of a custom `dashboard.js` file. See [customizing the standard dashboard](/docs/developer-and-contributor-corner/customize.md#customize-the-standard-dashboard) for details. |
## Examples
@ -63,7 +58,7 @@ Scroll down to the `[web]` section to find the following settings.
Disable the web server by editing `netdata.conf` and setting:
```
```txt
[web]
mode = none
```
@ -72,7 +67,7 @@ Disable the web server by editing `netdata.conf` and setting:
Control the number of threads and sockets with the following settings:
```
```txt
[web]
web server threads = 4
web server max sockets = 512
@ -84,7 +79,7 @@ Netdata can bind to multiple IPs and ports, offering access to different service
The ports to bind are controlled via `[web].bind to`, like this:
```
```txt
[web]
default port = 19999
bind to = 127.0.0.1=dashboard^SSL=optional 10.1.1.1:19998=management|netdata.conf hostname:19997=badges [::]:19996=streaming^SSL=force localhost:19995=registry *:http=dashboard unix:/run/netdata/netdata.sock
@ -92,25 +87,25 @@ The ports to bind are controlled via `[web].bind to`, like this:
Using the above, Netdata will bind to:
- IPv4 127.0.0.1 at port 19999 (port was used from `default port`). Only the UI (dashboard) and the read API will be accessible on this port. Both HTTP and HTTPS requests will be accepted.
- IPv4 10.1.1.1 at port 19998. The management API and `netdata.conf` will be accessible on this port.
- All the IPs `hostname` resolves to (both IPv4 and IPv6 depending on the resolved IPs) at port 19997. Only badges will be accessible on this port.
- All IPv6 IPs at port 19996. Only metric streaming requests from other Netdata agents will be accepted on this port. Only encrypted streams will be allowed (i.e. child nodes also need to be [configured for TLS](/src/streaming/README.md).
- All the IPs `localhost` resolves to (both IPv4 and IPv6 depending the resolved IPs) at port 19996. This port will only accept registry API requests.
- All IPv4 and IPv6 IPs at port `http` as set in `/etc/services`. Only the UI (dashboard) and the read API will be accessible on this port.
- Unix domain socket `/run/netdata/netdata.sock`. All requests are serviceable on this socket. Note that in some OSs like Fedora, every service sees a different `/tmp`, so don't create a Unix socket under `/tmp`. `/run` or `/var/run` is suggested.
- IPv4 127.0.0.1 at port 19999 (port was used from `default port`). Only the UI (dashboard) and the read API will be accessible on this port. Both HTTP and HTTPS requests will be accepted.
- IPv4 10.1.1.1 at port 19998. The management API and `netdata.conf` will be accessible on this port.
- All the IPs `hostname` resolves to (both IPv4 and IPv6 depending on the resolved IPs) at port 19997. Only badges will be accessible on this port.
- All IPv6 IPs at port 19996. Only metric streaming requests from other Netdata agents will be accepted on this port. Only encrypted streams will be allowed (i.e. child nodes also need to be [configured for TLS](/src/streaming/README.md).
- All the IPs `localhost` resolves to (both IPv4 and IPv6 depending the resolved IPs) at port 19996. This port will only accept registry API requests.
- All IPv4 and IPv6 IPs at port `http` as set in `/etc/services`. Only the UI (dashboard) and the read API will be accessible on this port.
- Unix domain socket `/run/netdata/netdata.sock`. All requests are serviceable on this socket. Note that in some OSs like Fedora, every service sees a different `/tmp`, so don't create a Unix socket under `/tmp`. `/run` or `/var/run` is suggested.
The option `[web].default port` is used when an entries in `[web].bind to` do not specify a port.
Note that the access permissions specified with the `=request type|request type|...` format are available from version 1.12 onwards.
As shown in the example above, these permissions are optional, with the default being to permit all request types on the specified port.
The request types are strings identical to the `allow X from` directives of the access lists, i.e. `dashboard`, `streaming`, `registry`, `netdata.conf`, `badges` and `management`.
The access lists themselves and the general setting `allow connections from` in the next section are applied regardless of the ports that are configured to provide these services.
Note that the access permissions specified with the `=request type|request type|...` format are available from version 1.12 onwards.
As shown in the example above, these permissions are optional, with the default being to permit all request types on the specified port.
The request types are strings identical to the `allow X from` directives of the access lists, i.e. `dashboard`, `streaming`, `registry`, `netdata.conf`, `badges` and `management`.
The access lists themselves and the general setting `allow connections from` in the next section are applied regardless of the ports that are configured to provide these services.
The API requests are serviced as follows:
- `dashboard` gives access to the UI, the read API and badges API calls.
- `badges` gives access only to the badges API calls.
- `management` gives access only to the management API calls.
- `dashboard` gives access to the UI, the read API and badges API calls.
- `badges` gives access only to the badges API calls.
- `management` gives access only to the management API calls.
### Enable HTTPS/TLS support
@ -128,8 +123,8 @@ To enable TLS, provide the path to your certificate and private key in the `[web
```conf
[web]
ssl key = /etc/netdata/ssl/key.pem
ssl certificate = /etc/netdata/ssl/cert.pem
ssl key = /etc/netdata/ssl/key.pem
ssl certificate = /etc/netdata/ssl/cert.pem
```
Both files must be readable by the `netdata` user. If either of these files do not exist or are unreadable, Netdata will fall back to HTTP. For a parent-child connection, only the parent needs these settings.
@ -164,45 +159,45 @@ If you do not specify these options, Netdata will use the highest available prot
When the certificates are defined and unless any other options are provided, a Netdata server will:
- Redirect all incoming HTTP web server requests to HTTPS. Applies to the dashboard, the API, `netdata.conf` and badges.
- Allow incoming child connections to use both unencrypted and encrypted communications for streaming.
- Redirect all incoming HTTP web server requests to HTTPS. Applies to the dashboard, the API, `netdata.conf` and badges.
- Allow incoming child connections to use both unencrypted and encrypted communications for streaming.
To change this behavior, you need to modify the `bind to` setting in the `[web]` section of `netdata.conf`. At the end of each port definition, append `^SSL=force` or `^SSL=optional`. What happens with these settings differs, depending on whether the port is used for HTTP/S requests, or for streaming.
| SSL setting | HTTP requests|HTTPS requests|Unencrypted Streams|Encrypted Streams|
|:---------:|:-----------:|:------------:|:-----------------:|:----------------|
| none | Redirected to HTTPS|Accepted|Accepted|Accepted|
| `force`| Redirected to HTTPS|Accepted|Denied|Accepted|
| `optional`| Accepted|Accepted|Accepted|Accepted|
| SSL setting | HTTP requests | HTTPS requests | Unencrypted Streams | Encrypted Streams |
|:-----------:|:-------------------:|:--------------:|:-------------------:|:------------------|
| none | Redirected to HTTPS | Accepted | Accepted | Accepted |
| `force` | Redirected to HTTPS | Accepted | Denied | Accepted |
| `optional` | Accepted | Accepted | Accepted | Accepted |
Example:
```
```txt
[web]
bind to = *=dashboard|registry|badges|management|streaming|netdata.conf^SSL=force
```
For information how to configure the child to use TLS, check [securing the communication](/src/streaming/README.md#securing-streaming-communications) in the streaming documentation. There you will find additional details on the expected behavior for client and server nodes, when their respective TLS options are enabled.
For information how to configure the child to use TLS, check [securing the communication](/src/streaming/README.md#securing-streaming-with-tlsssl) in the streaming documentation. There you will find additional details on the expected behavior for client and server nodes, when their respective TLS options are enabled.
When we define the use of SSL in a Netdata agent for different ports, Netdata will apply the behavior specified on each port. For example, using the configuration line below:
```
```txt
[web]
bind to = *=dashboard|registry|badges|management|streaming|netdata.conf^SSL=force *:20000=netdata.conf^SSL=optional *:20001=dashboard|registry
```
Netdata will:
- Force all HTTP requests to the default port to be redirected to HTTPS (same port).
- Refuse unencrypted streaming connections from child nodes on the default port.
- Allow both HTTP and HTTPS requests to port 20000 for `netdata.conf`
- Force HTTP requests to port 20001 to be redirected to HTTPS (same port). Only allow requests for the dashboard, the read API and the registry on port 20001.
- Force all HTTP requests to the default port to be redirected to HTTPS (same port).
- Refuse unencrypted streaming connections from child nodes on the default port.
- Allow both HTTP and HTTPS requests to port 20000 for `netdata.conf`
- Force HTTP requests to port 20001 to be redirected to HTTPS (same port). Only allow requests for the dashboard, the read API and the registry on port 20001.
#### TLS/SSL errors
When you start using Netdata with TLS, you may find errors in the Netdata log, which is stored at `/var/log/netdata/error.log` by default.
Most of the time, these errors are due to incompatibilities between your browser's options related to TLS/SSL protocols and Netdata's internal configuration. The most common error is `error:00000006:lib(0):func(0):EVP lib`.
Most of the time, these errors are due to incompatibilities between your browser's options related to TLS/SSL protocols and Netdata's internal configuration. The most common error is `error:00000006:lib(0):func(0):EVP lib`.
In the near future, Netdata will allow our users to change the internal configuration to avoid similar errors. Until then, we're recommending only the most common and safe encryption protocols listed above.
@ -210,35 +205,35 @@ In the near future, Netdata will allow our users to change the internal configur
Netdata supports access lists in `netdata.conf`:
```
```txt
[web]
allow connections from = localhost *
allow dashboard from = localhost *
allow badges from = *
allow streaming from = *
allow netdata.conf from = localhost fd* 10.* 192.168.* 172.16.* 172.17.* 172.18.* 172.19.* 172.20.* 172.21.* 172.22.* 172.23.* 172.24.* 172.25.* 172.26.* 172.27.* 172.28.* 172.29.* 172.30.* 172.31.*
allow management from = localhost
allow connections from = localhost *
allow dashboard from = localhost *
allow badges from = *
allow streaming from = *
allow netdata.conf from = localhost fd* 10.* 192.168.* 172.16.* 172.17.* 172.18.* 172.19.* 172.20.* 172.21.* 172.22.* 172.23.* 172.24.* 172.25.* 172.26.* 172.27.* 172.28.* 172.29.* 172.30.* 172.31.*
allow management from = localhost
```
`*` does string matches on the IPs or FQDNs of the clients.
- `allow connections from` matches anyone that connects on the Netdata port(s).
- `allow connections from` matches anyone that connects on the Netdata port(s).
So, if someone is not allowed, it will be connected and disconnected immediately, without reading even
a single byte from its connection. This is a global setting with higher priority to any of the ones below.
- `allow dashboard from` receives the request and examines if it is a static dashboard file or an API call the
- `allow dashboard from` receives the request and examines if it is a static dashboard file or an API call the
dashboards do.
- `allow badges from` checks if the API request is for a badge. Badges are not matched by `allow dashboard from`.
- `allow badges from` checks if the API request is for a badge. Badges are not matched by `allow dashboard from`.
- `allow streaming from` checks if the child willing to stream metrics to this Netdata is allowed.
- `allow streaming from` checks if the child willing to stream metrics to this Netdata is allowed.
This can be controlled per API KEY and MACHINE GUID in `stream.conf`.
The setting in `netdata.conf` is checked before the ones in `stream.conf`.
- `allow netdata.conf from` checks the IP to allow `http://netdata.host:19999/netdata.conf`.
- `allow netdata.conf from` checks the IP to allow `http://netdata.host:19999/netdata.conf`.
The IPs listed are all the private IPv4 addresses, including link local IPv6 addresses. Keep in mind that connections to Netdata API ports are filtered by `allow connections from`. So, IPs allowed by `allow netdata.conf from` should also be allowed by `allow connections from`.
- `allow management from` checks the IPs to allow API management calls. Management via the API is currently supported for [health](/src/web/api/health/README.md#health-management-api)
- `allow management from` checks the IPs to allow API management calls. Management via the API is currently supported for [health](/src/web/api/health/README.md#health-management-api)
In order to check the FQDN of the connection without opening the Netdata agent to DNS-spoofing, a reverse-dns record
must be setup for the connecting host. At connection time the reverse-dns of the peer IP address is resolved, and
@ -247,13 +242,13 @@ a forward DNS resolution is made to validate the IP address against the name-pat
Please note that this process can be expensive on a machine that is serving many connections. Each access list has an
associated configuration option to turn off DNS-based patterns completely to avoid incurring this cost at run-time:
```
allow connections by dns = heuristic
allow dashboard by dns = heuristic
allow badges by dns = heuristic
allow streaming by dns = heuristic
allow netdata.conf by dns = no
allow management by dns = heuristic
```conf
allow connections by dns = heuristic
allow dashboard by dns = heuristic
allow badges by dns = heuristic
allow streaming by dns = heuristic
allow netdata.conf by dns = no
allow management by dns = heuristic
```
The three possible values for each of these options are `yes`, `no` and `heuristic`. The `heuristic` option disables
@ -264,8 +259,8 @@ present that may match DNS FQDNs.
If you publish your Netdata web server to the internet, you may want to apply some protection against DDoS:
1. Use the `static-threaded` web server (it is the default)
2. Use reasonable `[web].web server max sockets` (the default is)
3. Don't use all your CPU cores for Netdata (lower `[web].web server threads`)
4. Run the `netdata` process with a low process scheduling priority (the default is the lowest)
5. If possible, proxy Netdata via a full featured web server (Nginx, Apache, etc)
1. Use the `static-threaded` web server (it is the default)
2. Use reasonable `[web].web server max sockets` (the default is)
3. Don't use all your CPU cores for Netdata (lower `[web].web server threads`)
4. Run the `netdata` process with a low process scheduling priority (the default is the lowest)
5. If possible, proxy Netdata via a full featured web server (Nginx, Apache, etc)