- Installation
Before following these instructions make sure you have followed the instructions in Getting Started. Follow the instructions for the time series database of your choice and then perform the instructions listed under Do for All Pipelines.
NOTE: Splunk server install instructions tested on RHEL 8.3 NOTE Currently, we are not using a Splunk container and are running Splunk from a manual installation detailed below
-
Download trial of Splunk
-
By default it will install to /opt/splunk. Run
/opt/splunk/bin/splunk start(I suggest you do this in tmux or another terminal emulator) -
Run the following command:
vim /opt/splunk/etc/apps/splunk_httpinput/default/inputs.confand make sure your config looks like this:[http] disabled=0 port=8088 enableSSL=0 dedicatedIoThreads=2 maxThreads = 0 maxSockets = 0 useDeploymentServer=0 # ssl settings are similar to mgmt server sslVersions=*,-ssl2 allowSslCompression=true allowSslRenegotiation=true ackIdleCleanup=true -
Run
firewall-cmd --permanent --zone public --add-port={8000/tcp,8088/tcp} && firewall-cmd --reload -
Make splunk start on boot with
/opt/splunk/bin/splunk enable boot-start
- Browse to your Splunk management dashboard at
<IP>:8000. - Go to Settings -> Indexes
- In the top right of the screen click "New Index"
- Create a name, set Index Data Type to Metrics, and Timestamp Resolution to Seconds
- Browse to your Splunk management dashboard at
<IP>:8000. - Go to Settings -> Data Inputs
- On the following screen click "Add new" next to HTTP Event Collector
- Select any name you like for the collector and click "Next" at the top of the screen
- Select "Automatic" for Source type and for Index select the metrics index you created previously
- Click Review at the top, make sure everything is correct and then click "Submit" (again at the top)
At this juncture, you have done everything you need to on the Splunk side to get everything up and running. Next you need to finish configuring the docker pipeline. Proceed to Do for All Pipelines
For Elasticsearch, there are some external settings you must configure first. The below instructions are written for Linux and were tested on Ubuntu 20.04.3 LTS.
- Set vm.max_map_count to at least 262144
grep vm.max_map_count /etc/sysctl.conf. If you do not seevm.max_map_count=262144edit the file and add that line.- You can apply the setting to a live system with
sysctl -w vm.max_map_count=262144
- Depending on whether this is a lab or production there are several other settings which should be configured to tune ES' performance according to your system. See: https://www.elastic. co/guide/en/elasticsearch/reference/current/docker.html
Next you need to finish configuring the docker pipeline. Proceed to Do for All Pipelines
Set the following environment variables per the OpenTelemetry Collector configuration
- OTEL_COLLECTOR
- Base URL for OTel Collector (http://<IP>:<PORT>)
- OTEL_CACERT
- CA Cert for OTel Collector
- OTEL_CLIENT_CERT
- Client cert for OTel Collector
- OTEL_CLIENT_KEY
- Client key for OTel Collector
- OTEL_SKIP_VERIFY
- true/false
These instructions apply to all pipelines
See Get Docker for installation details. You will need to be able to run Docker commands as a user rather than root. See these instructions. On most Linux distributions this consists of running:
sudo groupadd docker
sudo usermod -aG docker $USERand then log out and back in. Run docker run hello-world as the user in question to test your privileges.
You will also need to install Docker Compose. Instructions for installing Docker Compose are here. The following versions of docker compose have been tested -
- v5.0.2
NOTE These instructions are performed on whatever host you would like to use to connect to all of your iDRACs
- git clone https://github.com/dell/iDRAC-Telemetry-Reference-Tools
- (For Splunk) Set the following environment variables as per the "HTTP Event Collector" configuration in the Splunk.
SPLUNK_HEC_KEY=<Token value>
SPLUNK_HEC_URL=http://<Splunk hostname or ip>:<HTTP Port Number>
SPLUNK_HEC_INDEX=<Index name> - Next run
bash compose.sh. The options you use will depend on what you want to do. There are five different "pumps" for the 6 different databases:--influx-pump,--prometheus-pump,--splunk-pump,--elk-pump,--timescale-pump,--otel-pump. These pumps are responsible for feeding the data from the pipeline into the pipeline of your choice. The other option you may want to add is a command to build the time series database of your choosing. If you already have an external instance of the database running then this won't be necessary. These options are:--influx-test-db,--prometheus-test-db,--elk-test-db,--timescale-test-db. We have not currently built out a splunk option. So the command to connect to build a data pipeline for an external splunk instance would bebash compose.sh --splunk-pump startRunning this command will trigger a build of all the necessary containers in the pipeline as specified in the Docker compose file.- WARNING There is a known bug where docker compose throws erroneous errors. These can be safely ignored. See #46. It will look like this:
-
Running influx with grafana This is a 2 step process of generating influx and grafana tokens and starting --influx-test-db. a. ./docker-compose-files/compose.sh setup --influx-test-db b. ./docker-compose-files/compose.sh start --influx-test-db
-
On your system, you will need to allow ports 8161 and 8080 through your firewall
- If you are running Elasticsearch, you will also need to open port 5601 for Kibana if you chose to run compose
with the
--elk-test-dboption. - If you ran compose with the
--influx-test-db,--prometheus-test-db, or--timescale-test-dboptions you will need to open port 3000 for Grafana.
- If you are running Elasticsearch, you will also need to open port 5601 for Kibana if you chose to run compose
with the
-
After you run this, the next step is to specify the iDRACs of the machines you are using. There is a webgui called
configuiwhich by default runs on port 8080. Browse to it and click "Add New Service". Alternatively you can upload a CSV file with three columns and no headers with each line in the format:host, username, passwordfor each iDRAC.
- Below is an example CSV file.
- Refresh the page and you should see your host appear in the list.
- At this point the pipeline should be up and running. You can run
docker ps -ato make sure all the containers in the pipeline are running. To confirm the final stage of the pump is working rundocker logs <pump_name>and you should see that the pump is forwarding events. - For additional troubleshooting steps see DEBUGGING.md
This is not required. It only demonstrates a possible Elasticsearch workflow.
- To configure the data source and visualization dashboards please access Kibana homepage in the
browser (
http://<YOUR_IP>:5601) - Select Stack Management from the Management section in the tools menu. Now go to the Data -> Index Management tab and find the index named "poweredge_telemetry_metrics". In the index pattern tab, create an index pattern called
poweredge_telemetry_metrics*.
- Next, browse to the discover tab to view the ingested data. You can find fields of interest and view the data in tabular form with your chosen fields.
- Next we will create charts which can then be placed in a dashboard. We will configure an aggregation metric on CRCErrorCount:
- Browse to influx (
http://<YOUR_IP>:8086) using the admin/DOCKER_INFLUXDB_INIT_PASSWORD - load data

- view telmetry metrics from my-org-bucket database

- Browse to Grafana (
http://<YOUR_IP>:3000) - Add InfluxDB datasource, select the url (
http://influx:8086) with the headerAuthorization: Token DOCKER_INFLUXDB_INIT_ADMIN_TOKEN, andorganization:my-org. Correct addition of datasource will show the available buckets.
- Visualize metrics using add panel and wrting query for the respective metric in the Query inspector(quick way is to get the query from the influxUI)
- For Prometheus:
- For TimescaleDB:
Kafka can be configured through the UI, an HTTP request or environment variables.
- Browse to the UI - http://localhost:8080
- Click on the
Configbutton in theKafka Broker Configurationsection. - Fill the
Broker IDandTopic Namein the pop-up. - Check the
TLSand/orClient Authboxes if the kafka instance needs those details for a successful connection- If the
TLSoption is checked, please choose theKafka CACertand selectSkip Hostname Verificationif you want to skip hostname verification. - If the
Client Authoption is checked, please choose theKafka Client CertificateandKafka Client Keyfrom the local filesystem.
- If the
- Send a
POSTrequest tohttp://localhost:8080/api/v1/KafkaConfigwith the following body
{
"kafkaBroker": "<Broker ID>",
"kafkaTopic": "<Topic>",
"kafkaPartition": "<Partition>",
"kafkaCACert": "<CA Cert>",
"kafkaSkipVerify": true/false,
"kafkaClientCert": "<Client Cert>",
"kafkaClientKey": "<Client Key>"
}- Sample cURL request
curl -N -k -X POST -H 'content-type: application/json' http://localhost:8080/api/v1/KafkaConfig -d '{"kafkaBroker": "http://localhost:9090", "kafkaTopic": "metrics"}'
Define the following environment variables in your local environment
export KAFKA_BROKER=<kafka-broker-ip>:9092
export KAFKA_TOPIC=<topic>
export KAFKA_PARTITION=<partition>
export KAFKA_CACERT="<CA Cert>"
export KAFKA_CLIENT_CERT="<Client Cert>"
export KAFKA_CLIENT_KEY="<Client Key>"
export KAFKA_SKIP_VERIFY=true/false
By default Kafka messages include metrics in Kafka messages. To include Server Alerts(EventLog) in the messages define the following environment variable.
export INCLUDE_ALERTS=true
[
{
"time": 1758775170,
"event": "metric",
"host": "3V322N3",
"fields": {
"_value": 2.8,
"metric_name": "PS1 Current 1_AmpsReading",
"source": ""
}
},
{
"time": 1758775175,
"event": "alert",
"host": "3V322N3",
"fields": {
"alert_id": "4346",
"memberid": "0",
"severity": "Warning",
"message_id": "IDRAC.PDR16",
"message": "Predictive failure reported for Disk 5 in Enclosure 0 on Connector 0 of RAID Controller in Slot 5. Part Number = ABCDE"
}
},
...
...
]
VictoriaMetrics is a high-performance, scalable, and cost-efficient time-series database designed for fast ingestion and querying of Prometheus-compatible metrics.
Within the iDRAC Telemetry framework, the VictoriaPump component collects iDRAC Redfish telemetry data from the ActiveMQ message bus and pushes it directly into VictoriaMetrics using the Prometheus exposition format.
This push-based model eliminates the need for a Prometheus intermediary, providing:
- Lower latency
- Reduced memory usage
- Simplified deployment
Configure credentials and the target URL of the VictoriaMetrics using the following environment variables.
| Variable | Description | Example |
|---|---|---|
VICTORIA_URL |
URL of the VictoriaMetrics instance | http://victoriametrics:8428 |
VICTORIA_USER |
Username for authentication | admin |
VICTORIA_PASSWORD |
Password for authentication | secret |
Note:
- These variables can be set in your terminal session or defined in your Docker Compose file.
- This approach makes deployments consistent, flexible, and portable across environments.
To launch the entire iDRAC Telemetry pipeline using VictoriaMetrics, execute the following command:
./compose.sh start --victoria-db --victoria-pump
If you already have an external VictoriaMetrics instance running, you can skip the local database by omitting the --victoria-db flag:
./compose.sh start --victoria-pump
-
Open your web browser and navigate to: http://localhost:8080. Replace
localhostwith your host machine’s IP address.
-
From the Config UI, do the following:
- Click Add Endpoint.
- Enter your iDRAC IP address, username, and password.
- Click Save.
This enables the Telemetry Service to start collecting telemetry data from your Dell PowerEdge servers using the Redfish protocol.
To confirm that VictoriaPump is running and pushing data correctly into VictoriaMetrics, view the container logs using the following command:
docker logs idrac-telemetry-reference-tools-victoriapump-standalone-1
This screenshot shows real-time logs from the VictoriaPump container. Each log entry in the following screenshot confirms the telemetry data flow from iDRAC to VictoriaMetrics.
Once VictoriaPump starts sending data, you can validate the metrics stored in VictoriaMetrics using VMUI.
Open your browser and navigate to: http://localhost:8428/vmui
You will see metric statistics and telemetry data collected from iDRAC.
You can filter and view telemetry metrics using queries in VMUI.
For example, running the following query displays the detailed temperature readings for each hardware component,
{name="PowerEdge_TemperatureReading", FQDD!=""}

(Re-)build the docker containers from source
./compose.sh --build --victoria-pump --victoria-db start
If you already have an external VictoriaMetrics instance running, you can skip the local database by omitting the --victoria-db flag:
./compose.sh --build --victoria-pump start
cmd/idrac-telemetry-receiver/idrac-telemetry-receiver.go script is created specific for dell/omnia usecases. This go script internally invokes dbdiscauth, configui and redfishread go script and avoid need of having 3 different docker containers. To build this container use the docker file docker-compose-files/Dockerfile.telemetry_receiver. Run the below command to build image.
docker build -t idrac-telemetry-receiver:latest -f docker-compose-files/Dockerfile.telemetry_receiver .
















