summaryrefslogtreecommitdiffstats
path: root/collectors/python.d.plugin
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2021-03-31 12:59:21 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2021-03-31 12:59:21 +0000
commitbb8713bbc1c4594366fc735c04910edbf4c61aab (patch)
treed7da56c0b89aa371dd8ad986995dd145fdf6670a /collectors/python.d.plugin
parentReleasing debian version 1.29.3-4. (diff)
downloadnetdata-bb8713bbc1c4594366fc735c04910edbf4c61aab.tar.xz
netdata-bb8713bbc1c4594366fc735c04910edbf4c61aab.zip
Merging upstream version 1.30.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'collectors/python.d.plugin')
-rw-r--r--collectors/python.d.plugin/README.md7
-rw-r--r--collectors/python.d.plugin/adaptec_raid/README.md4
-rw-r--r--collectors/python.d.plugin/adaptec_raid/adaptec_raid.chart.py10
-rw-r--r--collectors/python.d.plugin/alarms/README.md4
-rw-r--r--collectors/python.d.plugin/alarms/alarms.chart.py43
-rw-r--r--collectors/python.d.plugin/alarms/alarms.conf4
-rw-r--r--collectors/python.d.plugin/anomalies/README.md3
-rw-r--r--collectors/python.d.plugin/chrony/README.md4
-rw-r--r--collectors/python.d.plugin/example/example.chart.py7
-rw-r--r--collectors/python.d.plugin/example/example.conf25
-rw-r--r--collectors/python.d.plugin/hpssa/README.md7
-rw-r--r--collectors/python.d.plugin/megacli/README.md3
-rw-r--r--collectors/python.d.plugin/samba/README.md4
-rw-r--r--collectors/python.d.plugin/smartd_log/smartd_log.chart.py9
14 files changed, 98 insertions, 36 deletions
diff --git a/collectors/python.d.plugin/README.md b/collectors/python.d.plugin/README.md
index a05bc81d..312986e4 100644
--- a/collectors/python.d.plugin/README.md
+++ b/collectors/python.d.plugin/README.md
@@ -84,7 +84,12 @@ If you plan to submit the module in a PR, make sure and go through the [PR check
For a quick start, you can look at the [example
plugin](https://raw.githubusercontent.com/netdata/netdata/master/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 Netdata (as opposed to having to install Netdata from source again with your new changes) to can copy over the relevant file to where Netdata expects it and then either `sudo service netdata restart` to have it be picked up and used by Netdata or you can just run the updated collector in debug mode by following a process like below (this assumes you have [installed Netdata from a GitHub fork](https://learn.netdata.cloud/docs/agent/packaging/installer/methods/manual) you have made to do your development on).
+**Note**: If you are working 'locally' on a new collector and would like to run it in an already installed and running
+Netdata (as opposed to having to install Netdata from source again with your new changes) to can copy over the relevant
+file to where Netdata expects it and then either `sudo systemctl restart netdata` to have it be picked up and used by
+Netdata or you can just run the updated collector in debug mode by following a process like below (this assumes you have
+[installed Netdata from a GitHub fork](https://learn.netdata.cloud/docs/agent/packaging/installer/methods/manual) you
+have made to do your development on).
```bash
# clone your fork (done once at the start but shown here for clarity)
diff --git a/collectors/python.d.plugin/adaptec_raid/README.md b/collectors/python.d.plugin/adaptec_raid/README.md
index b14e8f9b..4e99508b 100644
--- a/collectors/python.d.plugin/adaptec_raid/README.md
+++ b/collectors/python.d.plugin/adaptec_raid/README.md
@@ -60,8 +60,8 @@ cd /etc/netdata # Replace this path with your Netdata config directory, if dif
sudo ./edit-config python.d.conf
```
-Change the value of the `adaptec_raid` setting to `yes`. Save the file and restart the Netdata Agent
-with `sudo systemctl restart netdata`, or the appropriate method for your system.
+Change the value of the `adaptec_raid` setting to `yes`. Save the file and restart the Netdata Agent with `sudo
+systemctl restart netdata`, or the [appropriate method](/docs/configure/start-stop-restart.md) for your system.
## Configuration
diff --git a/collectors/python.d.plugin/adaptec_raid/adaptec_raid.chart.py b/collectors/python.d.plugin/adaptec_raid/adaptec_raid.chart.py
index 564c2ce8..bb59d88e 100644
--- a/collectors/python.d.plugin/adaptec_raid/adaptec_raid.chart.py
+++ b/collectors/python.d.plugin/adaptec_raid/adaptec_raid.chart.py
@@ -23,20 +23,22 @@ ORDER = [
CHARTS = {
'ld_status': {
- 'options': [None, 'Status Is Not OK', 'bool', 'logical devices', 'adapter_raid.ld_status', 'line'],
+ 'options': [None, 'Status of logical devices (1: Failed or Degraded)', 'bool', 'logical devices',
+ 'adaptec_raid.ld_status', 'line'],
'lines': []
},
'pd_state': {
- 'options': [None, 'State Is Not OK', 'bool', 'physical devices', 'adapter_raid.pd_state', 'line'],
+ 'options': [None, 'State of physical devices (1: not Online)', 'bool', 'physical devices',
+ 'adaptec_raid.pd_state', 'line'],
'lines': []
},
'pd_smart_warnings': {
'options': [None, 'S.M.A.R.T warnings', 'count', 'physical devices',
- 'adapter_raid.smart_warnings', 'line'],
+ 'adaptec_raid.smart_warnings', 'line'],
'lines': []
},
'pd_temperature': {
- 'options': [None, 'Temperature', 'celsius', 'physical devices', 'adapter_raid.temperature', 'line'],
+ 'options': [None, 'Temperature', 'celsius', 'physical devices', 'adaptec_raid.temperature', 'line'],
'lines': []
},
}
diff --git a/collectors/python.d.plugin/alarms/README.md b/collectors/python.d.plugin/alarms/README.md
index ea96061c..3f2a8176 100644
--- a/collectors/python.d.plugin/alarms/README.md
+++ b/collectors/python.d.plugin/alarms/README.md
@@ -23,7 +23,7 @@ Below is an example of the chart produced when running `stress-ng --all 2` for a
## Configuration
-Enable the collector and restart Netdata.
+Enable the collector and [restart Netdata](/docs/configure/start-stop-restart.md).
```bash
cd /etc/netdata/
@@ -51,6 +51,8 @@ local:
CLEAR: 0
WARNING: 1
CRITICAL: 2
+ # set to true to include a chart with calculated alarm values over time
+ collect_alarm_values: false
```
It will default to pulling all alarms at each time step from the Netdata rest api at `http://127.0.0.1:19999/api/v1/alarms?all`
diff --git a/collectors/python.d.plugin/alarms/alarms.chart.py b/collectors/python.d.plugin/alarms/alarms.chart.py
index 973a1f38..1eec4045 100644
--- a/collectors/python.d.plugin/alarms/alarms.chart.py
+++ b/collectors/python.d.plugin/alarms/alarms.chart.py
@@ -11,36 +11,44 @@ update_every = 10
disabled_by_default = True
-def charts_template(sm):
+def charts_template(sm, alarm_status_chart_type='line'):
order = [
'alarms',
+ 'values'
]
mappings = ', '.join(['{0}={1}'.format(k, v) for k, v in sm.items()])
charts = {
'alarms': {
- 'options': [None, 'Alarms ({0})'.format(mappings), 'status', 'alarms', 'alarms.status', 'line'],
+ 'options': [None, 'Alarms ({0})'.format(mappings), 'status', 'status', 'alarms.status', alarm_status_chart_type],
'lines': [],
'variables': [
['alarms_num'],
]
+ },
+ 'values': {
+ 'options': [None, 'Alarm Values', 'value', 'value', 'alarms.value', 'line'],
+ 'lines': [],
}
}
return order, charts
DEFAULT_STATUS_MAP = {'CLEAR': 0, 'WARNING': 1, 'CRITICAL': 2}
-
DEFAULT_URL = 'http://127.0.0.1:19999/api/v1/alarms?all'
+DEFAULT_COLLECT_ALARM_VALUES = False
+DEFAULT_ALARM_STATUS_CHART_TYPE = 'line'
class Service(UrlService):
def __init__(self, configuration=None, name=None):
UrlService.__init__(self, configuration=configuration, name=name)
self.sm = self.configuration.get('status_map', DEFAULT_STATUS_MAP)
- self.order, self.definitions = charts_template(self.sm)
+ self.alarm_status_chart_type = self.configuration.get('alarm_status_chart_type', DEFAULT_ALARM_STATUS_CHART_TYPE)
+ self.order, self.definitions = charts_template(self.sm, self.alarm_status_chart_type)
self.url = self.configuration.get('url', DEFAULT_URL)
- self.collected_alarms = set()
+ self.collect_alarm_values = bool(self.configuration.get('collect_alarm_values', DEFAULT_COLLECT_ALARM_VALUES))
+ self.collected_dims = {'alarms': set(), 'values': set()}
def _get_data(self):
raw_data = self._get_raw_data()
@@ -51,21 +59,26 @@ class Service(UrlService):
alarms = raw_data.get('alarms', {})
data = {a: self.sm[alarms[a]['status']] for a in alarms if alarms[a]['status'] in self.sm}
- self.update_charts(alarms, data)
+ self.update_charts('alarms', data)
data['alarms_num'] = len(data)
+ if self.collect_alarm_values:
+ data_values = {'{}_value'.format(a): alarms[a]['value'] * 100 for a in alarms if 'value' in alarms[a] and alarms[a]['value'] is not None}
+ self.update_charts('values', data_values, divisor=100)
+ data.update(data_values)
+
return data
- def update_charts(self, alarms, data):
+ def update_charts(self, chart, data, algorithm='absolute', multiplier=1, divisor=1):
if not self.charts:
return
- for a in data:
- if a not in self.collected_alarms:
- self.collected_alarms.add(a)
- self.charts['alarms'].add_dimension([a, a, 'absolute', '1', '1'])
+ for dim in data:
+ if dim not in self.collected_dims[chart]:
+ self.collected_dims[chart].add(dim)
+ self.charts[chart].add_dimension([dim, dim, algorithm, multiplier, divisor])
- for a in list(self.collected_alarms):
- if a not in alarms:
- self.collected_alarms.remove(a)
- self.charts['alarms'].del_dimension(a, hide=False)
+ for dim in list(self.collected_dims[chart]):
+ if dim not in data:
+ self.collected_dims[chart].remove(dim)
+ self.charts[chart].del_dimension(dim, hide=False)
diff --git a/collectors/python.d.plugin/alarms/alarms.conf b/collectors/python.d.plugin/alarms/alarms.conf
index fd7780c5..5e83d8f5 100644
--- a/collectors/python.d.plugin/alarms/alarms.conf
+++ b/collectors/python.d.plugin/alarms/alarms.conf
@@ -48,3 +48,7 @@ local:
CLEAR: 0
WARNING: 1
CRITICAL: 2
+ # set to true to include a chart with calculated alarm values over time
+ collect_alarm_values: false
+ # define the type of chart for plotting status over time e.g. 'line' or 'stacked'
+ alarm_status_chart_type: 'line'
diff --git a/collectors/python.d.plugin/anomalies/README.md b/collectors/python.d.plugin/anomalies/README.md
index 862f4f34..bcbfdbcd 100644
--- a/collectors/python.d.plugin/anomalies/README.md
+++ b/collectors/python.d.plugin/anomalies/README.md
@@ -45,7 +45,8 @@ pip3 install --user netdata-pandas==0.0.32 numba==0.50.1 scikit-learn==0.23.2 py
## Configuration
-Install the Python requirements above, enable the collector and restart Netdata.
+Install the Python requirements above, enable the collector and [restart
+Netdata](/docs/configure/start-stop-restart.md).
```bash
cd /etc/netdata/
diff --git a/collectors/python.d.plugin/chrony/README.md b/collectors/python.d.plugin/chrony/README.md
index b1e7ec35..4681b4f6 100644
--- a/collectors/python.d.plugin/chrony/README.md
+++ b/collectors/python.d.plugin/chrony/README.md
@@ -55,7 +55,7 @@ local:
command: 'chronyc -n tracking'
```
-Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the appropriate method for your
-system, to finish configuring the `chrony` collector.
+Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate
+method](/docs/configure/start-stop-restart.md) for your system, to finish configuring the `chrony` collector.
[![analytics](https://www.google-analytics.com/collect?v=1&aip=1&t=pageview&_s=1&ds=github&dr=https%3A%2F%2Fgithub.com%2Fnetdata%2Fnetdata&dl=https%3A%2F%2Fmy-netdata.io%2Fgithub%2Fcollectors%2Fpython.d.plugin%2Fchrony%2FREADME&_u=MAC~&cid=5792dfd7-8dc4-476b-af31-da2fdb9f93d2&tid=UA-64295674-3)](<>)
diff --git a/collectors/python.d.plugin/example/example.chart.py b/collectors/python.d.plugin/example/example.chart.py
index 61ae47f2..d6c0b665 100644
--- a/collectors/python.d.plugin/example/example.chart.py
+++ b/collectors/python.d.plugin/example/example.chart.py
@@ -29,6 +29,9 @@ class Service(SimpleService):
self.order = ORDER
self.definitions = CHARTS
self.random = SystemRandom()
+ self.num_lines = self.configuration.get('num_lines', 4)
+ self.lower = self.configuration.get('lower', 0)
+ self.upper = self.configuration.get('upper', 100)
@staticmethod
def check():
@@ -37,12 +40,12 @@ class Service(SimpleService):
def get_data(self):
data = dict()
- for i in range(1, 4):
+ for i in range(0, self.num_lines):
dimension_id = ''.join(['random', str(i)])
if dimension_id not in self.charts['random']:
self.charts['random'].add_dimension([dimension_id])
- data[dimension_id] = self.random.randint(0, 100)
+ data[dimension_id] = self.random.randint(self.lower, self.upper)
return data
diff --git a/collectors/python.d.plugin/example/example.conf b/collectors/python.d.plugin/example/example.conf
index 3d843517..31261b84 100644
--- a/collectors/python.d.plugin/example/example.conf
+++ b/collectors/python.d.plugin/example/example.conf
@@ -51,7 +51,7 @@
# predefined parameters. These are:
#
# job_name:
-# name: myname # the JOB's name as it will appear at the
+# name: myname # the JOB's name as it will appear on the dashboard
# # dashboard (by default is the job_name)
# # JOBs sharing a name are mutually exclusive
# update_every: 1 # the JOB's data collection frequency
@@ -61,8 +61,27 @@
#
# Additionally to the above, example also supports the following:
#
-# - none
+# num_lines: 4 # the number of lines to create
+# lower: 0 # the lower bound of numbers to randomly sample from
+# upper: 100 # the upper bound of numbers to randomly sample from
#
# ----------------------------------------------------------------------
# AUTO-DETECTION JOBS
-# only one of them will run (they have the same name)
+
+four_lines:
+ name: "Four Lines" # the JOB's name as it will appear on the dashboard
+ update_every: 1 # the JOB's data collection frequency
+ priority: 60000 # the JOB's order on the dashboard
+ penalty: yes # the JOB's penalty
+ autodetection_retry: 0 # the JOB's re-check interval in seconds
+ num_lines: 4 # the number of lines to create
+ lower: 0 # the lower bound of numbers to randomly sample from
+ upper: 100 # the upper bound of numbers to randomly sample from
+
+# if you wanted to make another job to run in addition to the one above then
+# you would just uncomment the job configuration below.
+# two_lines:
+# name: "Two Lines" # the JOB's name as it will appear on the dashboard
+# num_lines: 2 # the number of lines to create
+# lower: 50 # the lower bound of numbers to randomly sample from
+# upper: 75 # the upper bound of numbers to randomly sample from
diff --git a/collectors/python.d.plugin/hpssa/README.md b/collectors/python.d.plugin/hpssa/README.md
index af8c4378..69c8d8a3 100644
--- a/collectors/python.d.plugin/hpssa/README.md
+++ b/collectors/python.d.plugin/hpssa/README.md
@@ -59,8 +59,8 @@ cd /etc/netdata # Replace this path with your Netdata config directory, if dif
sudo ./edit-config python.d.conf
```
-Change the value of the `hpssa` setting to `yes`. Save the file and restart the Netdata Agent
-with `sudo systemctl restart netdata`, or the appropriate method for your system.
+Change the value of the `hpssa` setting to `yes`. Save the file and restart the Netdata Agent with `sudo systemctl
+restart netdata`, or the [appropriate method](/docs/configure/start-stop-restart.md) for your system.
## Configuration
@@ -78,4 +78,7 @@ If `ssacli` cannot be found in the `PATH`, configure it in `hpssa.conf`.
ssacli_path: /usr/sbin/ssacli
```
+Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate
+method](/docs/configure/start-stop-restart.md) for your system.
+
[![analytics](https://www.google-analytics.com/collect?v=1&aip=1&t=pageview&_s=1&ds=github&dr=https%3A%2F%2Fgithub.com%2Fnetdata%2Fnetdata&dl=https%3A%2F%2Fmy-netdata.io%2Fgithub%2Fcollectors%2Fpython.d.plugin%2Fhpssa%2FREADME&_u=MAC~&cid=5792dfd7-8dc4-476b-af31-da2fdb9f93d2&tid=UA-64295674-3)]()
diff --git a/collectors/python.d.plugin/megacli/README.md b/collectors/python.d.plugin/megacli/README.md
index 4fb7eb1c..e411c4c1 100644
--- a/collectors/python.d.plugin/megacli/README.md
+++ b/collectors/python.d.plugin/megacli/README.md
@@ -80,6 +80,7 @@ Battery stats disabled by default. To enable them, modify `megacli.conf`.
do_battery: yes
```
----
+Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate
+method](/docs/configure/start-stop-restart.md) for your system.
[![analytics](https://www.google-analytics.com/collect?v=1&aip=1&t=pageview&_s=1&ds=github&dr=https%3A%2F%2Fgithub.com%2Fnetdata%2Fnetdata&dl=https%3A%2F%2Fmy-netdata.io%2Fgithub%2Fcollectors%2Fpython.d.plugin%2Fmegacli%2FREADME&_u=MAC~&cid=5792dfd7-8dc4-476b-af31-da2fdb9f93d2&tid=UA-64295674-3)](<>)
diff --git a/collectors/python.d.plugin/samba/README.md b/collectors/python.d.plugin/samba/README.md
index a5126510..04cb7dcf 100644
--- a/collectors/python.d.plugin/samba/README.md
+++ b/collectors/python.d.plugin/samba/README.md
@@ -103,8 +103,8 @@ cd /etc/netdata # Replace this path with your Netdata config directory, if dif
sudo ./edit-config python.d.conf
```
-Change the value of the `samba` setting to `yes`. Save the file and restart the Netdata Agent
-with `sudo systemctl restart netdata`, or the appropriate method for your system.
+Change the value of the `samba` setting to `yes`. Save the file and restart the Netdata Agent with `sudo systemctl
+restart netdata`, or the [appropriate method](/docs/configure/start-stop-restart.md) for your system.
## Configuration
diff --git a/collectors/python.d.plugin/smartd_log/smartd_log.chart.py b/collectors/python.d.plugin/smartd_log/smartd_log.chart.py
index 8f10a535..e4a19d41 100644
--- a/collectors/python.d.plugin/smartd_log/smartd_log.chart.py
+++ b/collectors/python.d.plugin/smartd_log/smartd_log.chart.py
@@ -49,6 +49,7 @@ ATTR198 = '198'
ATTR199 = '199'
ATTR202 = '202'
ATTR206 = '206'
+ATTR233 = '233'
ATTR_READ_ERR_COR = 'read-total-err-corrected'
ATTR_READ_ERR_UNC = 'read-total-unc-errors'
ATTR_WRITE_ERR_COR = 'write-total-err-corrected'
@@ -111,6 +112,7 @@ ORDER = [
'current_pending_sector_count',
'offline_uncorrectable_sector_count',
'percent_lifetime_used',
+ 'media_wearout_indicator',
]
CHARTS = {
@@ -322,6 +324,12 @@ CHARTS = {
'lines': [],
'attrs': [ATTR202],
'algo': ABSOLUTE,
+ },
+ 'media_wearout_indicator': {
+ 'options': [None, 'Media Wearout Indicator', 'percentage', 'wear', 'smartd_log.media_wearout_indicator', 'line'],
+ 'lines': [],
+ 'attrs': [ATTR233],
+ 'algo': ABSOLUTE,
}
}
@@ -506,6 +514,7 @@ def ata_attribute_factory(value):
ATTR7,
ATTR202,
ATTR206,
+ ATTR233,
]:
return AtaNormalized(*value)