Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New component: BMC Helix Exporter #36773

Open
NassimBtk opened this issue Dec 10, 2024 · 8 comments · May be fixed by #36964
Open

New component: BMC Helix Exporter #36773

NassimBtk opened this issue Dec 10, 2024 · 8 comments · May be fixed by #36964
Labels
Accepted Component New component has been sponsored

Comments

@NassimBtk
Copy link
Contributor

NassimBtk commented Dec 10, 2024

The purpose and use-cases of the new component

The BMC Helix Exporter will transmit metrics from the OpenTelemetry Collector to BMC Helix Operations Management platform. It is designed to meet BMC Helix’s specific requirements on how data (metrics) is sent through the BMC Helix REST API and entity mapping standards.

Use Cases:

  1. Metrics Integration:
    Organizations using BMC Helix Operations Management would be able to integrate metrics received by the OpenTelemetry Collector.

  2. Attributes to BMC Helix Mapping:
    The exporter should dynamically map attributes (e.g., host.name, service.name, name, id) to BMC Helix's labels. The exporter should not implement any logic to determine the values for the mandatory labels (attributes required by BMC Helix) entityName or entityTypeId; it should only ensure that these two labels are available for a given metric. This guarantees that the payload is accepted by BMC Helix and avoids rejection due to missing fields.
    BMC Helix Metrics payload example:

     [
      {
        "labels": {
          "isDeviceMappingEnabled": true,
          "entityId": "OTEL:server1:battery_cont:battery_container",
          "entityName": "battery_container",
          "entityTypeId": "battery_container",
          "hostType": "server",
          "hostname": "server1",
          "metricName": "identity",
          "source": "OTEL"
        },
        "samples": []
        },
        {
        "labels": {
          "isDeviceMappingEnabled": true,
          "entityId": "OTEL:server1:battery:battery1",
          "entityName": "battery1",
          "entityTypeId": "battery",
          "parentEntityName": "battery_container",
          "parentEntityTypeId": "battery_container",
          "hostType": "server",
          "hostname": "server1",
          "metricName": "hw.status.ok",
          "instanceName": "Battery 1",
          "source": "OTEL"
        },
        "samples": [{ "value": 1, "timestamp": 1733133695000 }]
      },
      {
        "labels": {
          "isDeviceMappingEnabled": true,
          "entityId": "OTEL:server1:battery:battery2",
          "entityName": "battery2",
          "entityTypeId": "battery",
          "parentEntityName": "battery_container",
          "parentEntityTypeId": "battery_container",
          "hostType": "server",
          "hostname": "server1",
          "metricName": "hw.status.ok",
          "instanceName": "Battery 2",
          "source": "OTEL"
        },
        "samples": [{ "value": 1, "timestamp": 1733133695000 }]
      }
    ]
  3. Customization and Flexibility:

    • Users would have the ability to customize metric transformations using OpenTelemetry Transformation Language (OTTL) via the transformprocessor, for instance, to manage the mandatory labels entityName and entityTypeId.
    • The exporter would support optional retry mechanisms and timeout settings to ensure reliability in metric delivery.

Example configuration for the component

