iRODS Metrics in irods_demo

Terrell Russell, Ph.D.

Executive Director

iRODS Consortium

June 29 - July 2, 2026

iRODS User Group Meeting 2026

Barcelona, Spain

iRODS  Timeseries

Best practice:

  • Regularly query the database for 'metrics'
  • Write them down
  • Later, query the metrics, and draw some graphs

 

sql_exporter  prometheus  grafana

 

Part of https://github.com/irods/irods_demo

 

December 2025

Demo: https://www.youtube.com/watch?v=IWKrd5b-57Q

Slides: https://slides.com/irods/trirods-december-2025-easy-irods-metrics-sql-exporter-prometheus-and-grafana

 

Capturing Transfers In and Out

ICAT=> \d r_transfer_totals 
                  Table "public.r_transfer_totals"
  Column   |          Type          | Collation | Nullable | Default 
-----------+------------------------+-----------+----------+---------
 user_id   | bigint                 |           | not null | 
 action    | character varying(250) |           | not null | 
 exbibytes | bigint                 |           | not null | 
 bytes     | bigint                 |           | not null | 
Indexes:
    "unique_user_action" UNIQUE CONSTRAINT, btree (user_id, action)


ICAT=> select * from r_transfer_totals;
 user_id | action | exbibytes |   bytes    
---------+--------+-----------+------------
   10002 | out    |         0 | 4294967296
   10002 | in     |         0 | 2147483888
(2 rows)
  INSERT INTO R_TRANSFER_TOTALS (user_id, action, exbibytes, bytes)
  VALUES (${USER_ID}, '${ACTION}', 0, ${BYTES})
  ON CONFLICT (user_id, action) DO UPDATE SET
    bytes = R_TRANSFER_TOTALS.bytes + EXCLUDED.bytes;

iRODS Dashboarding

Next Steps

  • Seek community feedback
    • New metrics
    • Optimized queries
    • Different databases
    • Better dashboards
  • Define best practices
    • Scraping intervals
    • Thresholds and alerts
  • Absorb transfer tracking into the server

UGM 2026 - iRODS Metrics in irods_demo

By iRODS Consortium

UGM 2026 - iRODS Metrics in irods_demo

  • 9