LogoLogo
StackState.comDownloadSupportExplore playground
StackState v5.1
StackState v5.1
  • Welcome to the StackState docs!
  • StackState self-hosted v5.1 docs
  • Getting Started
  • 🚀Setup
    • Install StackState
      • Requirements
      • Kubernetes / OpenShift
        • Kubernetes install
        • OpenShift install
        • Required Permissions
        • Non-high availability setup
        • Override default configuration
        • Configure storage
        • Configure Ingress
        • Install from custom image registry
        • Migrate from Linux install
      • Linux
        • Before you install
        • Download
        • Install StackState
        • Install with production configuration
        • Install with development configuration
        • Install with POC configuration
        • Set up a reverse proxy
        • Set up TLS without reverse proxy
      • Initial run guide
      • Troubleshooting
    • Upgrade StackState
      • Steps to upgrade
      • Version specific upgrade instructions
      • StackPack versions
      • StackState release notes
    • StackState Agent
      • About StackState Agent V3
      • Docker
      • Kubernetes / OpenShift
      • Linux
      • Windows
      • Advanced Agent configuration
      • Use an HTTP/HTTPS proxy
      • Agent V1 (legacy)
      • Migrate Agent V1 to Agent V2
        • Linux
        • Docker
    • StackState CLI
      • CLI: sts
      • CLI: stac (deprecated)
      • Comparison between CLIs
    • Data management
      • Backup and Restore
        • Kubernetes backup
        • Linux backup
        • Configuration backup
      • Data retention
      • Clear stored data
  • 👤Use
    • Concepts
      • The 4T data model
      • Components
      • Relations
      • Health state
      • Layers, Domains and Environments
      • Perspectives
      • Anomaly detection
      • StackState architecture
    • StackState UI
      • Explore mode
      • Filters
      • Views
        • About views
        • Configure the view health
        • Create and edit views
        • Visualization settings
      • Perspectives
        • Topology Perspective
        • Events Perspective
        • Traces Perspective
        • Metrics Perspective
      • Timeline and time travel
      • Analytics
      • Keyboard shortcuts
    • Checks and monitors
      • Checks
      • Add a health check
      • Anomaly health checks
      • Monitors
      • Manage monitors
    • Problem analysis
      • About problems
      • Problem lifecycle
      • Investigate a problem
      • Problem notifications
    • Metrics
      • Telemetry streams
      • Golden signals
      • Top metrics
      • Add a telemetry stream
      • Browse telemetry
      • Set telemetry stream priority
    • Events
      • About events
      • Event notifications
      • Manage event handlers
    • Glossary
  • 🧩StackPacks
    • About StackPacks
    • Add-ons
      • Autonomous Anomaly Detector
      • Health Forecast
    • Integrations
      • About integrations
      • 💠StackState Agent V2
      • 💠AWS
        • AWS
        • AWS ECS
        • AWS X-ray
        • StackState/Agent IAM role: EC2
        • StackState/Agent IAM role: EKS
        • Policies for AWS
        • AWS (legacy)
        • Migrate AWS (legacy) to AWS
      • 💠Dynatrace
      • 💠Kubernetes
      • 💠OpenShift
      • 💠OpenTelemetry
        • About instrumentations
        • AWS NodeJS Instrumentation
        • Manual Instrumentation
          • Prerequisites
          • Tracer and span mappings
          • Relations between components
          • Span health state
          • Merging components
          • Code examples
      • 💠ServiceNow
      • 💠Slack
      • 💠Splunk
        • Splunk
        • Splunk Events
        • Splunk Health
        • Splunk Metrics
        • Splunk Topology
      • 💠VMWare vSphere
      • Apache Tomcat
      • Azure
      • Cloudera
      • Custom Synchronization
      • DotNet APM
      • Elasticsearch
      • Humio
      • Java APM
      • JMX
      • Logz.io
      • MySQL
      • Nagios
      • OpenMetrics
      • PostgreSQL
      • Prometheus
      • SAP
      • SCOM
      • SolarWinds
      • Static Health
      • Static Topology
      • Traefik
      • WMI
      • Zabbix
    • Develop your own StackPacks
  • 🔧Configure
    • Topology
      • Component actions
      • Identifiers
      • Topology naming guide
      • Topology sources
      • Create a topology manually
      • Configure topology synchronizations
      • Enable email event notifications
      • Send topology data over HTTP
      • Set the topology filtering limit
      • Use a proxy for event handlers
      • Use tags
      • Tune topology synchronization
      • Debug topology synchronization
    • Telemetry
      • Add telemetry during topology synchronization
      • Data sources
        • Elasticsearch
        • Prometheus mirror
      • Send events over HTTP
      • Send metrics data over HTTP
      • Set the default telemetry interval
      • Debug telemetry synchronization
    • Traces
      • Set up traces
      • Advanced configuration for traces
    • Health
      • Health synchronization
      • Send health data over HTTP
        • Send health data
        • Repeat Snapshots JSON
        • Repeat States JSON
        • Transactional Increments JSON
      • Debug health synchronization
    • Anomaly Detection
      • Export anomaly feedback
      • Scale the AAD up and down
      • The AAD status UI
    • Security
      • Authentication
        • Authentication options
        • File based
        • LDAP
        • Open ID Connect (OIDC)
        • KeyCloak
        • Service tokens
      • RBAC
        • Role-based Access Control
        • Permissions
        • Roles
        • Scopes
        • Subjects
      • Secrets management
      • Self-signed certificates
      • Set up a security backend for Linux
      • Set up a security backend for Windows
    • Logging
      • Kubernetes logs
      • Linux logs
      • Enable logging for functions
  • 📖Develop
    • Developer guides
      • Agent checks
        • About Agent checks
        • Agent check API
        • Agent check state
        • How to develop Agent checks
        • Connect an Agent check to StackState
      • Custom functions and scripts
        • StackState functions
        • Check functions
        • Component actions
        • Event handler functions
        • ID extractor functions
        • Mapping functions
        • Monitor functions
        • Propagation functions
        • Template functions
        • View health state configuration functions
      • Custom Synchronization StackPack
        • About the Custom Synchronization StackPack
        • How to customize elements created by the Custom Synchronization StackPack
        • How to configure a custom synchronization
      • Integrate external services
      • Mirroring Telemetry
      • Monitors
        • Create monitors
        • Monitor STJ file format
      • StackPack development
        • How to create a StackPack
        • Packaging
        • How to get a template file
        • How to make a multi-instance StackPack
        • Prepare a multi-instance provisioning script
        • Upload a StackPack file
        • Prepare a shared template
        • Customize a StackPack
        • Prepare instance template files
        • Prepare a StackPack provisioning script
        • Resources in a StackPack
        • StackState Common Layer
      • Synchronizations and templated files
    • Reference
      • StackState OpenAPI docs
      • StackState Template JSON (STJ)
        • Using STJ
        • Template functions
      • StackState Markup Language (STML)
        • Using STML
        • STML Tags
      • StackState Query Language (STQL)
      • StackState Scripting Language (STSL)
        • Scripting in StackState
        • Script result: Async
        • Script result: Streaming
        • Time in scripts
        • Script APIs
          • Async - script API
          • Component - script API
          • HTTP - script API
          • Prediction - script API
          • StackPack - script API
          • Telemetry - script API
          • Time - script API
          • Topology - script API
          • UI - script API
          • View - script API
    • Tutorials
      • Create a simple StackPack
      • Push data to StackState from an external system
      • Send events to StackState from an external system
      • Set up a mirror to pull telemetry data from an external system