The following settings are required:

  • endpoint: is the URL of your BMC Helix environment, at onbmc.com (e.g., https://company.onbmc.com).
  • api_key: API key to authenticate the exporter. Connect to BMC Helix Operations Management, go to the Administration > Repository page, and click on the Copy API Key button to get your API Key.

Example:

exporters:
  bmchelix/helix1:
    endpoint: https://company.onbmc.com
    api_key: <api-key>

Optional Settings

The following settings can be optionally configured:

  • timeout: (default = 10s) Timeout for requests made to the BMC Helix.
  • retry_on_failure:
    • enabled (default = false): Enables retries for failed requests.
    • initial_interval (default = 5s): The time to wait after the first failure before retrying.
    • randomization_factor (default = 0.5): Random factor used to calculate next backoffs.
    • multiplier (default = 1.5): The value multiplied by the backoff interval bounds.
    • max_interval (default = 30s): The upper bound on backoff interval.
    • max_elapsed_time (default = 5m): The maximum amount of time (including retries) spent trying to send a request.
  • resource_to_telemetry_conversion:
    • enabled (default = true): Converts resource attributes to telemetry attributes

Example:

exporters:
  bmchelix/helix2:
    endpoint: https://company.onbmc.com
    api_key: <api-key>
    timeout: 20s
    retry_on_failure:
      enabled: true
      initial_interval: 5s
      randomization_factor: 0.5
      multiplier: 8.0
      max_interval: 1m
      max_elapsed_time: 8m
    resource_to_telemetry_conversion:
      enabled: true

Telemetry data types supported

  • Metrics (to BMC Helix Operations Management)
  • Logs (to BMC Helix Logs Analytics) [FUTURE]
  • Traces (to BMC Netreo Stackify) [FUTURE]

Code Owner(s)

@bertysentry, @NassimBtk

Sponsor (optional)

Additional context

  • The exporter will handle the supported metric types: MetricTypeSum and MetricTypeGauge.
  • It will use an HTTP client to connect to the BMC Helix REST API.
  • Sentry Software specializes in developing software that integrates with BMC Helix. Therefore, the necessary tools and expertise are available to test and validate the exporter within a BMC Helix environment.
@NassimBtk NassimBtk added needs triage New item requiring triage Sponsor Needed New component seeking sponsor labels Dec 10, 2024
@bertysentry
Copy link
Contributor

Signals that should be supported:

  1. Metrics (to BMC Helix Operations Management)
  2. Logs (to BMC Helix Logs Analytics) [FUTURE]
  3. Traces (to BMC Netreo Stackigy) [FUTURE]

@bertysentry
Copy link
Contributor

Asking for sponsors, please! @Aneurysm9 @dashpole @trask @atoulme @MovieStoreGuy @jmacd Would you be okay to be a "sponsor" for this new component of the Collector?

This exporter will send metrics to BMC Helix a leading vendor in the observability market (at least it's worth mentioning by Gartner in their magic quadrant). I think it's a good addition to OpenTelemetry Collector.

@NassimBtk and I will be maintaining this. It will be a pretty simple exporter that simply needs to push the Otel metrics through a dedicated REST API endpoint on BMC Helix.

Later on we will add support for logs and traces. Thank you!

@atoulme
Copy link
Contributor

atoulme commented Dec 16, 2024

@NassimBtk needs to be a member of the OpenTelemetry community to be a codeowner of this component. See https://github.com/open-telemetry/community/issues/new?assignees=&labels=area%2Fgithub-membership&projects=&template=membership.md&title=REQUEST%3A+New+membership+for+%3Cyour-GH-handle%3E to get started

@MovieStoreGuy
Copy link
Contributor

I am happy to sponsor this,

Are you representing BMC Helix as part of the contribution? or is this a community funded component?

@MovieStoreGuy MovieStoreGuy added Accepted Component New component has been sponsored and removed Sponsor Needed New component seeking sponsor needs triage New item requiring triage labels Dec 16, 2024
@bertysentry
Copy link
Contributor

Sentry Software is a tech partner of BMC Helix and we have tons of contacts there, with R&D, product management, support, etc. but we don't represent them, per se. So it's more of a "community funded" component, where the community has strong ties with vendor. If there is any change in the interfaces, APIs, or any new requirements, we have the right contacts to handle the situation and ensure the quality of the components of the foreseeable future.

Thank you for the sponsorship, @MovieStoreGuy! 😊

@NassimBtk
Copy link
Contributor Author

Thank you, @atoulme! I’ve created open-telemetry/community#2493 to join the OpenTelemetry community as a member.

@fatsheep9146
Copy link
Contributor

fatsheep9146 commented Dec 22, 2024

I am happy to sponsor this

@bertysentry
Copy link
Contributor

Thank you @fatsheep9146 and @MovieStoreGuy! 😊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Accepted Component New component has been sponsored
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants