Migrating Objects or Data Between Tanzu Observability Environments

There are occasions when it is necessary to migrate objects or data between Tanzu Observability environments. This KB covers the steps for migrating various types of objects or data. Generally, if there are not too many objects to transfer, things can be done manually. However, it is possible to do things through the API, as well.

Key terms used through this article:

  • source = Tanzu Observability environment in which the object currently resides
  • destination = Tanzu Observability environment to migrate data into

All of the steps described for migrating objects are for migrating a single object. 

Contents

Dashboards

Manual Approach

  • Log into the source Tanzu Observability environment.
    mceclip2.png

  • Open your dashboard in the source environment and go into edit mode:
    mceclip0.png

  • Open up the JSON for the dashboard by clicking on JSON:
    mceclip33.png

  • Switch from Tree to Code view:
    mceclip35.png

  • Copy the entire JSON data.
    mceclip13.png

  • Log into the destination Tanzu Observability environment.
    mceclip1.png

  • From the Dashboard dropdown, select Create Dashboard:
    mceclip2.png

  • Open up the JSON for the dashboard by clicking on JSON.
    mceclip34.png

  • Switch to Code view.
    mceclip36.png

  • Paste in the JSON you copied earlier.
    mceclip14.png
    Note
    : if you want to change the URL/id of the dashboard, update the id and/or url fields in the JSON before completing the POST request. This is the only time that you'll be able to change those values.
    mceclip15.png

  • Click ACCEPT.
    mceclip37.png

  • Save. You've successfully migrated the dashboard over.
    mceclip38.png

 

Using the API

The documentation for the relevant API endpoints are the following (replace <cluster> with your actual Tanzu Observability cluster name):

https://<cluster>.wavefront.com/api-docs/ui/#!/Dashboard/getDashboard
https://<cluster>.wavefront.com/api-docs/ui/#!/Dashboard/createDashboard

  • Make a GET request to the /api/v2/dashboard/{id} endpoint to obtain the dashboard JSON. When making the API call, make sure you are pointing to the source Tanzu Observability environment URL and using the API token for the source environment. The id of the dashboard can be extracted from the link to the dashboard: https://<cluster>.wavefront.com/dashboards/<id>#. You can also find the id of the dashboard in the Dashboard Browser. Under the name of the dashboard will be a URL field. That is the dashboard id:
    mceclip4.png

  • Copy the response field of the output. This contains the dashboard JSON.
    mceclip0.png

  • Make a POST request to the /api/v2/dashboard endpoint and provide the JSON obtained in the previous step as the payload. Make sure you are pointing to the destination Tanzu Observability environment URL and using the API token for the destination environment. Once this request completes, the migration is complete.
    Note: if you want to change the URL/id of the dashboard, update the id and url fields in the JSON before completing the POST request. This is the only time that you'll be able to change those values.
    Screen_Shot_2021-01-14_at_11.17.50_AM.png

 

Alert Targets

Setting up alert targets in the destination environment first will make transferring alerts over a little easier.

Manual Approach

  • Log into the source Tanzu Observability environment.
    mceclip2.png

  • Find the desired Alert Target with the Alert Target Browser:
    mceclip5.png

    mceclip18.png

  • In a separate window (perhaps, in private or incognito mode) or browser, log into the destination Tanzu Observability environment.
    mceclip2.png

  • Create a new Alert Target in the destination environment.
    mceclip19.png

  • Copy and paste each field from source to destination.
    mceclip22.png

Using the API

