CLI Basics
The Probe command-line interface (CLI) is your primary way to interact with Probe. This guide covers all the essential commands, options, and techniques you need to master.
Basic Usage
The most basic way to run Probe is:
probe workflow.ymlThis executes the workflow defined in workflow.yml and displays the results.
Command Syntax
probe [options] <workflow-file>workflow-file: Path to your YAML workflow file (required)options: Various flags to modify behavior (optional)
Core Options
Help and Information
Get help about available options:
probe --help
# or
probe -hCheck the installed version:
probe --versionVerbose Output
Enable detailed logging to see what's happening under the hood:
probe --verbose workflow.yml
# or
probe -v workflow.ymlVerbose mode shows:
- Detailed HTTP request/response information
- Step execution timing
- Variable resolution details
- Plugin communication logs
Example verbose output:
[DEBUG] Starting workflow: My Health Check
[DEBUG] --- Step 1: Check Homepage
[DEBUG] Request:
[DEBUG] method: "GET"
[DEBUG] url: "https://example.com"
[DEBUG] Response:
[DEBUG] status: 200
[DEBUG] body: "<!DOCTYPE html>..."
[DEBUG] RT: 245msResponse Time Display
Show response times for HTTP requests:
probe --rt workflow.ymlThis adds timing information to the output without the full verbosity of --verbose.
Combining Options
You can combine multiple options:
probe -v --rt workflow.ymlMultiple File Merging
One of Probe's powerful features is the ability to merge multiple YAML files:
probe base.yml,overrides.ymlUse Cases for File Merging
1. Environment-specific configuration:
base-workflow.yml:
name: API Health Check
jobs:
health-check:
steps:
- name: Check API
action: http
with:
url: "{{env.API_URL}}"
method: GET
test: res.status == 200production.yml:
# Production-specific settings
env:
API_URL: https://api.production.example.comstaging.yml:
# Staging-specific settings
env:
API_URL: https://api.staging.example.comRun for different environments:
# Production
probe base-workflow.yml,production.yml
# Staging
probe base-workflow.yml,staging.yml2. Shared configuration:
common-config.yml:
# Shared HTTP settings
defaults:
http:
timeout: 30s
headers:
User-Agent: "Probe Health Check v1.0"api-check.yml:
name: API Monitoring
# Inherits common HTTP settings
jobs:
# ... job definitionsprobe common-config.yml,api-check.yml3. Override specific values:
probe workflow.yml,local-overrides.ymlThe merge order matters - later files override values from earlier files.
Working with Environment Variables
Probe can access environment variables in your workflows using the env object:
steps:
- name: Connect to Database
action: http
with:
url: "{{env.DATABASE_URL}}"
headers:
Authorization: "Bearer {{env.API_TOKEN}}"Set environment variables before running:
export DATABASE_URL="https://db.example.com"
export API_TOKEN="your-secret-token"
probe workflow.ymlExit Codes
Probe uses standard exit codes to indicate results:
0: Success - all jobs completed successfully1: Failure - one or more jobs failed or error occurred
This makes Probe perfect for use in scripts and CI/CD pipelines:
#!/bin/bash
if probe health-check.yml; then
echo "✅ Health check passed"
deploy_application
else
echo "❌ Health check failed"
exit 1
fiReal-World Examples
1. CI/CD Integration
# In your CI/CD pipeline
probe smoke-tests.yml
if [ $? -eq 0 ]; then
echo "Smoke tests passed, proceeding with deployment"
else
echo "Smoke tests failed, aborting deployment"
exit 1
fi2. Cron Job Monitoring
# In crontab - run every 5 minutes
*/5 * * * * /usr/local/bin/probe /opt/monitoring/health-check.yml >> /var/log/probe.log 2>&13. Development Testing
# Quick test during development
probe -v api-tests.yml,local-config.yml4. Load Testing
# Run performance tests with timing
probe --rt --verbose load-test.ymlOutput Interpretation
Understanding Probe's output helps you quickly identify issues:
Successful Execution
My Health Check
Monitoring application health
⏺ Frontend Check (Completed in 0.45s)
⎿ 0. ✔︎ Check Homepage (234ms)
1. ✔︎ Check API Health (156ms)
Total workflow time: 0.45s ✔︎ All jobs succeededKey indicators:
- ⏺: Job completed
- ✔︎: Step succeeded
- Green text: Success status
- Total time: Overall execution time
Failed Execution
My Health Check
Monitoring application health
⏺ Frontend Check (Failed in 1.23s)
⎿ 0. ✘ Check Homepage (1.23s)
request: map[string]interface {}{"method":"GET", "url":"https://example.com"}
response: map[string]interface {}{"status":500, "body":"Internal Server Error"}
1. ⏭ Check API Health (skipped)
Total workflow time: 1.23s ✘ 1 job(s) failedKey indicators:
- ✘: Step failed
- ⏭: Step skipped (due to previous failure)
- Red text: Failure status
- Request/Response: Debug information for failed HTTP requests
Partial Success
Multi-Service Check
Checking multiple services
⏺ Critical Services (Completed in 0.67s)
⎿ 0. ✔︎ Database Check (234ms)
1. ✔︎ API Check (156ms)
⏺ Optional Services (Failed in 2.34s)
⎿ 0. ✘ External API Check (2.34s)
Total workflow time: 2.34s ✘ 1 job(s) failedTroubleshooting Common Issues
File Not Found
[ERROR] workflow is requiredSolution: Make sure you're providing a valid file path:
probe ./workflows/health-check.ymlYAML Syntax Errors
[ERROR] yaml: line 5: mapping values are not allowed in this contextSolution: Check your YAML syntax:
- Use spaces, not tabs for indentation
- Ensure proper key-value syntax with colons
- Quote strings containing special characters
Permission Errors
[ERROR] permission deniedSolution: Ensure the workflow file is readable:
chmod +r workflow.ymlNetwork Timeouts
If steps hang or timeout:
- Use
--verboseto see detailed network information - Check network connectivity to target URLs
- Consider adding timeout values in your HTTP actions
Best Practices
1. Use Descriptive File Names
# Good
probe api-health-check.yml
probe database-migration-test.yml
# Not so good
probe test.yml
probe workflow.yml2. Organize with Directories
# Organize workflows by purpose
probe monitoring/health-check.yml
probe deployment/smoke-tests.yml
probe maintenance/cleanup.yml3. Use Configuration Files
Keep secrets and environment-specific values in separate files:
probe workflow.yml,configs/production.yml4. Validate Before Production
Always test with verbose mode first:
# Test thoroughly
probe -v new-workflow.yml,test-config.yml
# Deploy to production
probe new-workflow.yml,production-config.ymlWhat's Next?
Now that you've mastered the CLI basics, you can:
- Explore How-tos - Learn specific patterns and use cases
- Check the Reference - Deep dive into all available options
- Try the Tutorials - Follow step-by-step guides for common scenarios
The CLI is your gateway to Probe's power. With these basics mastered, you're ready to build sophisticated monitoring and automation workflows.