Skip to main content

open-database

Open and explore an Omnistat database using VictoriaMetrics. Use this when the user wants to view, query, or visualize collected Omnistat telemetry data from a user-mode job.

Jump to install

Source facts

Repository
ROCm/omnistat
Last source activity
July 13, 2026 at 19:29
Detected SKILL.md language
English
Stars
27
Forks
6

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
open-database
description
Open and explore an Omnistat database using VictoriaMetrics. Use this when the user wants to view, query, or visualize collected Omnistat telemetry data from a user-mode job.
allowedPrompts
[{"tool":"Bash","prompt":"check for running victoriametrics"},{"tool":"Bash","prompt":"run docker commands"},{"tool":"Bash","prompt":"start victoriametrics"},{"tool":"Bash","prompt":"stop victoriametrics"},{"tool":"Bash","prompt":"manage docker containers"},{"tool":"Bash","prompt":"check port availability"},{"tool":"Bash","prompt":"run victoriametrics binary"},{"tool":"Bash","prompt":"list directory contents"},{"tool":"Bash","prompt":"find database directories"},{"tool":"Bash","prompt":"check if path exists"},{"tool":"Bash","prompt":"explore filesystem for databases"},{"tool":"Bash","prompt":"verify victoriametrics is running"},{"tool":"Bash","prompt":"download files with curl or wget"}]
# Open Omnistat Database This skill provides instructions for loading an Omnistat database using VictoriaMetrics, which allows you to query and explore collected GPU telemetry data. ## Agentic Workflow When helping a user load a database, follow these steps: 1. **Identify the database path**: Ask the user for the path, or help them find it by exploring the filesystem 2. **Validate the database structure**: Check that the path contains the expected subdirectories (`data/`, `cache/`, `indexdb/`, etc.) 3. **Check for running VictoriaMetrics instances**: Detect and stop any existing instances to avoid port conflicts 4. **Check port availability**: If port 8428 is in use by another process, use port 8429 (or another available port) 5. **Download VictoriaMetrics** (if not already available): Get the latest binary release 6. **Start VictoriaMetrics**: Launch with the correct parameters, especially `-retentionPeriod=100y` 7. **Verify the database loaded**: Confirm VictoriaMetrics is running and can return data 8. **Inform the user**: Let them know the database is ready for queries at the appropriate URL (e.g., `http://localhost:8428` or the alternative port) ## Database Structure An Omnistat database collected in user-mode has the following structure: ``` database_dir/ ├── cache/ ├── data/ ├── flock.lock ├── indexdb/ ├── metadata/ ├── snapshots/ └── tmp/ ``` The `data/` subdirectory contains the VictoriaMetrics time-series data. **Important:** When starting VictoriaMetrics, you should pass the **root database directory** (the directory containing `data/`, `cache/`, etc.) to the `-storageDataPath` parameter, **NOT** the `data/` subdirectory itself. VictoriaMetrics will automatically look for the data in the correct subdirectories. ## Checking for Existing VictoriaMetrics Instances **IMPORTANT:** Before starting VictoriaMetrics, check if an instance is already running: ```bash # Check for native VictoriaMetrics processes ps aux | grep victoria-metrics-prod | grep -v grep # Check for Docker containers docker ps -a --filter "ancestor=victoriametrics/victoria-metrics" --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}" # Check if port 8428 is in use lsof -i :8428 ``` If an instance is running, stop it before proceeding: - **Native binary**: `pkill -f victoria-metrics-prod` or `kill $(cat victoria.pid)` - **Docker**: `docker stop victoria-metrics && docker rm victoria-metrics` **Note:** Never use `sudo kill` on Docker containers - always use `docker stop`. ### Port Selection If port 8428 is in use by another process (not VictoriaMetrics), use an alternative port like 8429: ```bash # Check what's using port 8428 lsof -i :8428 # If it's not VictoriaMetrics and you can't stop it, use port 8429 instead # (adjust the -httpListenAddr parameter when starting VictoriaMetrics) ``` ## Option 1: Using VictoriaMetrics Binary (Recommended) This is the recommended approach for most users - it provides direct control and better performance without Docker overhead. ### Download VictoriaMetrics Download the latest VictoriaMetrics release automatically: ```bash # Get the latest version dynamically LATEST_VERSION=$(curl -s https://api.github.com/repos/VictoriaMetrics/VictoriaMetrics/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') # Download for Linux AMD64 wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/${LATEST_VERSION}/victoria-metrics-linux-amd64-${LATEST_VERSION}.tar.gz # Extract tar xzf victoria-metrics-linux-amd64-${LATEST_VERSION}.tar.gz # Verify the binary exists if [ ! -f victoria-metrics-prod ]; then echo "ERROR: Download or extraction failed. Check your internet connection." exit 1 fi # Make executable chmod +x victoria-metrics-prod ``` Alternatively, check the [VictoriaMetrics releases page](https://github.com/VictoriaMetrics/VictoriaMetrics/releases) to download a specific version manually. ### Start VictoriaMetrics ```bash ./victoria-metrics-prod \ -storageDataPath=/path/to/omnistat/database \ -httpListenAddr=0.0.0.0:8428 \ -retentionPeriod=100y \ -search.disableCache \ -search.latencyOffset=0 \ -search.maxPointsPerTimeseries=90000 ``` **Important:** Replace `/path/to/omnistat/database` with the actual path to your Omnistat database's **root directory** (the directory containing `data/`, `cache/`, etc.), **NOT** the `data/` subdirectory itself. The binary will run in the foreground. To run in the background: ```bash nohup ./victoria-metrics-prod \ -storageDataPath=/path/to/omnistat/database \ -httpListenAddr=0.0.0.0:8428 \ -retentionPeriod=100y \ -search.disableCache \ -search.latencyOffset=0 \ -search.maxPointsPerTimeseries=90000 \ > victoria.log 2>&1 & # Save the process ID echo $! > victoria.pid ``` ### Key Parameters Explained - `-storageDataPath=/path/to/database`: Points to the database **root directory** - VictoriaMetrics will automatically find the data in subdirectories - `-httpListenAddr=0.0.0.0:8428`: Exposes the query API on port 8428 - `-retentionPeriod=100y`: **CRITICAL** - Keeps data for 100 years to prevent automatic deletion of historical data (default is only 1 month) - `-search.disableCache`: Ensures fresh data reads (useful for exploring) - `-search.latencyOffset=0`: No artificial latency for queries - `-search.maxPointsPerTimeseries=90000`: Maximum data points returned per time series in a single range query. This caps the query resolution: the finest possible step is `job_runtime / 90000`. For example, a 1-hour job can be queried at 0.04s resolution, while a 24-hour job is limited to ~1s. The `omnistat-inspect` tool auto-computes the finest safe step within this limit. Increase this value for finer resolution on very long jobs, but note that higher values increase memory usage per query ### Access the Database Once running, you can: 1. Query VictoriaMetrics directly via HTTP API at `http://localhost:8428` 2. Use Omnistat's query tools pointing to `http://localhost:8428` 3. Connect Grafana to VictoriaMetrics for visualization ### Verify the Database Loaded After starting VictoriaMetrics, verify it's running and has data. **IMPORTANT:** Omnistat databases contain historical data, so you must use time-range queries spanning a wide period (e.g., 2020-2030) rather than instant queries which only check "now". Use **only curl** to verify data is present: ```bash # 1. Check if VictoriaMetrics is responding curl -s "http://localhost:8428/api/v1/status/tsdb" | head -c 200 # 2. List available metric names with a wide historical time range # Use Unix timestamps: start=1577836800 (2020-01-01) to end=1893456000 (2030-01-01) curl -s 'http://localhost:8428/api/v1/label/__name__/values?start=1577836800&end=1893456000' # 3. List available job IDs (confirms job data is present) curl -s 'http://localhost:8428/api/v1/label/jobid/values?start=1577836800&end=1893456000' ``` **Expected results:** - The first command should return JSON with TSDB status - The second command should return a list of metric names (e.g., `omnistat_info`, `rocm_utilization_percentage`, etc.) - The third command should return a list of job IDs If the metric names and job IDs are returned, the database is loaded and ready for queries. If you get empty results `{"data":[]}`, the time range may not cover the data collection period, or there may be an issue with the database. ### Stop VictoriaMetrics If running in foreground, press `Ctrl+C`. If running in background: ```bash # Using the saved PID kill $(cat victoria.pid) # Or find and kill the process pkill -f victoria-metrics-prod ``` ## Option 2: Using VictoriaMetrics Docker Image If you prefer to use Docker: ### Check Before Starting **ALWAYS** check for existing Docker containers first: ```bash docker ps -a --filter "ancestor=victoriametrics/victoria-metrics" ``` If a container exists, stop and remove it: ```bash docker stop victoria-metrics docker rm victoria-metrics ``` ### Start VictoriaMetrics ```bash docker run -d \ --name victoria-metrics \ -p 8428:8428 \ -v /path/to/omnistat/database:/data:rw \ victoriametrics/victoria-metrics \ -storageDataPath=/data \ -httpListenAddr=0.0.0.0:8428 \ -retentionPeriod=100y \ -search.disableCache \ -search.latencyOffset=0 \ -search.maxPointsPerTimeseries=90000 ``` **Important:** - Replace `/path/to/omnistat/database` with the actual path to your Omnistat database's **root directory** (the directory containing `data/`, `cache/`, etc.), **NOT** the `data/` subdirectory itself. - The volume mount uses `:rw` (read-write) to ensure VictoriaMetrics can read and write to the database directory. This is required for VictoriaMetrics to function properly. ### Stop VictoriaMetrics Docker Container **IMPORTANT:** For Docker-based VictoriaMetrics, use Docker commands (no sudo required): ```bash # Stop the container gracefully docker stop victoria-metrics # Remove the container docker rm victoria-metrics ``` **DO NOT** use `sudo kill` or `pkill` commands on Docker containers - these are incorrect and will not work properly. ## Using Omnistat Query Tools Once VictoriaMetrics is running with your database loaded, you can use `omnistat-inspect`: ```bash # Generate a report card for a specific job omnistat-inspect --tsdb-url http://localhost:8428 job <job_id> report ``` Refer to the `omnistat-inspect` documentation for more advanced usage. ## Important Notes ### Retention Period **Always set `-retentionPeriod` to a very long duration** (e.g., `100y` for 100 years) when loading databases for analysis. VictoriaMetrics defaults to a 1-month retention period, which means it will automatically delete data older than 1 month. Since Omnistat databases often contain historical telemetry data you want to preserve for analysis, failing to set this flag could result in permanent data loss. ## Troubleshooting ### VictoriaMetrics won't start - Verify the database path points to the **root database directory** (containing `data/`, `cache/`, etc.), **not** the `data/` subdirectory - Check for existing instances (see "Checking for Existing VictoriaMetrics Instances" above) - Ensure you have read/write permissions on the database directory ### Port 8428 is already in use If port 8428 is occupied by another process (not VictoriaMetrics), use an alternative port: ```bash # Binary: use a different port ./victoria-metrics-prod \ -storageDataPath=/path/to/database \ -httpListenAddr=0.0.0.0:8429 \ -retentionPeriod=100y \ ... # Docker: map to a different host port docker run -d \ --name victoria-metrics \ -p 8429:8428 \ ... ``` Then use `http://localhost:8429` instead of `http://localhost:8428` for queries. ### No data returned from queries - Confirm VictoriaMetrics is pointing to the correct **root database directory** (not the `data/` subdirectory) - Check that the database actually contains data (should have files in the `data/` subdirectory) - Verify the time range of your queries matches the collection period - **Check if data was deleted due to retention period** - if you didn't set `-retentionPeriod=100y`, old data may have been automatically removed ### Data disappeared after loading - This usually means the retention period was not set properly - VictoriaMetrics deleted data older than the default 1-month retention - Always use `-retentionPeriod=100y` to prevent automatic deletion ### Permission errors - Ensure the database directory has appropriate read/write permissions - For Docker, the volume mount must be `:rw` (read-write) - Check that the database directory is readable by your user
View on GitHub