Custom Metrics
sfp provides multiple ways to enhance your metrics with custom data:
Report custom metrics using the
metrics:report
commandAdd organization-wide custom tags to all metrics (sfp-pro only)
sfp metrics report
sfp metrics report
Report a custom metric to any sfp supported metric provider
USAGE
$ @flxbl-io/sfp metrics report -m <value> -t gauge|counter|timer [-v <value>] [-g <value>] [--loglevel
trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]
FLAGS
-g, --tags=<value> tags for metric
-m, --metric=<value> (required) metrics to publish
-t, --type=<option> (required) type of metric
<options: gauge|counter|timer>
-v, --value=<value> value of metric
--loglevel=<option> [default: info] logging level for this command invocation
<options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
DESCRIPTION
Report a custom metric to any sfp supported metric provider
EXAMPLES
$ sfp metrics:report -m <metric> -t <type> -v <value>
Custom Tags Configuration
Availability
✅
❌
From
August 25
sfp-pro allows you to configure custom tags that will be automatically added to ALL metrics sent by sfp. This is useful for adding consistent organizational metadata without modifying individual commands.
Setting Custom Tags
Use the sfp config set
command with the custom-tag.*
prefix:
# Set a team tag
sfp config set custom-tag.team platform-engineering
# Set an environment tag
sfp config set custom-tag.environment production
# Set a repository tag
sfp config set custom-tag.repository myorg/myrepo
# Set any custom tag
sfp config set custom-tag.<tagname> <value>
Viewing Custom Tags
To see all configured custom tags:
# List all config including custom tags
sfp config list
# Filter for custom tags only
sfp config list | grep custom-tag
Removing Custom Tags
# Unset a specific tag
sfp config unset custom-tag.team
# Unset all custom tags (Unix/Linux/Mac)
sfp config list | grep custom-tag | cut -d'=' -f1 | xargs -I {} sfp config unset {}
Scope of Custom Tags
Custom tags follow the standard sfp configuration hierarchy:
Global tags: Set without
--scope local
, applies to all projectsProject-specific tags: Set with
--scope local
, applies only to current projectProject tags override global tags when both are present
# Set a global tag
sfp config set custom-tag.organization acme-corp
# Set a project-specific tag
sfp config set custom-tag.project frontend --scope local
How Custom Tags Work
Automatic Inclusion: Custom tags are automatically added to every metric sent by sfp
Tag Precedence: Command-specific tags override custom tags if there's a conflict
GitHub Integration: Repository tags are automatically added when running in GitHub Actions
Backend Support: Works with all supported metrics backends (StatsD, DataDog, NewRelic, Splunk)
Example Workflow
# Configure organizational tags
sfp config set custom-tag.team devops
sfp config set custom-tag.environment staging
sfp config set custom-tag.cost-center engineering
# Run any sfp command - tags are automatically included
sfp build --branch main
# Metrics sent: sfpowerscripts.build.scheduled
# Tags: team=devops, environment=staging, cost-center=engineering, branch=main
sfp release --environment uat
# Metrics sent: sfpowerscripts.release.scheduled
# Tags: team=devops, environment=staging, cost-center=engineering, env=uat
Use Cases
Team Attribution
Track metrics by team for resource allocation and performance monitoring:
sfp config set custom-tag.team platform-team
sfp config set custom-tag.squad alpha
Multi-Environment Tracking
Differentiate metrics across environments:
# In CI/CD pipeline for staging
sfp config set custom-tag.environment staging
sfp config set custom-tag.region us-west-2
# In CI/CD pipeline for production
sfp config set custom-tag.environment production
sfp config set custom-tag.region us-east-1
Cost Center Tracking
Associate metrics with cost centers for chargeback:
sfp config set custom-tag.cost-center CC-12345
sfp config set custom-tag.business-unit retail
Project Metadata
Add project-specific context:
sfp config set custom-tag.project customer-portal --scope local
sfp config set custom-tag.version v2.3.0 --scope local
sfp config set custom-tag.release-cycle Q1-2024 --scope local
Best Practices
Establish Naming Conventions: Define standard tag names across your organization
Use Hierarchical Tags: Organize tags logically (e.g.,
team
,squad
,project
)Automate Tag Configuration: Set tags in CI/CD pipeline initialization
Document Required Tags: Maintain a list of required tags for your organization
Regular Audits: Periodically review and clean up unused tags
CI/CD Integration
Configure custom tags in your CI/CD pipeline:
GitHub Actions
- name: Configure Custom Tags
run: |
sfp config set custom-tag.team ${{ vars.TEAM_NAME }}
sfp config set custom-tag.environment ${{ github.ref_name }}
sfp config set custom-tag.pipeline github-actions
sfp config set custom-tag.run-id ${{ github.run_id }}
Jenkins
stage('Configure Metrics') {
steps {
sh """
sfp config set custom-tag.team ${env.TEAM_NAME}
sfp config set custom-tag.environment ${env.BRANCH_NAME}
sfp config set custom-tag.pipeline jenkins
sfp config set custom-tag.build-number ${env.BUILD_NUMBER}
"""
}
}
Azure DevOps
- script: |
sfp config set custom-tag.team $(TeamName)
sfp config set custom-tag.environment $(Build.SourceBranchName)
sfp config set custom-tag.pipeline azure-devops
sfp config set custom-tag.build-id $(Build.BuildId)
displayName: 'Configure Custom Tags'
Limitations
Custom tags are loaded once at command initialization
Tag values must be strings
Tag names should follow your metrics backend's naming conventions
Maximum number of tags depends on your metrics backend limitations
Note: Custom tags are only available in sfp-pro edition. Community edition users must add tags manually to each command or upgrade to sfp-pro.
Last updated