Access to "sub" index (when OID has multiple indexes) (#9893)

* accessing in YAML each part of the index in case oid has more than one

* accessing in YAML each part of the index in case oid has more than one

* accessing in YAML each part of the index in case oid has more than one

* accessing in YAML each part of the index in case oid has more than one

* accessing in YAML each part of the index in case oid has more than one

* accessing in YAML each part of the index in case oid has more than one

* accessing in YAML each part of the index in case oid has more than one

* Codeclimate

* Initialisation + comments

* Like this
This commit is contained in:
PipoCanaja
2019-03-05 04:17:14 +01:00
committed by Tony Murray
parent b402e859fd
commit 4599b36b25
4 changed files with 111 additions and 91 deletions

View File

@@ -111,7 +111,22 @@ class YamlDiscovery
$value = dynamic_discovery_get_value($name, $index, $data, $pre_cache);
if (is_null($value)) {
// built in replacements
$value = str_replace(array('{{ $index }}', '{{ $count }}'), array($index, $count), $data[$name]);
$search = [
'{{ $index }}',
'{{ $count }}',
];
$replace = [
$index,
$count,
];
// prepare the $subindexX match variable replacement
foreach (explode('.', $index) as $pos => $subindex) {
$search[] = '{{ $subindex' . $pos . ' }}';
$replace[] = $subindex;
}
$value = str_replace($search, $replace, $data[$name]);
// search discovery data for values
$value = preg_replace_callback('/{{ \$([a-zA-Z0-9.]+) }}/', function ($matches) use ($index, $data, $pre_cache) {

View File

@@ -62,7 +62,7 @@ modules:
value: airFlowSensorValue
divisor: 10
num_oid: '.1.3.6.1.4.1.5528.100.4.1.5.1.2.{{ $index }}'
descr: airFlowSensorLabel
descr: '{{ $airFlowSensorLabel }}'
index: 'airFlowSensorValue.{{ $index }}'
```
@@ -83,7 +83,7 @@ The only sensor we have defined here is airflow. The available options are as fo
- `low_warn_limit` (optional): This is the warning low threshold that `value` should be (used in alerting). If an OID is specified then divisor / multiplier are used.
- `warn_limit` (optional): This is the warning high threshold that `value` should be (used in alerting). If an OID is specified then divisor / multiplier are used.
- `high_limit` (optional): This is the critical high threshold that `value` should be (used in alerting). If an OID is specified then divisor / multiplier are used.
- `descr` (required): The visible label for this sensor. It can be a key with in the table or a static string, optionally using `{{ index }}`
- `descr` (required): The visible label for this sensor. It can be a key with in the table or a static string, optionally using `{{ index }}`.
- `group` (optional): Groups sensors together under in the webui, displaying this text. Not specifying this will put the sensors in the default group.
- `index` (optional): This is the index value we use to uniquely identify this sensor. `{{ $index }}` will be replaced by the `index` from the snmp walk.
- `skip_values` (optional): This is an array of values we should skip over (see note below).
@@ -101,6 +101,11 @@ For `options:` you have the following available:
- `skip_value_lt`: If sensor value is less than this, skip the discovery.
- `skip_value_gt`: If sensor value is greater than this, skip the discovery.
Multiple variables can be used in the sensors definition. The syntax is `{{ $variable }}`. Any oid in the current
table can be used, as well as pre_cached data. The index ($index) and the sub_indexes
(in case the oid is indexed multiple times) are also available: if $index="1.20", then
$subindex0="1" and $subindex1="20".
> `skip_values` can also compare items within the OID table against values. One example of this is:
```yaml

View File

@@ -139,7 +139,7 @@ modules:
oid: hwFanStatusTable
value: hwEntityFanState
num_oid: '.1.3.6.1.4.1.2011.5.25.31.1.1.10.1.7.{{ $index }}'
descr: 'Fan {{ $hwEntityFanDesc }} Status'
descr: 'Slot {{ $subindex0 }} Fan {{ $subindex1 }} Status'
group: Fans
state_name: hwEntityFanState
states:

View File

@@ -10812,8 +10812,8 @@
"group": "",
"sensor_divisor": 1000000,
"sensor_multiplier": 1,
"sensor_current": 0.022236,
"sensor_limit": 0.033354,
"sensor_current": 0.022235999999999999,
"sensor_limit": 0.033354000000000002,
"sensor_limit_warn": null,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
@@ -10837,7 +10837,7 @@
"sensor_divisor": 1000000,
"sensor_multiplier": 1,
"sensor_current": 0.018966,
"sensor_limit": 0.028449,
"sensor_limit": 0.028448999999999999,
"sensor_limit_warn": null,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
@@ -10860,8 +10860,8 @@
"group": "",
"sensor_divisor": 1000000,
"sensor_multiplier": 1,
"sensor_current": 0.027468,
"sensor_limit": 0.041202,
"sensor_current": 0.027467999999999999,
"sensor_limit": 0.041202000000000003,
"sensor_limit_warn": null,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
@@ -10885,7 +10885,7 @@
"sensor_divisor": 1000000,
"sensor_multiplier": 1,
"sensor_current": 0.020274,
"sensor_limit": 0.030411,
"sensor_limit": 0.030411000000000001,
"sensor_limit_warn": null,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
@@ -10909,7 +10909,7 @@
"sensor_divisor": 1000000,
"sensor_multiplier": 1,
"sensor_current": 0.021582,
"sensor_limit": 0.032373,
"sensor_limit": 0.032372999999999999,
"sensor_limit_warn": null,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
@@ -10933,7 +10933,7 @@
"sensor_divisor": 1000000,
"sensor_multiplier": 1,
"sensor_current": 0.020274,
"sensor_limit": 0.030411,
"sensor_limit": 0.030411000000000001,
"sensor_limit_warn": null,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
@@ -10956,8 +10956,8 @@
"group": "",
"sensor_divisor": 1000000,
"sensor_multiplier": 1,
"sensor_current": 0.02289,
"sensor_limit": 0.034335,
"sensor_current": 0.022890000000000001,
"sensor_limit": 0.034334999999999997,
"sensor_limit_warn": null,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
@@ -10980,8 +10980,8 @@
"group": "",
"sensor_divisor": 1000000,
"sensor_multiplier": 1,
"sensor_current": 0.020928,
"sensor_limit": 0.031392,
"sensor_current": 0.020927999999999999,
"sensor_limit": 0.031392000000000003,
"sensor_limit_warn": null,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
@@ -11004,8 +11004,8 @@
"group": "",
"sensor_divisor": 1000000,
"sensor_multiplier": 1,
"sensor_current": 0.02289,
"sensor_limit": 0.034335,
"sensor_current": 0.022890000000000001,
"sensor_limit": 0.034334999999999997,
"sensor_limit_warn": null,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
@@ -11028,8 +11028,8 @@
"group": "",
"sensor_divisor": 1000000,
"sensor_multiplier": 1,
"sensor_current": 0.036036,
"sensor_limit": 0.054054,
"sensor_current": 0.036035999999999999,
"sensor_limit": 0.054053999999999998,
"sensor_limit_warn": null,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
@@ -11053,7 +11053,7 @@
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -11.079053973095196,
"sensor_limit": -10.52510127444,
"sensor_limit": -10.525101274440001,
"sensor_limit_warn": null,
"sensor_limit_low": -11.63300667175,
"sensor_limit_low_warn": null,
@@ -11076,8 +11076,8 @@
"group": "GigabitEthernet0/0/2",
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -8.794260687941502,
"sensor_limit": -8.35454765354,
"sensor_current": -8.7942606879415024,
"sensor_limit": -8.3545476535399992,
"sensor_limit_warn": null,
"sensor_limit_low": -9.23397372234,
"sensor_limit_low_warn": null,
@@ -11125,7 +11125,7 @@
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -19.208187539523752,
"sensor_limit": -18.24777816255,
"sensor_limit": -18.247778162549999,
"sensor_limit_warn": null,
"sensor_limit_low": -20.1685969165,
"sensor_limit_low_warn": null,
@@ -11148,10 +11148,10 @@
"group": "GigabitEthernet0/0/5",
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -9.1721462968355,
"sensor_limit": -8.71353898199,
"sensor_current": -9.1721462968354999,
"sensor_limit": -8.7135389819900002,
"sensor_limit_warn": null,
"sensor_limit_low": -9.63075361168,
"sensor_limit_low": -9.6307536116799994,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11172,10 +11172,10 @@
"group": "GigabitEthernet0/0/6",
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -7.695510786217261,
"sensor_limit": -7.31073524691,
"sensor_current": -7.6955107862172607,
"sensor_limit": -7.3107352469100002,
"sensor_limit_warn": null,
"sensor_limit_low": -8.08028632553,
"sensor_limit_low": -8.0802863255300004,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11196,10 +11196,10 @@
"group": "GigabitEthernet0/0/7",
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -9.913998282380824,
"sensor_limit": -9.41829836826,
"sensor_current": -9.9139982823808239,
"sensor_limit": -9.4182983682600003,
"sensor_limit_warn": null,
"sensor_limit_low": -10.4096981965,
"sensor_limit_low": -10.409698196500001,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11223,7 +11223,7 @@
"sensor_current": -12.006594505464182,
"sensor_limit": -11.40626478019,
"sensor_limit_warn": null,
"sensor_limit_low": -12.60692423074,
"sensor_limit_low": -12.606924230740001,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11245,9 +11245,9 @@
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -6.946486305533762,
"sensor_limit": -6.59916199026,
"sensor_limit": -6.5991619902599998,
"sensor_limit_warn": null,
"sensor_limit_low": -7.29381062081,
"sensor_limit_low": -7.2938106208100004,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11271,7 +11271,7 @@
"sensor_current": -3.4008379993014977,
"sensor_limit": -3.23079609934,
"sensor_limit_warn": null,
"sensor_limit_low": -3.57087989927,
"sensor_limit_low": -3.5708798992699999,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11292,10 +11292,10 @@
"group": "GigabitEthernet0/0/1",
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -5.985994592184558,
"sensor_limit": -5.68669486258,
"sensor_current": -5.9859945921845581,
"sensor_limit": -5.6866948625799996,
"sensor_limit_warn": null,
"sensor_limit_low": -6.28529432179,
"sensor_limit_low": -6.2852943217900004,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11316,10 +11316,10 @@
"group": "GigabitEthernet0/0/2",
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -6.073030467403343,
"sensor_limit": -5.76937894403,
"sensor_current": -6.0730304674033428,
"sensor_limit": -5.7693789440299996,
"sensor_limit_warn": null,
"sensor_limit_low": -6.37668199077,
"sensor_limit_low": -6.3766819907699999,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11340,10 +11340,10 @@
"group": "GigabitEthernet0/0/3",
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -6.143937264016879,
"sensor_limit": -5.83674040082,
"sensor_current": -6.1439372640168788,
"sensor_limit": -5.8367404008200001,
"sensor_limit_warn": null,
"sensor_limit_low": -6.45113412722,
"sensor_limit_low": -6.4511341272199996,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11364,8 +11364,8 @@
"group": "GigabitEthernet0/0/4",
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -6.126101736612705,
"sensor_limit": -5.81979664978,
"sensor_current": -6.1261017366127053,
"sensor_limit": -5.8197966497799998,
"sensor_limit_warn": null,
"sensor_limit_low": -6.43240682344,
"sensor_limit_low_warn": null,
@@ -11388,10 +11388,10 @@
"group": "GigabitEthernet0/0/5",
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -5.900668766687054,
"sensor_current": -5.9006687666870539,
"sensor_limit": -5.60563532835,
"sensor_limit_warn": null,
"sensor_limit_low": -6.19570220502,
"sensor_limit_low": -6.1957022050199999,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11412,10 +11412,10 @@
"group": "GigabitEthernet0/0/6",
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -6.234230429434881,
"sensor_limit": -5.92251890796,
"sensor_current": -6.2342304294348807,
"sensor_limit": -5.9225189079599998,
"sensor_limit_warn": null,
"sensor_limit_low": -6.54594195091,
"sensor_limit_low": -6.5459419509099996,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11460,10 +11460,10 @@
"group": "GigabitEthernet0/0/8",
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -6.270879970298935,
"sensor_limit": -5.95733597178,
"sensor_current": -6.2708799702989353,
"sensor_limit": -5.9573359717800001,
"sensor_limit_warn": null,
"sensor_limit_low": -6.58442396881,
"sensor_limit_low": -6.5844239688100004,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11484,10 +11484,10 @@
"group": "GigabitEthernet0/0/23",
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -6.38272163982407,
"sensor_limit": -6.06358555783,
"sensor_current": -6.3827216398240703,
"sensor_limit": -6.0635855578299998,
"sensor_limit_warn": null,
"sensor_limit_low": -6.70185772182,
"sensor_limit_low": -6.7018577218199997,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11508,10 +11508,10 @@
"group": "XGigabitEthernet0/0/4",
"sensor_divisor": 1,
"sensor_multiplier": 1,
"sensor_current": -4.497716469449059,
"sensor_limit": -4.27283064598,
"sensor_current": -4.4977164694490588,
"sensor_limit": -4.2728306459800001,
"sensor_limit_warn": null,
"sensor_limit_low": -4.72260229292,
"sensor_limit_low": -4.7226022929199996,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11532,8 +11532,8 @@
"group": "",
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 35.164,
"sensor_limit": 52.746,
"sensor_current": 35.164000000000001,
"sensor_limit": 52.746000000000002,
"sensor_limit_warn": null,
"sensor_limit_low": null,
"sensor_limit_low_warn": null,
@@ -11556,7 +11556,7 @@
"group": "",
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 34.874,
"sensor_current": 34.874000000000002,
"sensor_limit": 52.311,
"sensor_limit_warn": null,
"sensor_limit_low": null,
@@ -11576,7 +11576,7 @@
"sensor_oid": ".1.3.6.1.4.1.2011.5.25.31.1.1.10.1.7.0.0",
"sensor_index": "0.0",
"sensor_type": "hwEntityFanState",
"sensor_descr": "Fan {{ $hwEntityFanDesc }} Status",
"sensor_descr": "Slot 0 Fan 0 Status",
"group": "Fans",
"sensor_divisor": 1,
"sensor_multiplier": 1,
@@ -11869,9 +11869,9 @@
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 3.306,
"sensor_limit": 3.8019,
"sensor_limit": 3.8018999999999998,
"sensor_limit_warn": null,
"sensor_limit_low": 2.8101,
"sensor_limit_low": 2.8100999999999998,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11892,8 +11892,8 @@
"group": "",
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 3.314,
"sensor_limit": 3.8111,
"sensor_current": 3.3140000000000001,
"sensor_limit": 3.8111000000000002,
"sensor_limit_warn": null,
"sensor_limit_low": 2.8169,
"sensor_limit_low_warn": null,
@@ -11916,10 +11916,10 @@
"group": "",
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 3.312,
"sensor_limit": 3.8088,
"sensor_current": 3.3119999999999998,
"sensor_limit": 3.8088000000000002,
"sensor_limit_warn": null,
"sensor_limit_low": 2.8152,
"sensor_limit_low": 2.8151999999999999,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11940,10 +11940,10 @@
"group": "",
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 3.322,
"sensor_current": 3.3220000000000001,
"sensor_limit": 3.8203,
"sensor_limit_warn": null,
"sensor_limit_low": 2.8237,
"sensor_limit_low": 2.8237000000000001,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -11964,8 +11964,8 @@
"group": "",
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 3.318,
"sensor_limit": 3.8157,
"sensor_current": 3.3180000000000001,
"sensor_limit": 3.8157000000000001,
"sensor_limit_warn": null,
"sensor_limit_low": 2.8203,
"sensor_limit_low_warn": null,
@@ -11988,10 +11988,10 @@
"group": "",
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 3.311,
"sensor_limit": 3.80765,
"sensor_current": 3.3109999999999999,
"sensor_limit": 3.8076500000000002,
"sensor_limit_warn": null,
"sensor_limit_low": 2.81435,
"sensor_limit_low": 2.8143500000000001,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -12012,10 +12012,10 @@
"group": "",
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 3.33,
"sensor_limit": 3.8295,
"sensor_current": 3.3300000000000001,
"sensor_limit": 3.8294999999999999,
"sensor_limit_warn": null,
"sensor_limit_low": 2.8305,
"sensor_limit_low": 2.8304999999999998,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -12036,10 +12036,10 @@
"group": "",
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 3.32,
"sensor_limit": 3.818,
"sensor_current": 3.3199999999999998,
"sensor_limit": 3.8180000000000001,
"sensor_limit_warn": null,
"sensor_limit_low": 2.822,
"sensor_limit_low": 2.8220000000000001,
"sensor_limit_low_warn": null,
"sensor_alert": 1,
"sensor_custom": "No",
@@ -12060,8 +12060,8 @@
"group": "",
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 3.318,
"sensor_limit": 3.8157,
"sensor_current": 3.3180000000000001,
"sensor_limit": 3.8157000000000001,
"sensor_limit_warn": null,
"sensor_limit_low": 2.8203,
"sensor_limit_low_warn": null,
@@ -12084,8 +12084,8 @@
"group": "",
"sensor_divisor": 1000,
"sensor_multiplier": 1,
"sensor_current": 3.314,
"sensor_limit": 3.8111,
"sensor_current": 3.3140000000000001,
"sensor_limit": 3.8111000000000002,
"sensor_limit_warn": null,
"sensor_limit_low": 2.8169,
"sensor_limit_low_warn": null,
@@ -15197,4 +15197,4 @@
]
}
}
}
}