@pulumiverse/grafana
Version:
A Pulumi package for creating and managing grafana.
368 lines (367 loc) • 11.8 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
/**
* A job defines the queries and model parameters for a machine learning task.
*
* See [the Grafana Cloud docs](https://grafana.com/docs/grafana-cloud/alerting-and-irm/machine-learning/dynamic-alerting/forecasting/config/) for more information
* on available hyperparameters for use in the `hyperParams` field.
*
* ## Example Usage
*
* ### Basic Forecast
*
* This forecast uses a Prometheus datasource, where the source query is defined in the `expr` field of the `queryParams` attribute.
*
* Other datasources are supported, but the structure `queryParams` may differ.
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as grafana from "@pulumiverse/grafana";
*
* const foo = new grafana.oss.DataSource("foo", {
* type: "prometheus",
* name: "prometheus-ds-test",
* uid: "prometheus-ds-test-uid",
* url: "https://my-instance.com",
* basicAuthEnabled: true,
* basicAuthUsername: "username",
* jsonDataEncoded: JSON.stringify({
* httpMethod: "POST",
* prometheusType: "Mimir",
* prometheusVersion: "2.4.0",
* }),
* secureJsonDataEncoded: JSON.stringify({
* basicAuthPassword: "password",
* }),
* });
* const testJob = new grafana.machinelearning.Job("test_job", {
* name: "Test Job",
* metric: "tf_test_job",
* datasourceType: "prometheus",
* datasourceUid: foo.uid,
* queryParams: {
* expr: "grafanacloud_grafana_instance_active_user_count",
* },
* });
* ```
*
* ### Tuned Forecast
*
* This forecast has tuned hyperparameters to improve the accuracy of the model.
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as grafana from "@pulumiverse/grafana";
*
* const foo = new grafana.oss.DataSource("foo", {
* type: "prometheus",
* name: "prometheus-ds-test",
* uid: "prometheus-ds-test-uid",
* url: "https://my-instance.com",
* basicAuthEnabled: true,
* basicAuthUsername: "username",
* jsonDataEncoded: JSON.stringify({
* httpMethod: "POST",
* prometheusType: "Mimir",
* prometheusVersion: "2.4.0",
* }),
* secureJsonDataEncoded: JSON.stringify({
* basicAuthPassword: "password",
* }),
* });
* const testJob = new grafana.machinelearning.Job("test_job", {
* name: "Test Job",
* metric: "tf_test_job",
* datasourceType: "prometheus",
* datasourceUid: foo.uid,
* queryParams: {
* expr: "grafanacloud_grafana_instance_active_user_count",
* },
* hyperParams: {
* daily_seasonality: "15",
* weekly_seasonality: "10",
* },
* customLabels: {
* example_label: "example_value",
* },
* });
* ```
*
* ### Rescaled Forecast
*
* This forecast has had the data transformed using a power transformation in order to avoid negative lower predictions.
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as grafana from "@pulumiverse/grafana";
*
* const foo = new grafana.oss.DataSource("foo", {
* type: "prometheus",
* name: "prometheus-ds-test",
* uid: "prometheus-ds-test-uid",
* url: "https://my-instance.com",
* basicAuthEnabled: true,
* basicAuthUsername: "username",
* jsonDataEncoded: JSON.stringify({
* httpMethod: "POST",
* prometheusType: "Mimir",
* prometheusVersion: "2.4.0",
* }),
* secureJsonDataEncoded: JSON.stringify({
* basicAuthPassword: "password",
* }),
* });
* const testJob = new grafana.machinelearning.Job("test_job", {
* name: "Test Job",
* metric: "tf_test_job",
* datasourceType: "prometheus",
* datasourceUid: foo.uid,
* queryParams: {
* expr: "grafanacloud_grafana_instance_active_user_count",
* },
* hyperParams: {
* transformation_id: "power",
* },
* });
* ```
*
* ### Forecast with Holidays
*
* This forecast has holidays which will be taken into account when training the model.
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as grafana from "@pulumiverse/grafana";
*
* const foo = new grafana.oss.DataSource("foo", {
* type: "prometheus",
* name: "prometheus-ds-test",
* uid: "prometheus-ds-test-uid",
* url: "https://my-instance.com",
* basicAuthEnabled: true,
* basicAuthUsername: "username",
* jsonDataEncoded: JSON.stringify({
* httpMethod: "POST",
* prometheusType: "Mimir",
* prometheusVersion: "2.4.0",
* }),
* secureJsonDataEncoded: JSON.stringify({
* basicAuthPassword: "password",
* }),
* });
* const testHoliday = new grafana.machinelearning.Holiday("test_holiday", {
* name: "Test Holiday",
* customPeriods: [{
* name: "First of January",
* startTime: "2023-01-01T00:00:00Z",
* endTime: "2023-01-02T00:00:00Z",
* }],
* });
* const testJob = new grafana.machinelearning.Job("test_job", {
* name: "Test Job",
* metric: "tf_test_job",
* datasourceType: "prometheus",
* datasourceUid: foo.uid,
* queryParams: {
* expr: "grafanacloud_grafana_instance_active_user_count",
* },
* holidays: [testHoliday.id],
* });
* ```
*
* ## Import
*
* ```sh
* $ pulumi import grafana:machineLearning/job:Job name "{{ id }}"
* ```
*/
export declare class Job extends pulumi.CustomResource {
/**
* Get an existing Job resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name: string, id: pulumi.Input<pulumi.ID>, state?: JobState, opts?: pulumi.CustomResourceOptions): Job;
/**
* Returns true if the given object is an instance of Job. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj: any): obj is Job;
/**
* An object representing the custom labels added on the forecast.
*/
readonly customLabels: pulumi.Output<{
[key: string]: string;
} | undefined>;
/**
* The type of datasource being queried. Currently allowed values are prometheus, graphite, loki, postgres, and datadog.
*/
readonly datasourceType: pulumi.Output<string>;
/**
* The uid of the datasource to query.
*/
readonly datasourceUid: pulumi.Output<string>;
/**
* A description of the job.
*/
readonly description: pulumi.Output<string | undefined>;
/**
* A list of holiday IDs or names to take into account when training the model.
*/
readonly holidays: pulumi.Output<string[] | undefined>;
/**
* The hyperparameters used to fine tune the algorithm. See
* https://grafana.com/docs/grafana-cloud/alerting-and-irm/machine-learning/forecasts/models/ for the full list of
* available hyperparameters.
*/
readonly hyperParams: pulumi.Output<{
[key: string]: string;
} | undefined>;
/**
* The data interval in seconds to train the data on.
*/
readonly interval: pulumi.Output<number | undefined>;
/**
* The metric used to query the job results.
*/
readonly metric: pulumi.Output<string>;
/**
* The name of the job.
*/
readonly name: pulumi.Output<string>;
/**
* An object representing the query params to query Grafana with.
*/
readonly queryParams: pulumi.Output<{
[key: string]: string;
}>;
/**
* The data interval in seconds to train the data on.
*/
readonly trainingWindow: pulumi.Output<number | undefined>;
/**
* Create a Job resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: JobArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering Job resources.
*/
export interface JobState {
/**
* An object representing the custom labels added on the forecast.
*/
customLabels?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* The type of datasource being queried. Currently allowed values are prometheus, graphite, loki, postgres, and datadog.
*/
datasourceType?: pulumi.Input<string>;
/**
* The uid of the datasource to query.
*/
datasourceUid?: pulumi.Input<string>;
/**
* A description of the job.
*/
description?: pulumi.Input<string>;
/**
* A list of holiday IDs or names to take into account when training the model.
*/
holidays?: pulumi.Input<pulumi.Input<string>[]>;
/**
* The hyperparameters used to fine tune the algorithm. See
* https://grafana.com/docs/grafana-cloud/alerting-and-irm/machine-learning/forecasts/models/ for the full list of
* available hyperparameters.
*/
hyperParams?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* The data interval in seconds to train the data on.
*/
interval?: pulumi.Input<number>;
/**
* The metric used to query the job results.
*/
metric?: pulumi.Input<string>;
/**
* The name of the job.
*/
name?: pulumi.Input<string>;
/**
* An object representing the query params to query Grafana with.
*/
queryParams?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* The data interval in seconds to train the data on.
*/
trainingWindow?: pulumi.Input<number>;
}
/**
* The set of arguments for constructing a Job resource.
*/
export interface JobArgs {
/**
* An object representing the custom labels added on the forecast.
*/
customLabels?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* The type of datasource being queried. Currently allowed values are prometheus, graphite, loki, postgres, and datadog.
*/
datasourceType: pulumi.Input<string>;
/**
* The uid of the datasource to query.
*/
datasourceUid: pulumi.Input<string>;
/**
* A description of the job.
*/
description?: pulumi.Input<string>;
/**
* A list of holiday IDs or names to take into account when training the model.
*/
holidays?: pulumi.Input<pulumi.Input<string>[]>;
/**
* The hyperparameters used to fine tune the algorithm. See
* https://grafana.com/docs/grafana-cloud/alerting-and-irm/machine-learning/forecasts/models/ for the full list of
* available hyperparameters.
*/
hyperParams?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* The data interval in seconds to train the data on.
*/
interval?: pulumi.Input<number>;
/**
* The metric used to query the job results.
*/
metric: pulumi.Input<string>;
/**
* The name of the job.
*/
name?: pulumi.Input<string>;
/**
* An object representing the query params to query Grafana with.
*/
queryParams: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* The data interval in seconds to train the data on.
*/
trainingWindow?: pulumi.Input<number>;
}