Git Product home page Git Product logo

Comments (6)

bardahlm avatar bardahlm commented on September 23, 2024

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.

thenodon avatar thenodon commented on September 23, 2024

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.

bardahlm avatar bardahlm commented on September 23, 2024

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.

thenodon avatar thenodon commented on September 23, 2024

@bardahlm so you think its a bad example, is that the issue?

from aci-exporter.

bardahlm avatar bardahlm commented on September 23, 2024

Yes, the example as it is is bad.

from aci-exporter.

camrossi avatar camrossi commented on September 23, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.