Powered by GitBook
LogoLogo

Legal notices

  • Privacy
  • Cookies
  • Responsible disclosure
  • SOC 2/SOC 3
On this page
  • Overview
  • Add or edit a component action
  • STQL query
  • Script
  • Identifier
  • Example scripts
  • Show a topology query
  • Navigate the user to an external URL
  • Navigate the user to an external URL using time context
  • Make HTTP requests
  • See also
  1. Develop
  2. Developer guides
  3. Custom functions and scripts

Component actions

StackState Self-hosted v5.1.x

PreviousCheck functionsNextEvent handler functions

Last updated 2 years ago

Overview

This how-to describes the steps to create a that's available for specific components. Component actions can be executed from the component context menu in the StackState UI Topology Perspective or the right panel details tab when detailed information about a component has been selected - Component details.

Add or edit a component action

The component actions available in StackState can be managed in the StackState UI from the page Settings > Actions > Component Actions.

  • To add a new component action, click the ADD COMPONENT ACTION button.

  • To edit an existing component action, click the ... menu to the right of its description and select Edit.

Each component action includes the following details:

  • Name - The name displayed to users in the StackState UI when the component action is available for a component. The component action name is case-sensitive.

  • Description - The text shown in the tooltip when a user hovers over the component action name in the StackState UI.

