Making your Instana dashboards publicly shareable

Making your dashboards publicly shareable enhances collaboration within the Instana community. By defining, parameterizing, and packaging dashboards into reusable integration packages, users can publish and share their observability solutions effectively. Instana CLI for integration package management simplifies this process by generating package skeletons and assisting with publishing.

Defining your own shareable dashboard

Creating a custom dashboard

In order to make your dashboard publicly shareable, you need to define the dashboard first. This can be done by leveraging the Instana custom dashboard feature. For more information on how to build custom dashboards, please refer to Building custom dashboards.

Once you have your dashboard ready, you can select the Edit as JSON menu item from the dropdown on the top-right corner, then copy the dashboard definition content in the Edit Dashboard dialog, and save as a local file for further processing.

Parameterizing your dashboard

When defining a dashboard, you may have some parameters that can only be determined at runtime, such as the service name or service instance id. In order to make the dashboard reusable for other people, you can introduce placeholders to parameterize your dashboard. Using placeholders enhances the flexibility and adaptability of dashboards, making them suitable for a variety of environments and use cases. For example:

"tagFilterExpression": {
    "name": "service.name",
    "value": "{{ service.name }}"
}

This approach allows users to specify actual values for these placeholders during dashboard import. For instance, a user can import the same dashboard multiple times, each with a different service.name value:

$ stanctl-integration import --package @instana-integration/go \
  --server $INSTANA_SERVER \
  --token $API_TOKEN \
  --set service.name=my-instance-1

$ stanctl-integration import --package @instana-integration/go \
  --server $INSTANA_SERVER \
  --token $API_TOKEN \
  --set service.name=my-instance-2

Access rules

By default, the custom dashboard that you created is private, which means it is only visible to you. To make your dashboard publicly shareable, it is required to make it public, which means this dashboard is visible to everyone in your organization. To make the change, you can update the access rules in the dashboard definition. Locate the accessRules field, remove any private rules, then add a public rule as below:

"accessRules": [
    {
      "accessType": "READ",
      "relationType": "GLOBAL"
    }
]

Publishing your dashboard

Packaging your dashboard

The Instana CLI for integration package management provides an init command to streamline the package initialization process for you. It guides you through a series of questions to gather the necessary information based on your responses. Then, it generates the package directory structure, including subdirectories, along with a package.json and README.md file, providing a skeleton for your new integration package. To run the init command:

$ stanctl-integration init

The following sample input is for a package released by IBM:

? Enter integration package name: (e.g.: @instana-integration/nodejs, my-awesome-xyz-integration):  @instana-integration/go
? Enter integration package version:  1.0.0
? Enter integration package description:  The integration package is used to support Go monitoring. Once you import this package into your Instana environment, you will be able to monitor Go runtime and the applications on various aspects by checking the dashboards, alerts, etc. included in this integration package.
? Enter integration package keywords (comma-separated):  ibm,instana,custom dashboard,opentelemetry,go,monitoring
? Enter integration package author:  IBM
? Enter integration package license:  MIT
? Select the types of integration to be included in the package: dashboards

After you finish answering all the questions, the CLI generates the following directory structure, including package.json, README.md, and an empty dashboards subdirectory where you can put your dashboard definition files:

$ tree @instana-integration
@instana-integration
└── go
    ├── README.md
    ├── dashboards
    └── package.json

3 directories, 2 files

Publishing a package

After you create your package skeleton either manually or with the preceding CLI commands, you can put your dashboard definition files in the dashboards directory. After they are ready to be publicly shareable, you can publish the package to the central registry so that other people can explore, download, and import it. To make it simple, the Instana CLI for integration package management also provides a command publish to help users publish their packages.

To publish the package by using the CLI, you must specify the package name or the path to the package, the registry username, and email. If the package belongs to an organization, then the package name must be prefixed with the organization name. The registry username and email are the information that you can collect when you sign up to the central registry, for example, https://www.npmjs.com/. They are required when the CLI logs in to the central registry before it can publish the package. See the following example:

$ stanctl-integration publish --package @instana-integration/go \
  --registry-username <your_username> --registry-email <your_email>

If it is your first time to run the publish command, it brings you to the web browser and asks for your log-in to the central registry.

Importing from a local package

Sometimes you might want to keep your integration package locally for testing. The CLI also supports a --package option that allows you to specify a path to the package. This is useful when you want to validate your package locally without publishing it.

For example, you can prepare your integration package in a local directory and use the following command to import it:

$ stanctl-integration import --package path/to/your/package \
  --server $INSTANA_SERVER \
  --token $API_TOKEN