Categorygithub.com/turbinelabs/go-datadog-api
modulepackage
2.10.0+incompatible
Repository: https://github.com/turbinelabs/go-datadog-api.git
Documentation: pkg.go.dev

# README

GoDoc License Build
status Go Report Card

Datadog API in Go

This is the v2.0 version of the API, and has breaking changes. Use the v1.0 branch if you need legacy code to be supported.

A Go wrapper for the Datadog API. Use this library if you need to interact with the Datadog system. You can post metrics with it if you want, but this library is probably mostly used for automating dashboards/alerting and retrieving data (events, etc).

The source API documentation is here: http://docs.datadoghq.com/api/

Installation

To use the default branch, include it in your code like:

    import "github.com/zorkian/go-datadog-api"

Or, if you need to control which version to use, import using gopkg.in. Like so:

    import "gopkg.in/zorkian/go-datadog-api.v2"

Using go get:

go get gopkg.in/zorkian/go-datadog-api.v2

USAGE

This library uses pointers to be able to verify if values are set or not (vs the default value for the type). Like protobuf there are helpers to enhance the API. You can decide to not use them, but you'll have to be careful handling nil pointers.

Using the client:

    client := datadog.NewClient("api key", "application key")

    dash, err := client.GetDashboard(*datadog.Int(10880))
    if err != nil {
        log.Fatalf("fatal: %s\n", err)
    }
    
    log.Printf("dashboard %d: %s\n", dash.GetId(), dash.GetTitle())

An example using datadog.String(), which allocates a pointer for you:

	m := datadog.Monitor{
		Name: datadog.String("Monitor other things"),
		Creator: &datadog.Creator{
			Name: datadog.String("Joe Creator"),
		},
	}

An example using the SetXx, HasXx, GetXx and GetXxOk accessors:

	m := datadog.Monitor{}
	m.SetName("Monitor all the things")
	m.SetMessage("Electromagnetic energy loss")

	// Use HasMessage(), to verify we have interest in the message.
	// Using GetMessage() always safe as it returns the actual or, if never set, default value for that type.
	if m.HasMessage() {
		fmt.Printf("Found message %s\n", m.GetMessage())
	}

	// Alternatively, use GetMessageOk(), it returns a tuple with the (default) value and a boolean expressing
	// if it was set at all:
	if v, ok := m.GetMessageOk(); ok {
		fmt.Printf("Found message %s\n", v)
	}

Check out the Godoc link for the available API methods and, if you can't find the one you need, let us know (or patches welcome)!

DOCUMENTATION

Please see: https://godoc.org/gopkg.in/zorkian/go-datadog-api.v2

BUGS/PROBLEMS/CONTRIBUTING

There are certainly some, but presently no known major bugs. If you do find something that doesn't work as expected, please file an issue on Github:

https://github.com/zorkian/go-datadog-api/issues

Thanks in advance! And, as always, patches welcome!

DEVELOPMENT

Running tests

  • Run tests tests with make test.
  • Integration tests can be run with make testacc. Run specific integration tests with make testacc TESTARGS='-run=TestCreateAndDeleteMonitor'

The acceptance tests require DATADOG_API_KEY and DATADOG_APP_KEY to be available in your environment variables.

Warning: the integrations tests will create and remove real resources in your Datadog account.

Regenerating code

Accessors HasXx, GetXx, GetOkXx and SetXx are generated for each struct field type type that contains pointers. When structs are updated a contributor has to regenerate these using go generate and commit these changes. Optionally there is a make target for the generation:

make generate

COPYRIGHT AND LICENSE

Please see the LICENSE file for the included license information.

Copyright 2013-2017 by authors and contributors.

# Packages

No description provided by the author

# Functions

Bool is a helper routine that allocates a new bool value to store v and returns a pointer to it.
GetBool is a helper routine that returns a boolean representing if a value was set, and if so, dereferences the pointer to it.
GetInt is a helper routine that returns a boolean representing if a value was set, and if so, dereferences the pointer to it.
GetJsonNumber is a helper routine that returns a boolean representing if a value was set, and if so, dereferences the pointer to it.
GetString is a helper routine that returns a boolean representing if a value was set, and if so, dereferences the pointer to it.
Int is a helper routine that allocates a new int value to store v and returns a pointer to it.
JsonNumber is a helper routine that allocates a new string value to store v and returns a pointer to it.
NewClient returns a new datadog.Client which can be used to access the API methods.
String is a helper routine that allocates a new string value to store v and returns a pointer to it.

# Constants

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

Alert represents the data of an alert: a query that can fire and send a message to the users.
No description provided by the author
No description provided by the author
No description provided by the author
ChannelSlackRequest defines the Channels struct that is part of the IntegrationSlackRequest.
No description provided by the author
No description provided by the author
Client is the object that handles talking to the Datadog API.
Comment is a special form of event that appears in a stream.
No description provided by the author
Creator contains the creator of the monitor.
Dashboard represents a user created dashboard.
No description provided by the author
DashboardList represents a dashboard list.
DashboardListItem represents a single dashboard in a dashboard list.
DashboardLite represents a user created dashboard.
No description provided by the author
Event is a single event.
No description provided by the author
No description provided by the author
No description provided by the author
Graph represents a graph that might exist on a dashboard.
No description provided by the author
No description provided by the author
GraphDefinitionRequest represents the requests passed into each graph.
GraphDefinitionRequestStyle represents the graph style attributes.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
IntegrationPDRequest defines the request payload for creating & updating Datadog-PagerDuty integration.
IntegrationSlackRequest defines the request payload for creating & updating Datadog-Slack integration.
Metric represents a collection of data points that we might send or receive on one single metric line.
MetricMetadata allows you to edit fields of a metric's metadata.
Monitor allows watching a metric or check that you care about, notifying your team when some defined threshold is exceeded.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Screenboard represents a user created screenboard.
ScreenboardLite represents a user created screenboard.
No description provided by the author
Series represents a collection of data points we get when we query for timeseries data.
ServiceHookSlackRequest defines the ServiceHooks struct that is part of the IntegrationSlackRequest.
ServicePDRequest defines the Services struct that is part of the IntegrationPDRequest.
No description provided by the author
Template variable represents a template variable that might exist on a dashboard.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Unit represents a unit definition that we might receive when query for timeseries data.
No description provided by the author
type Widget struct {.
No description provided by the author

# Type aliases

DataPoint is a tuple of [UNIX timestamp, value].
No description provided by the author
No description provided by the author
TagMap is used to receive the format given to us by the API.
A Series is characterized by 2 units as: x per y One or both could be missing.