Comments (6)
I've set up this class query to get all the metrics, it's not very elegant:
class_queries:
ethpmdomstats:
class_name: ethpmDOMStats
query_parameter: '?rsp-subtree=children'
metrics:
- name: ethpmDOMStats_hiAlarm1
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm
type: "gauge"
help: "Returns hiAlarm"
- name: ethpmDOMStats_loAlarm1
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm
type: "gauge"
help: "Returns loAlarm"
- name: ethpmDOMStats_hiWarn1
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn
type: "gauge"
help: "Returns hiWarn"
- name: ethpmDOMStats_loWarn1
value_name: ethpmDOMStats.children.[.*].attributes.loWarn
type: "gauge"
help: "Returns loWarn"
- name: ethpmDOMStats_value1
value_name: ethpmDOMStats.children.[.*].attributes.value
type: "gauge"
help: "Returns value"
- name: ethpmDOMStats_hiAlarm2
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm2
type: "gauge"
help: "Returns hiAlarm2"
- name: ethpmDOMStats_loAlarm2
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm2
type: "gauge"
help: "Returns loAlarm2"
- name: ethpmDOMStats_hiWarn2
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn2
type: "gauge"
help: "Returns hiWarn2"
- name: ethpmDOMStats_loWarn2
value_name: ethpmDOMStats.children.[.*].attributes.loWarn2
type: "gauge"
help: "Returns loWarn2"
- name: ethpmDOMStats_value2
value_name: ethpmDOMStats.children.[.*].attributes.value2
type: "gauge"
help: "Returns value2"
- name: ethpmDOMStats_hiAlarm3
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm3
type: "gauge"
help: "Returns hiAlarm3"
- name: ethpmDOMStats_loAlarm3
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm3
type: "gauge"
help: "Returns loAlarm3"
- name: ethpmDOMStats_hiWarn3
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn3
type: "gauge"
help: "Returns hiWarn3"
- name: ethpmDOMStats_loWarn3
value_name: ethpmDOMStats.children.[.*].attributes.loWarn3
type: "gauge"
help: "Returns loWarn3"
- name: ethpmDOMStats_value3
value_name: ethpmDOMStats.children.[.*].attributes.value3
type: "gauge"
help: "Returns value3"
- name: ethpmDOMStats_hiAlarm4
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm4
type: "gauge"
help: "Returns hiAlarm4"
- name: ethpmDOMStats_loAlarm4
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm4
type: "gauge"
help: "Returns loAlarm4"
- name: ethpmDOMStats_hiWarn4
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn4
type: "gauge"
help: "Returns hiWarn4"
- name: ethpmDOMStats_loWarn4
value_name: ethpmDOMStats.children.[.*].attributes.loWarn4
type: "gauge"
help: "Returns loWarn4"
- name: ethpmDOMStats_value4
value_name: ethpmDOMStats.children.[.*].attributes.value4
type: "gauge"
help: "Returns value4"
- name: ethpmDOMStats_hiAlarm5
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm5
type: "gauge"
help: "Returns hiAlarm5"
- name: ethpmDOMStats_loAlarm5
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm5
type: "gauge"
help: "Returns loAlarm5"
- name: ethpmDOMStats_hiWarn5
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn5
type: "gauge"
help: "Returns hiWarn5"
- name: ethpmDOMStats_loWarn5
value_name: ethpmDOMStats.children.[.*].attributes.loWarn5
type: "gauge"
help: "Returns loWarn5"
- name: ethpmDOMStats_value5
value_name: ethpmDOMStats.children.[.*].attributes.value5
type: "gauge"
help: "Returns value5"
- name: ethpmDOMStats_hiAlarm6
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm6
type: "gauge"
help: "Returns hiAlarm6"
- name: ethpmDOMStats_loAlarm6
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm6
type: "gauge"
help: "Returns loAlarm6"
- name: ethpmDOMStats_hiWarn6
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn6
type: "gauge"
help: "Returns hiWarn6"
- name: ethpmDOMStats_loWarn6
value_name: ethpmDOMStats.children.[.*].attributes.loWarn6
type: "gauge"
help: "Returns loWarn6"
- name: ethpmDOMStats_value6
value_name: ethpmDOMStats.children.[.*].attributes.value6
type: "gauge"
help: "Returns value6"
- name: ethpmDOMStats_hiAlarm7
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm7
type: "gauge"
help: "Returns hiAlarm7"
- name: ethpmDOMStats_loAlarm7
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm7
type: "gauge"
help: "Returns loAlarm7"
- name: ethpmDOMStats_hiWarn7
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn7
type: "gauge"
help: "Returns hiWarn7"
- name: ethpmDOMStats_loWarn7
value_name: ethpmDOMStats.children.[.*].attributes.loWarn7
type: "gauge"
help: "Returns loWarn7"
- name: ethpmDOMStats_value7
value_name: ethpmDOMStats.children.[.*].attributes.value7
type: "gauge"
help: "Returns value7"
- name: ethpmDOMStats_hiAlarm8
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm8
type: "gauge"
help: "Returns hiAlarm8"
- name: ethpmDOMStats_loAlarm8
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm8
type: "gauge"
help: "Returns loAlarm8"
- name: ethpmDOMStats_hiWarn8
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn8
type: "gauge"
help: "Returns hiWarn8"
- name: ethpmDOMStats_loWarn8
value_name: ethpmDOMStats.children.[.*].attributes.loWarn8
type: "gauge"
help: "Returns loWarn8"
- name: ethpmDOMStats_value8
value_name: ethpmDOMStats.children.[.*].attributes.value8
type: "gauge"
help: "Returns value8"
labels:
- property_name: ethpmDOMStats.attributes.dn
regex: "^topology/pod-(?P<podid>[1-9][0-9]*)/node-(?P<nodeid>[1-9][0-9]*)/sys/phys-\\[(?P<interface>[^\\]]+)\\]/"
- property_name: ethpmDOMStats.children.[.*]
regex: "^(?P<class>.*)"
- property_name: ethpmDOMStats.children.[.*].attributes.lanes
regex: "^(?P<lanes>.*)"
I'm unsure if "lanes" is a label or a metric.
from aci-exporter.
Hi @bardahlm. Sorry I missed your issue post. Im not sure if I understand the issue. aci-exporter just provide the capability to query the apic and retrieve metrics and labels from the response. But Im not an expert on the networking domain related to aci. @camrossi may be you have some insights to share?
from aci-exporter.
Getting data from ethpmDOMStats is used as an example in the readme-file. The example is not very relevant, as it gives no real value to only collect hiAlarm
.
DOM is "Digital Optical Monitoring", a way to describe the optical quality of a link,
The following metrics are often made available:
- current (in milliampere, ethpmDOMCurrentStats)
- rx power (in dbm, ethpmDOMRxPwrStats)
- tx power (in dbm, ethpmDOMTxPwrStats)
- temperature (in celcius, ethpmDOMTempStats)
- voltage (in volts, ethpmDOMVoltStats)
Each of these metrics must be within certain thresholds (hi/low warn/alarm, specific for the optical module) for the link to come up and be stable.
Some high bandwidth optical modules use multiple frequencies or parallell fiber strands to increase bandwidth, aka lanes, and report some or all of the above metrics for each lane.
See https://community.cisco.com/t5/networking-knowledge-base/digital-optical-monitoring-dom/ta-p/3120342 for info about DOM.
My current configuration is like this:
class_queries:
ethpmdomstats:
class_name: ethpmDOMStats
query_parameter: '?rsp-subtree=children'
metrics:
- name: ethpmDOMStats_hiAlarm1
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm
type: "gauge"
help: "Returns hiAlarm"
- name: ethpmDOMStats_loAlarm1
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm
type: "gauge"
help: "Returns loAlarm"
- name: ethpmDOMStats_hiWarn1
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn
type: "gauge"
help: "Returns hiWarn"
- name: ethpmDOMStats_loWarn1
value_name: ethpmDOMStats.children.[.*].attributes.loWarn
type: "gauge"
help: "Returns loWarn"
- name: ethpmDOMStats_value1
value_name: ethpmDOMStats.children.[.*].attributes.value
type: "gauge"
help: "Returns value"
- name: ethpmDOMStats_hiAlarm2
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm2
type: "gauge"
help: "Returns hiAlarm2"
- name: ethpmDOMStats_loAlarm2
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm2
type: "gauge"
help: "Returns loAlarm2"
- name: ethpmDOMStats_hiWarn2
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn2
type: "gauge"
help: "Returns hiWarn2"
- name: ethpmDOMStats_loWarn2
value_name: ethpmDOMStats.children.[.*].attributes.loWarn2
type: "gauge"
help: "Returns loWarn2"
- name: ethpmDOMStats_value2
value_name: ethpmDOMStats.children.[.*].attributes.value2
type: "gauge"
help: "Returns value2"
- name: ethpmDOMStats_hiAlarm3
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm3
type: "gauge"
help: "Returns hiAlarm3"
- name: ethpmDOMStats_loAlarm3
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm3
type: "gauge"
help: "Returns loAlarm3"
- name: ethpmDOMStats_hiWarn3
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn3
type: "gauge"
help: "Returns hiWarn3"
- name: ethpmDOMStats_loWarn3
value_name: ethpmDOMStats.children.[.*].attributes.loWarn3
type: "gauge"
help: "Returns loWarn3"
- name: ethpmDOMStats_value3
value_name: ethpmDOMStats.children.[.*].attributes.value3
type: "gauge"
help: "Returns value3"
- name: ethpmDOMStats_hiAlarm4
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm4
type: "gauge"
help: "Returns hiAlarm4"
- name: ethpmDOMStats_loAlarm4
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm4
type: "gauge"
help: "Returns loAlarm4"
- name: ethpmDOMStats_hiWarn4
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn4
type: "gauge"
help: "Returns hiWarn4"
- name: ethpmDOMStats_loWarn4
value_name: ethpmDOMStats.children.[.*].attributes.loWarn4
type: "gauge"
help: "Returns loWarn4"
- name: ethpmDOMStats_value4
value_name: ethpmDOMStats.children.[.*].attributes.value4
type: "gauge"
help: "Returns value4"
- name: ethpmDOMStats_hiAlarm5
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm5
type: "gauge"
help: "Returns hiAlarm5"
- name: ethpmDOMStats_loAlarm5
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm5
type: "gauge"
help: "Returns loAlarm5"
- name: ethpmDOMStats_hiWarn5
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn5
type: "gauge"
help: "Returns hiWarn5"
- name: ethpmDOMStats_loWarn5
value_name: ethpmDOMStats.children.[.*].attributes.loWarn5
type: "gauge"
help: "Returns loWarn5"
- name: ethpmDOMStats_value5
value_name: ethpmDOMStats.children.[.*].attributes.value5
type: "gauge"
help: "Returns value5"
- name: ethpmDOMStats_hiAlarm6
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm6
type: "gauge"
help: "Returns hiAlarm6"
- name: ethpmDOMStats_loAlarm6
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm6
type: "gauge"
help: "Returns loAlarm6"
- name: ethpmDOMStats_hiWarn6
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn6
type: "gauge"
help: "Returns hiWarn6"
- name: ethpmDOMStats_loWarn6
value_name: ethpmDOMStats.children.[.*].attributes.loWarn6
type: "gauge"
help: "Returns loWarn6"
- name: ethpmDOMStats_value6
value_name: ethpmDOMStats.children.[.*].attributes.value6
type: "gauge"
help: "Returns value6"
- name: ethpmDOMStats_hiAlarm7
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm7
type: "gauge"
help: "Returns hiAlarm7"
- name: ethpmDOMStats_loAlarm7
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm7
type: "gauge"
help: "Returns loAlarm7"
- name: ethpmDOMStats_hiWarn7
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn7
type: "gauge"
help: "Returns hiWarn7"
- name: ethpmDOMStats_loWarn7
value_name: ethpmDOMStats.children.[.*].attributes.loWarn7
type: "gauge"
help: "Returns loWarn7"
- name: ethpmDOMStats_value7
value_name: ethpmDOMStats.children.[.*].attributes.value7
type: "gauge"
help: "Returns value7"
- name: ethpmDOMStats_hiAlarm8
value_name: ethpmDOMStats.children.[.*].attributes.hiAlarm8
type: "gauge"
help: "Returns hiAlarm8"
- name: ethpmDOMStats_loAlarm8
value_name: ethpmDOMStats.children.[.*].attributes.loAlarm8
type: "gauge"
help: "Returns loAlarm8"
- name: ethpmDOMStats_hiWarn8
value_name: ethpmDOMStats.children.[.*].attributes.hiWarn8
type: "gauge"
help: "Returns hiWarn8"
- name: ethpmDOMStats_loWarn8
value_name: ethpmDOMStats.children.[.*].attributes.loWarn8
type: "gauge"
help: "Returns loWarn8"
- name: ethpmDOMStats_value8
value_name: ethpmDOMStats.children.[.*].attributes.value8
type: "gauge"
help: "Returns value8"
- name: ethpmDOMStats_rxLos
value_name: ethpmDOMStats.attributes.rxLos
type: "gauge"
help: "Returns status of rxLos"
- name: ethpmDOMStats_lanes
value_name: ethpmDOMStats.children.[.*].attributes.lanes
type: "gauge"
help: "Returns number of lanes"
labels:
- property_name: ethpmDOMStats.attributes.dn
regex: "^topology/pod-(?P<podid>[1-9][0-9]*)/node-(?P<nodeid>[1-9][0-9]*)/sys/phys-\\[(?P<interface>[^\\]]+)\\]/"
- property_name: ethpmDOMStats.children.[.*]
regex: "^(?P<class>.*)"
I now get all the relevant metrics for DOM, but it's not a very elegant way to get info about all the lanes.
from aci-exporter.
@bardahlm so you think its a bad example, is that the issue?
from aci-exporter.
Yes, the example as it is is bad.
from aci-exporter.
I agree is not a very good example. @bardahlm @thenodon I will try to make a PR in the future with a better one perhaps around something simple, I think I will make this part of the work I am about to start doing around #58
from aci-exporter.
Related Issues (20)
- The prefix is not reflected in the # HELP and # TYPE lines HOT 2
- A way to convert the systemUpTime to seconds HOT 13
- Add a aci_up metric HOT 1
- It is possible to generate a metric file with empty # HELP and / or # TYPE lines HOT 2
- Labels should alway be lowercase HOT 5
- value transformation do not work HOT 3
- static_binding_info: value_regex_transformation not working HOT 3
- label regex not executed on child class HOT 4
- Convert string to float for operSpeed HOT 9
- Add static label in metrics HOT 6
- Implement Pagination Support HOT 32
- auth fails for some passwords containing special characters HOT 3
- reduce scrapping time HOT 8
- Reuse client login cookie data between api calls
- Support configuration directory
- Direct Switch Queries HOT 6
- queries parameter validation
- loglevel is not set if passed from config File HOT 1
- Native oTel Support HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aci-exporter.