-
Notifications
You must be signed in to change notification settings - Fork 475
feat add ipmi component #4808
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
base: main
Are you sure you want to change the base?
feat add ipmi component #4808
Conversation
| aliases: | ||
| - ../prometheus.exporter.ipmi/ # /docs/alloy/latest/reference/components/prometheus.exporter.ipmi/ | ||
| description: Learn about prometheus.exporter.ipmi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| aliases: | |
| - ../prometheus.exporter.ipmi/ # /docs/alloy/latest/reference/components/prometheus.exporter.ipmi/ | |
| description: Learn about prometheus.exporter.ipmi | |
| description: Learn about prometheus.exporter.ipmi |
We can drop this alias. The topic is new. Aliases are required if we change the filename or move the fire to a different location.
| products: | ||
| - oss | ||
| title: prometheus.exporter.ipmi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| products: | |
| - oss | |
| title: prometheus.exporter.ipmi | |
| products: | |
| - oss | |
| tags: | |
| - text: Community | |
| tooltip: This component is developed, maintained, and supported by the Alloy user community. | |
| title: prometheus.exporter.ipmi |
We should add the community badge since this appears to be a community contribution to Alloy.
| # `prometheus.exporter.ipmi` | ||
|
|
||
| The `prometheus.exporter.ipmi` component collects hardware metrics from IPMI-enabled devices. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| # `prometheus.exporter.ipmi` | |
| The `prometheus.exporter.ipmi` component collects hardware metrics from IPMI-enabled devices. | |
| # `prometheus.exporter.ipmi` | |
| {{< docs/shared lookup="stability/community.md" source="alloy" version="<ALLOY_VERSION>" >}} | |
| The `prometheus.exporter.ipmi` component collects hardware metrics from IPMI-enabled devices. |
| | `config_file` | `string` | Path to IPMI exporter configuration file. | | no | | ||
| | `ipmi_config` | `string` | IPMI exporter configuration as inline YAML string. | | no | | ||
|
|
||
| The `timeout` should be set high enough to allow IPMI sensor collection to complete. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| The `timeout` should be set high enough to allow IPMI sensor collection to complete. | |
| Set the `timeout` high enough to allow IPMI sensor collection to complete. |
| A timeout of 30 seconds or more is recommended for most hardware. | ||
|
|
||
| The `config_file` and `ipmi_config` arguments are mutually exclusive. | ||
| They allow advanced configuration of IPMI collection modules and command overrides. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| They allow advanced configuration of IPMI collection modules and command overrides. | |
| These arguments enable advanced configuration of IPMI collection modules and command overrides. |
| Example with environment variables: | ||
| ```alloy |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Example with environment variables: | |
| ```alloy | |
| Example with environment variables: | |
| ```alloy |
| - **Use dedicated monitoring users** with minimal required privileges | ||
| - **Store passwords securely** using `env()` or secrets management | ||
| - **Never commit passwords** to version control | ||
| - **Consider network isolation** for IPMI interfaces (dedicated management network) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - **Consider network isolation** for IPMI interfaces (dedicated management network) | |
| - **Consider network isolation** for IPMI interfaces on dedicated management networks |
|
|
||
| ### Local IPMI requirements | ||
|
|
||
| For local IPMI collection, ensure: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| For local IPMI collection, ensure: | |
| For local IPMI collection, ensure the following minimum requirements are met: |
| 1. **Hardware support**: Server has BMC/IPMI hardware | ||
| 2. **Kernel modules** (Linux): | ||
| ```bash | ||
| modprobe ipmi_devintf | ||
| modprobe ipmi_si | ||
| ``` | ||
| 3. **Device permissions**: | ||
| ```bash | ||
| ls -l /dev/ipmi* /dev/ipmi0 | ||
| # Should be accessible by the user running Alloy | ||
| ``` | ||
| 4. **FreeIPMI tools** (optional but recommended): | ||
| ```bash | ||
| # Debian/Ubuntu | ||
| apt-get install freeipmi-tools | ||
|
|
||
| # RHEL/CentOS | ||
| yum install freeipmi | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| 1. **Hardware support**: Server has BMC/IPMI hardware | |
| 2. **Kernel modules** (Linux): | |
| ```bash | |
| modprobe ipmi_devintf | |
| modprobe ipmi_si | |
| ``` | |
| 3. **Device permissions**: | |
| ```bash | |
| ls -l /dev/ipmi* /dev/ipmi0 | |
| # Should be accessible by the user running Alloy | |
| ``` | |
| 4. **FreeIPMI tools** (optional but recommended): | |
| ```bash | |
| # Debian/Ubuntu | |
| apt-get install freeipmi-tools | |
| # RHEL/CentOS | |
| yum install freeipmi | |
| ``` | |
| - **Hardware support**: Server has BMC/IPMI hardware | |
| - **Kernel modules**: `ipmi_devintf` and `ipmi_si` | |
| - **Device permissions**: `/dev/ipmi0` is accessible by the user running {{< param "PRODUCT_NAME" >}}. | |
| - **FreeIPMI tools**: Optional but recommended. |
Removed Linux from second point. Simplified the steps to bullet points and a list of things vs giving Linux commands to load kernel modules etc. We should only provide the OS-specific steps when they directly relate to Alloy, or if they are specific/custom in some way that is outside the typical use, or if we are building a tutorial.
Question: What about MacOS and Windows? Are there pre-reqs for other OSes? or is this a Linux-only thing?
| # `prometheus.exporter.ipmi` | ||
|
|
||
| The `prometheus.exporter.ipmi` component collects hardware metrics from IPMI-enabled devices. | ||
| It supports both local IPMI collection (from the machine running Alloy) and remote IPMI collection from network-accessible devices. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| It supports both local IPMI collection (from the machine running Alloy) and remote IPMI collection from network-accessible devices. | |
| It supports both local IPMI collection from the machine running {{< param "PRODUCT_NAME" >}}, and remote IPMI collection from network-accessible devices. |
PR Description
This PR adds a new
prometheus.exporter.ipmicomponent to Grafana Alloy for collecting hardware metrics from IPMI-enabled devices.Key Features:
Implementation Details:
internal/component/prometheus/exporter/ipmi/internal/static/integrations/ipmi_exporter/github.com/bougou/go-ipmifor IPMI operationsWhich issue(s) this PR fixes
Fixes #731
Notes to the Reviewer
PR Checklist