Install automation dashboard to calculate savings (RHEL only)
By effectively using automation dashboard, you can gain valuable insights into your Ansible Automation Platform usage and drive continuous improvement in your automation practices.
About the automation dashboard Copy linkLink copied!
The automation dashboard utility is a web-based container application that provides key metrics related to job execution, efficiency, and the value derived from automation.
Automation dashboard uses automation metrics to supply automation usage data from Ansible Automation Platform. This data helps you compare the cost of performing tasks manually to the cost of performing tasks through automation, allowing you to show what savings are achievable through automation.
Key benefits
Automation dashboard helps you:
- Get a clear overview of the automation occurring in your environment.
- Track metrics such as time saved and errors reduced, to quantify the benefits of automation.
- Analyze job execution times and failure rates to pinpoint areas for automation improvement.
- Use the generated data to make informed decisions about automation strategy, resource allocation, and prioritization of automation projects.
Automation Dashboard and Red Hat Ansible Automation Platform 2.7
In Red Hat Ansible Automation Platform 2.7, two dashboard solutions are available:
- Native Automation Dashboard (Technology Preview): Integrated into Red Hat Ansible Automation Platform 2.7 as part of the Metrics Service. Suitable for single Red Hat Ansible Automation Platform instance monitoring with integrated Red Hat Ansible Automation Platform UI experience.
- Standalone automation dashboard: This guide describes the standalone utility, which continues to be supported in Red Hat Ansible Automation Platform 2.7 and later releases. Use the standalone utility when you need:
- Multi-instance monitoring (aggregating data across multiple Red Hat Ansible Automation Platform deployments)
- Independent dashboard infrastructure separate from Red Hat Ansible Automation Platform installation
- Dashboard for Red Hat Ansible Automation Platform versions prior to 2.7
Choose between standalone and native dashboard (Red Hat Ansible Automation Platform 2.7+) Copy linkLink copied!
If you are running Red Hat Ansible Automation Platform 2.7, two dashboard options are available. Use this guidance to determine which dashboard solution meets your needs.
Use standalone automation dashboard when:
- Multi-cluster monitoring is required: You need to aggregate data across multiple Red Hat Ansible Automation Platform deployments (for example, production, staging, and development environments)
- Using Red Hat Ansible Automation Platform version is 2.4, 2.5, or 2.6: Native dashboard is only available in Red Hat Ansible Automation Platform 2.7
- Independent infrastructure preferred: You want dashboard infrastructure separate from Red Hat Ansible Automation Platform installation (for example, different security zones, independent scaling, disaster recovery isolation)
Use native Automation Dashboard (Red Hat Ansible Automation Platform 2.7) when:
- Single Red Hat Ansible Automation Platform instance monitoring: You only need to monitor one Red Hat Ansible Automation Platform deployment
- Integrated experience preferred: You want dashboard integrated into Red Hat Ansible Automation Platform unified UI with Gateway authentication
- No additional infrastructure: You do not want to deploy separate VMs or containers for dashboard
- Using a new Red Hat Ansible Automation Platform 2.7 deployment: You are installing Red Hat Ansible Automation Platform 2.7 for the first time
Coexistence Copy linkLink copied!
Both dashboard solutions can run simultaneously. For example, you might use:
- Standalone dashboard: For aggregated view across multiple Red Hat Ansible Automation Platform environments
- Native dashboard: For detailed single-instance view of your Red Hat Ansible Automation Platform 2.7 production cluster
Architecture comparison Copy linkLink copied!
Standalone dashboard infrastructure:
- Separate RHEL host or VM
- Dedicated PostgreSQL database
- Independent Redis instance
- Podman containerized deployment
- Manual OAuth2 token configuration
- Pulls data by using Red Hat Ansible Automation Platform API
Native dashboard infrastructure (Technology Preview):
- Integrated with Metrics Service (no separate VM)
- Uses Metrics Service PostgreSQL database
- Automatic Gateway authentication
- Enabled by using installer flag
- Data collected by Metrics Service backend
Migration considerations Copy linkLink copied!
There is no automatic migration path from standalone dashboard to native dashboard in Red Hat Ansible Automation Platform 2.7. If you plan to transition from standalone to native dashboard in the future:
- Continue using standalone dashboard until multi-instance support is added to native dashboard (planned for future GA release)
- Contact Red Hat Support for guidance on migration planning
Install automation dashboard Copy linkLink copied!
Install automation dashboard to collect and analyze key metrics related to job execution, efficiency, and automation savings across your Ansible Automation Platform deployments.
Before you begin Copy linkLink copied!
- One of the following tested configurations:
- RHEL 9 or RHEL 10 on x86 or ARM-based physical or virtual hosts.
- With an external database: PostgreSQL v15 database.
Important Do not install automation dashboard on the same host(s) as Ansible Automation Platform.
- Automation dashboard installation has been tested with the following configuration:
- 80 GB hard drive (depending on data growth)
- 4 vCPUs x 16 GB RAM
- Disk IOPS - 3000
- Handle up to 10,000 jobs/month and 47M summaries/month
- Connects to three Ansible Automation Platform deployments of the same version
- Access to baseos and Ansible Automation Platformstream repository packages for the RHEL 9 or RHEL 10 host.
- A non-root login account to the RHEL 9 or RHEL 10 host for installation.
- The login account requires
sudoaccess to root. - By default, we use the
$HOMEDIRof the user account.
- The login account requires
- URL details for access to your Ansible Automation Platform instances.
- One of the following supported Red Hat Ansible Automation Platform versions:
- Red Hat Ansible Automation Platform 2.4
- Red Hat Ansible Automation Platform 2.5
- Red Hat Ansible Automation Platform 2.6
- Red Hat Ansible Automation Platform 2.7
- An Ansible Automation Platform OAuth2 token, which is used for communication between the Ansible Automation Platform instances and automation dashboard.
- Access to download the installation bundle providing installation components for the automation dashboard.
- Open firewall access to allow for bidirectional communication between Ansible Automation Platform instances and the automation dashboard.
- This includes HTTPS/443 (or your Ansible Automation Platform configured port) from the dashboard to the Ansible Automation Platform instance(s).
- Port 8447 is the default ingress port for the automation dashboard. This port can be configured during installation.
- RHEL firewall ports that might block 5432 to PostgreSQL.
- A supported version of
ansible-coreinstalled on supported RHEL versions.
Procedure Copy linkLink copied!
Results Copy linkLink copied!
For reference, see the following example output:
PLAY RECAP *********************************************************************************************************************************************
ec2-54-147-26-173.compute-1.amazonaws.com : ok=126 changed=51 unreachable=0 failed=0 skipped=42 rescued=0 ignored=0
localhost : ok=12 changed=0 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0
Alternative configurations are possible (for example, the database for automation dashboard can be set on a different host). This requires additional changes to variables in the inventory file. Consult the Inventory variables section of this document for available variables.
Configure automation dashboard Copy linkLink copied!
Integrate your Ansible Automation Platform instances into the automation dashboard configuration to collect and visualise data and gain insights into your automation.
Before you begin Copy linkLink copied!
- You have installed automation dashboard.
- You have verified that automation dashboard is running on HTTPS port 8447 on your Red Hat Enterprise Linux host.
Note - This verification requires your Ansible Automation Platform login details.
- Port 8447 is enabled by default, but this is configurable.
Procedure Copy linkLink copied!
Synchronize data to automation dashboard Copy linkLink copied!
Synchronize data from your connected Ansible Automation Platform clusters to the automation dashboard to view the latest automation metrics.
Before you begin Copy linkLink copied!
- You have installed automation dashboard.
- You have configured the
clusters.yamlfile with your platform details.
Procedure Copy linkLink copied!
Results Copy linkLink copied!
- Verify that the terminal displays the success message:
Successfully created Sync task for Cluster <cluster_url>. - Refresh automation dashboard in your browser to view the updated metrics.
Verify cluster access tokens Copy linkLink copied!
After you configure and load your cluster data, verify the stored access tokens for debugging purposes.
Procedure Copy linkLink copied!
Results Copy linkLink copied!
If you come across error messages during installation, consult the following table:
| Issue | Possible Cause | Solution |
|---|---|---|
| 401 error |
This is an unauthorized access message indicating authentication errors such as wrong credentials or tokens. |
Verify that your access token is correct in |
| 401 error |
A temporary 401 error is expected behavior when the token expires, followed immediately by trying to refresh. |
If the automatic token refresh fails (for example, due to invalid |
| 404 error |
This is a “not found” message indicating that something is not configured correctly or pointing to the correct endpoint. |
Verify that your Ansible Automation Platform instance URLs used in |
A successful installation should be running the following three container services:
podman ps --all --format "{{.Names}}"
postgresql
automation-dashboard-task
automation-dashboard-web
You can check your container logs by running the following:
journalctl CONTAINER_NAME=container (where container equals one of postgresql automation-dashboard-task or automation-dashboard-web)
For example:
journalctl CONTAINER_NAME=automation-dashboard-task
May 22 13:02:07 automation-dashboard automation-dashboard-task[1607]: [wait-for-migrations-dashboard.sh] Waiting for database migrations...
May 22 13:02:07 automation-dashboard automation-dashboard-task[1607]: [wait-for-migrations-dashboard.sh] Attempt 1
May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,636 periodic 2 140568371550016 Starting sync task.
May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,636 periodic 2 140568371550016 Retrieving clusters inform>
May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,747 periodic 2 140568371550016 Retrieved 1 clusters.
May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,761 periodic 2 140568371550016 Retrieving data from clust>
May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,761 connector 2 140568371550016 Checking Ansible Automation Platform version at h>
May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,761 connector 2 140568371550016 Checking if is Ansible Automation Platform 2.5 at>
May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,761 connector 2 140568371550016 Pinging api https://ec2-3>
May 22 13:02:10 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:10,761 connector 2 140568371550016 Executing GET request to >
May 22 13:02:13 automation-dashboard automation-dashboard-task[1607]: ERROR 2025-05-22 13:02:13,820 connector 2 140568371550016 GET request failed with >
May 22 13:02:13 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:13,821 connector 2 140568371550016 Checking if is Ansible Automation Platform 2.4 at>
May 22 13:02:13 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:13,821 connector 2 140568371550016 Pinging api https://ec2-3>
May 22 13:02:13 automation-dashboard automation-dashboard-task[1607]: INFO 2025-05-22 13:02:13,821 connector 2 140568371550016 Executing GET request to >
May 22 13:02:16 automation-dashboard automation-dashboard-task[1607]: ERROR 2025-05-22 13:02:16,892 connector 2 140568371550016 GET request failed with ...
The following log snippet shows a successful token refresh:
This log snippet omits timestamps and hostname for brevity.
Example
journalctl CONTAINER_NAME=automation-dashboard-task
INFO Checking if is AAP 2.5 ... 2.6 at https://app.example.com:443
INFO Pinging api https://app.example.com:443/api/gateway/v1/ping/
INFO Detected AAP version AAP 2.6 at https://app.example.com:443
INFO Executing GET request to https://app.example.com:443/api/controller/v2/organizations/?page_size=100&page=1
ERROR GET request failed with status 401
INFO Token refresh POST request succeeded with status 201
ERROR GET after reauth response.status_code=200
INFO Executing GET request to https://app.example.com:443/api/controller/v2/job_templates/?page_size=200&page=1
Executing GET request to https://app.example.com:443/api/controller/v2/jobs/?page_size=100&page=1&order_by=finished&finished__gt=2025-10-23T13:01:09.768681Z
Check how the services are running by using systemd:
systemctl status --user
● automation-dashboard
State: running
Units: 76 loaded (incl. loaded aliases)
Jobs: 0 queued
Failed: 0 units
Since: Thu 2025-05-22 13:02:07 UTC; 22min ago
systemd: 252-51.el9
CGroup: /user.slice/user-1000.slice/user@1000.service
├─app.slice
│ ├─automation-dashboard-task.service
│ │ └─1607 /usr/bin/conmon --api-version 1 -c 84e46532e8ca31b0cadb037479289d030103aa01b7a1591e62b83b17f031e47d -u 84e46532e8ca31b0cadb037479>
│ ├─automation-dashboard-web.service
│ │ └─1608 /usr/bin/conmon --api-version 1 -c d060f3e3fb2b4c4c5c588149253beed83c78ccc9c9a8c1bf4c96157142a210dc -u d060f3e3fb2b4c4c5c58814925>
│ ├─dbus-broker.service
│ │ ├─1621 /usr/bin/dbus-broker-launch --scope user
│ │ └─1624 dbus-broker --log 4 --controller 9 --machine-id 612db98503014199bfd8c788c8d3da58 --max-bytes 100000000000000 --max-fds 2500000000>
│ └─postgresql.service
│ └─1614 /usr/bin/conmon --api-version 1 -c eec61745cb6fc3a89a4f7475d7ef63b5899699157d943c2f16a3243311927bef -u eec61745cb6fc3a89a4f7475d7>
├─init.scope
│ ├─1093 /usr/lib/systemd/systemd --user
│ └─1128 "(sd-pam)"
└─user.slice
├─libpod-84e46532e8ca31b0cadb037479289d030103aa01b7a1591e62b83b17f031e47d.scope
│ └─container
│ ├─1619 /usr/bin/dumb-init -- /usr/bin/launch_dashboard_task.sh
│ └─1681 /venv/bin/python periodic.py
├─libpod-d060f3e3fb2b4c4c5c588149253beed83c78ccc9c9a8c1bf4c96157142a210dc.scope
│ └─container
│ ├─1617 /usr/bin/dumb-init -- /usr/bin/launch_dashboard_web.sh
│ ├─1646 /usr/bin/python3.9 /usr/local/bin/supervisord -c /etc/supervisord_dashboard_web.conf
│ ├─1877 /bin/bash /usr/local/bin/stop-supervisor
│ ├─1878 "nginx: master process nginx -g daemon off;"
│ ├─1879 /venv/bin/uwsgi /etc/tower/uwsgi.ini
│ ├─1880 "nginx: worker process"
│ ├─1881 "nginx: worker process"
│ ├─1882 "nginx: worker process"
│ ├─1883 "nginx: worker process"
│ ├─1884 /venv/bin/uwsgi /etc/tower/uwsgi.ini
│ ├─1885 /venv/bin/uwsgi /etc/tower/uwsgi.ini
│ ├─1886 /venv/bin/uwsgi /etc/tower/uwsgi.ini
│ ├─1887 /venv/bin/uwsgi /etc/tower/uwsgi.ini
│ └─1888 /venv/bin/uwsgi /etc/tower/uwsgi.ini
├─libpod-eec61745cb6fc3a89a4f7475d7ef63b5899699157d943c2f16a3243311927bef.scope
│ └─container
│ ├─1623 postgres
│ ├─1869 "postgres: logger "
│ ├─1871 "postgres: checkpointer "
│ ├─1872 "postgres: background writer "
│ ├─1873 "postgres: walwriter "
│ ├─1874 "postgres: autovacuum launcher "
│ ├─1875 "postgres: stats collector "
│ ├─1876 "postgres: logical replication launcher "
│ └─1889 "postgres: aapdashboard aapdashboard 172.31.28.99(39338) idle"
└─podman-pause-b6c4e853.scope
└─1359 catatonit -P
Uninstall automation dashboard Copy linkLink copied!
Uninstall automation dashboard and its dependencies by using a single command, ensuring a clean removal from your host.
Procedure Copy linkLink copied!
ansible-playbook -i inventory
ansible.containerized_installer.dashboard_uninstall