The documentation for the relevant API endpoints are the following (replace <cluster> with your actual Tanzu Observability cluster name):
https://<cluster>.wavefront.com/api-docs/ui/#!/Notificant/getNotificant
https://<cluster>.wavefront.com/api-docs/ui/#!/Notificant/createNotificant

  • Log into the source Tanzu Observability environment.
    mceclip2.png

  • Find the desired Alert Target with the Alert Target Browser:
    mceclip5.png

  • Copy the ID listed underneath the Alert Target name:
    mceclip6.png
  • Make a GET request to the /api/v2/notificant/{id} endpoint. The id is the one obtained in the previous step. Make sure you are pointing to the source Tanzu Observability environment URL and using the API token associated with the source Tanzu Observability environment.
    mceclip1.png

  • Copy the resulting response object. Remove these fields: “id”, “customerId”, “createrId”, “updaterId “, “createdEpochMillis”, “updatedEpochMillis” fields. These fields are auto-generated upon creation and do not be included.
    mceclip3.png

  • Make a POST request to the /api/v2/notificant endpoint. Make sure you are pointing to the destination Tanzu Observability environment URL and using the API token associated with the destination Tanzu Observability environment. The JSON body is the updated response object from the previous step. Once this request completes, the migration is complete.
    mceclip2.png

 

Alerts

Manual Approach

  • Log into the source Tanzu Observability environment.
    mceclip2.png

  • Open up the desired Alert.
    mceclip5.png

  • In a separate window (perhaps, in private or incognito mode) or browser, log into the destination Tanzu Observability environment.
    mceclip2.png

  • Create a new Alert in the destination environment.
    mceclip4.png

  • Copy and paste each field from source to destination. For Alert Targets in the Target List, you should be able to select the relevant one(s) by name. If the Alert Target names are not appearing in the dropdown, make sure they have been migrated over. See the Alert Targets section above for migration steps.
    mceclip23.png

  • Save
    mceclip6.png

 

Using the API

The documentation for the relevant API endpoints are the following (replace <cluster> with your actual Tanzu Observability cluster name):

https://<cluster>.wavefront.com/api-docs/ui/#!/Alert/getAlert
https://<cluster>.wavefront.com/api-docs/ui/#!/Alert/createAlert

  • Log into the source Tanzu Observability environment.
    mceclip2.png

  • Find the desired Alert with the Alert Browser.mceclip5.png

  • Copy the ID listed underneath the Alert name and description:
    mceclip32.png

  • Make a GET request to the /api/v2/alert/{id} endpoint using the id you just obtained in the previous step. Make sure you are pointing to the source Tanzu Observability environment URL and using the API token associated with the source Tanzu Observability environment.
    mceclip7.png

  • Copy the resulting response object. The only fields you need to keep (if present) are: “name”, “condition(s)”, “displayExpression”, “minutes”, “resolveAfterMinutes”, “severity”, “additionalInformation”, "target", and “tags”.
    mceclip8.png

  • Make a POST request to the /api/v2/notificant endpoint. Make sure you are pointing to the destination Tanzu Observability environment URL and using the API token associated with the destination Tanzu Observability environment. The JSON body is the modified response object from the previous step.
    mceclip20.png

  • Once that is complete, open up the newly created Alert. If custom alert targets are used, add in the appropriate Alert Target(s) in the Target List (the reason we need to do this is because Alert Targets are specified based on ID and the ID is auto-generated upon creation. Therefore, the ID specified in the JSON payload is valid only in the destination environment and will not apply in the source environment). 
    mceclip10.png

 

Derived Metrics

Manual Approach

  • Log into the source Tanzu Observability environment.
    mceclip2.png

  • Find and open up the desired Derived Metric.
    mceclip21.png

    mceclip25.png


  • In a separate window (perhaps, in private or incognito mode) or browser, log into the destination Tanzu Observability environment.
    mceclip2.png

  • Create a new Derived Metric in the destination environment.
    mceclip24.png

  • Copy and paste each field from source to destination. 
    blobid0.png

  • Save
    mceclip31.png

Using the API

The documentation for the relevant API endpoints are the following (replace <cluster> with your actual Tanzu Observability cluster name):