STQL query

The STQL query specified in a component action determines which components of the topology will be able to use this component action. This should be an advanced topology query that returns all of the components that should have access to this specific component action. For example, to bind a component action to all components in the "Production" domain that are present in the "databases" layer, you would use the STQL query:

(domain IN ("Production") AND layer IN ("databases"))

Script

Component action scripts always have access to a component variable, this represents the component for which the component action was invoked.

The properties in the table below can be accessed directly in the component action script:

Property
Type
Returns

component.id

Long

The StackGraph ID of the component.

component.lastUpdateTimestamp

Long

The timestamp when the component was last updated.

component.name

String

The name of the component.

component.description

Option[String]

The description of the component.

component.labels

Set[Label]

Set of labels, each containing a name property.

component.state.healthState

HealthStateValue

The health state of the component. Can be UNKNOWN, CLEAR, DEVIATING or CRITICAL.

component.state.propagatedHealthState

HealthStateValue

The propagated health state of the component. Can be UNKNOWN, CLEAR, DEVIATING or CRITICAL.

component.layer

Long

The StackGraph ID of the layer that the component is in.

component.domain

Long

The StackGraph ID of the domain that the component is in.

component.environments

Set[Long]

The StackGraph IDs of all environments that the component is in.

Other variables accessible from the script are the following:

  • telemetryTimeEnd: Instant - is a telemetry interval end. For live mode the variable value is null.

Identifier

urn:stackpack:{stackpack-name}:component-action:{component-action-name}

Example scripts

Show a topology query

The component action script below will direct the StackState UI to open a new topology query:

def componentId = component.id.longValue()
UI.showTopologyByQuery("withNeighborsOf(direction = 'both', components = (id = '${componentId}'), levels = '15') and label = 'stackpack:openshift'")

Navigate the user to an external URL

The component action script below will direct the StackState UI to navigate to a specific URL:

def region = (component.labels.find {it -> it.name.startsWith("region") }).name.split(':')[1]
def url = "https://${region}.console.aws.amazon.com/ec2/home?region=${region}#Instances:sort=instanceId"

UI.redirectToURL(url)

Navigate the user to an external URL using time context

The component action script below will direct the StackState UI to navigate to an external monitoring system at point of time:

def asEpoch(time) {
  time != null ? Time.epochMs(time) : null
}

def dashboardURL = "https://grafana.my-organization.com/dashboard"
def params = [
    ["from", asEpoch(telemetryTimeStart)],
    ["to", asEpoch(telemetryTimeEnd)]
]
def queryParams = params.findAll { it -> it[1] != null }.collect { it -> it.join("=")}.join("&")

UI.redirectToURL("${dashboardURL}?${queryParams}")

Make HTTP requests

The component action script below will invoke an HTTP request to a remote URL. This call is made from the StackState server:

Http.post("https://postman-echo.com/post")
    .timeout("30s")
.jsonResponse()

See also

STQL Query - An advanced topology query that returns all components for which this component action should be available. For details, see the section below.

Script - A script written in StackState Scripting Language that's run whenever the component action is executed in the StackState UI. For details, see the section and the below.

Identifier - Optional. A unique identifier for the component action. For details, see the section below.

You can find more information about writing advanced topology queries in StackState on the page .

The script determines behavior of the component action when it's executed by a user. YOu can use the to script almost any action you need, such as redirecting a user to another view with a specific context, restarting remote components, or calling predictions for components. Some are available below to help you get started.

Other properties of the component can be accessed using the .

topologyTime: Instant - is a of the timeline. For the variable value is null.

telemetryTimeStart: Instant - is a start. This variable always have a value.

For more details for time usage in scripts see .

Providing an identifier is optional, but is necessary when you want to store your component action in a StackPack. A valid for a component action is a URN that follows the convention:

📖
using STQL
component script API
script API documentation
identifier
StackState Query Language (STQL)
Scripting in StackState
Component script API
STQL Query
script
example scripts
identifier
StackState Scripting Language
example scripts
component action
topology time
live mode
telemetry interval
Component Actions