https://<cluster>.wavefront.com/api-docs/ui/#!/Derived_Metric/getDerivedMetric
https://<cluster>.wavefront.com/api-docs/ui/#!/Derived_Metric/createDerivedMetric

  • Log into the source Tanzu Observability environment.
    mceclip2.png

  • Find the desired Derived Metric with the Derived Metric Browser.
    mceclip21.png

    mceclip25.png

  • Copy the ID listed underneath the Alert name and description:
    mceclip9.png

  • Make a GET request to the /api/v2/derivedmetric/{id} endpoint using the id you just obtained in the previous step. Make sure you are pointing to the source Tanzu Observability environment URL and using the API token associated with the source Tanzu Observability environment.
    mceclip26.png

  • Copy the resulting response object. The only fields you need to keep (if present) are: “name”, “minutes”, “query”, “additionalInformation”, “tags”, and “processRateMinutes”.
    mceclip27.png

  • Make a POST request to the /api/v2/derivedmetric endpoint. Make sure you are pointing to the destination Tanzu Observability environment URL and using the API token associated with the destination Tanzu Observability environment. The JSON body is the modified response object from the previous step. Once this request completes, the migration is complete.
    mceclip30.png

    mceclip29.png

 

Historical Data (metrics, histograms, counters)

Unless you already have historical data stored elsewhere, the general way to migrate historical data is to use the API to pull out the data from the source environment and then ingest it into the destination environment.

 

Using the API

The documentation for the API endpoints to use can be found here:

https://<cluster>.wavefront.com/api-docs/ui/#!/Query/queryApi

 

  • (skip if you already have the historical data)
    In the source environment, determine the appropriate query and time window that returns the data you are interested in migrating. If some of this data has not been ingested at any time over the last 4 weeks, make sure to enable Include Obsolete Metrics in the chart's Advanced settings.
    NOTE: If there is too much data, you may need to "shard" the data through multiple queries. For example, you may need to query for certain collections of sources separately.

  • (skip if you already have the historical data)
    Once the query and time window has been determined, make a GET request to the /api/v2/chart/api endpoint. Make sure to set:
      • g=granularity of the underlying data
      • set i=false
      • struct=true
      • includeObsoleteMetrics=true (only if you needed to enable this in the chart)
      • view=HISTOGRAM (only if you are running a hs query for histograms)

        mceclip0.png
        mceclip1.png

        mceclip2.png
  • (skip if you already have the historical data formatted properly)
    The data points are in the timeseries field of the response object. This step involves creating a script to format this data into the appropriate Tanzu Observability Data Format for metrics/counters or histograms. You can have each data point be its own line in a text file. Ensure each line is newline delimited.

  • Ingest the resulting file to the destination environment by sending the file to a Tanzu Observability Proxy that is pointing to the destination environment. Once the Proxy has successfully sent the data to the backend, the migration is complete.

    If you have both metric and histogram data and you are using a Proxy version newer than 6.4, both metrics and histograms in distribution data format can be sent to Tanzu Observability listener port (pushListenerPorts, typically 2878). If your histogram data is not in distribution data format and you are intending to have the Proxy compute distributions for you from the raw data, make sure that the histogram data is stored separately from metric data because you will need to send the raw histogram data to a different Proxy port.

    There are various ways to send the data points in the file to the Tanzu Observability Proxy:
      • Using netcat:
        cat file.txt | nc proxy-address proxy-port
      • Using HTTP POST:
        cat file.txt | curl -F file=@- http://proxy-address:proxy-port/report
      • Using a script that parses through each data point of the file and sends it to the Proxy.

 

Historical Traces

This process for exporting and importing traces is covered on this page. At a high level, query for the applicable traces in the Trace Browser. After the appropriate query and time window has been determined, you can either use the UI or the API to export the resulting traces from the source environment as a JSON file. Import the traces in the destination environment through the UI.

 

 

Was this article helpful?
0 out of 0 found this helpful
Have more questions? Submit a request

Comments

Powered by Zendesk