This commit is contained in:
Brian Ketelsen 2019-05-07 19:30:21 -04:00
Родитель 91c278ebf4
Коммит f61ba05c3b
18 изменённых файлов: 43 добавлений и 43 удалений

Просмотреть файл

@ -1,4 +1,4 @@
# How to Contribute # How to Contribute
If you're interested in contributing, take a look at the general [contributer's guide](https://github.com/Microsoft/ApplicationInsights-Home/blob/master/CONTRIBUTING.md) first. If you're interested in contributing, take a look at the general [contributer's guide](https://github.com/microsoft/ApplicationInsights-Home/blob/master/CONTRIBUTING.md) first.

Просмотреть файл

@ -1,6 +1,6 @@
# Microsoft Application Insights SDK for Go # Microsoft Application Insights SDK for Go
[![Build Status](https://travis-ci.org/Microsoft/ApplicationInsights-Go.svg?branch=master)](https://travis-ci.org/Microsoft/ApplicationInsights-Go) [![Documentation](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go?status.svg)](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights) [![Release](https://img.shields.io/github/release/Microsoft/ApplicationInsights-Go/all.svg)](https://github.com/Microsoft/ApplicationInsights-Go/releases) [![Build Status](https://travis-ci.org/Microsoft/ApplicationInsights-Go.svg?branch=master)](https://travis-ci.org/Microsoft/ApplicationInsights-Go) [![Documentation](https://godoc.org/github.com/microsoft/ApplicationInsights-Go?status.svg)](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights) [![Release](https://img.shields.io/github/release/Microsoft/ApplicationInsights-Go/all.svg)](https://github.com/microsoft/ApplicationInsights-Go/releases)
This project provides a Go SDK for Application Insights. This project provides a Go SDK for Application Insights.
[Application Insights](http://azure.microsoft.com/en-us/services/application-insights/) [Application Insights](http://azure.microsoft.com/en-us/services/application-insights/)
@ -25,26 +25,26 @@ some of the more mature SDK's. In particular, the gaps are:
Additionally, this is considered a community-supported SDK. Read more about Additionally, this is considered a community-supported SDK. Read more about
the status of this and other SDK's in the the status of this and other SDK's in the
[ApplicationInsights-Home](https://github.com/Microsoft/ApplicationInsights-Home) [ApplicationInsights-Home](https://github.com/microsoft/ApplicationInsights-Home)
repository. repository.
## Requirements ## Requirements
**Install** **Install**
``` ```
go get github.com/Microsoft/ApplicationInsights-Go/appinsights go get github.com/microsoft/ApplicationInsights-Go/appinsights
``` ```
**Get an instrumentation key** **Get an instrumentation key**
>**Note**: an instrumentation key is required before any data can be sent. Please see the "[Getting an Application Insights Instrumentation Key](https://github.com/Microsoft/AppInsights-Home/wiki#getting-an-application-insights-instrumentation-key)" section of the wiki for more information. To try the SDK without an instrumentation key, set the instrumentationKey config value to a non-empty string. >**Note**: an instrumentation key is required before any data can be sent. Please see the "[Getting an Application Insights Instrumentation Key](https://github.com/microsoft/AppInsights-Home/wiki#getting-an-application-insights-instrumentation-key)" section of the wiki for more information. To try the SDK without an instrumentation key, set the instrumentationKey config value to a non-empty string.
# Usage # Usage
## Setup ## Setup
To start tracking telemetry, you'll want to first initialize a To start tracking telemetry, you'll want to first initialize a
[telemetry client](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights#TelemetryClient). [telemetry client](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights#TelemetryClient).
```go ```go
import "github.com/Microsoft/ApplicationInsights-Go/appinsights" import "github.com/microsoft/ApplicationInsights-Go/appinsights"
func main() { func main() {
client := appinsights.NewTelemetryClient("<instrumentation key>") client := appinsights.NewTelemetryClient("<instrumentation key>")
@ -52,12 +52,12 @@ func main() {
``` ```
If you want more control over the client's behavior, you should initialize a If you want more control over the client's behavior, you should initialize a
new [TelemetryConfiguration](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights#TelemetryConfiguration) new [TelemetryConfiguration](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights#TelemetryConfiguration)
object and use it to create a client: object and use it to create a client:
```go ```go
import "time" import "time"
import "github.com/Microsoft/ApplicationInsights-Go/appinsights" import "github.com/microsoft/ApplicationInsights-Go/appinsights"
func main() { func main() {
telemetryConfig := appinsights.NewTelemetryConfiguration("<instrumentation key>") telemetryConfig := appinsights.NewTelemetryConfiguration("<instrumentation key>")
@ -80,7 +80,7 @@ it in your data model.
## Telemetry submission ## Telemetry submission
The [TelemetryClient](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights#TelemetryClient) The [TelemetryClient](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights#TelemetryClient)
itself has several methods for submitting telemetry: itself has several methods for submitting telemetry:
```go ```go
@ -132,7 +132,7 @@ then be submitted through the `TelemetryClient.Track` method, as illustrated
in the below sections: in the below sections:
### Trace ### Trace
[Trace telemetry items](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights#TraceTelemetry) [Trace telemetry items](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights#TraceTelemetry)
represent printf-like trace statements that can be text searched. They have represent printf-like trace statements that can be text searched. They have
an associated severity level, values for which are found in the package's an associated severity level, values for which are found in the package's
constants: constants:
@ -164,7 +164,7 @@ client.Track(trace)
``` ```
### Events ### Events
[Event telemetry items](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights#EventTelemetry) [Event telemetry items](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights#EventTelemetry)
represent structured event records. represent structured event records.
```go ```go
@ -174,7 +174,7 @@ client.Track(event)
``` ```
### Single-value metrics ### Single-value metrics
[Metric telemetry items](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights#MetricTelemetry) [Metric telemetry items](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights#MetricTelemetry)
each represent a single data point. each represent a single data point.
```go ```go
@ -186,7 +186,7 @@ client.Track(metric)
### Pre-aggregated metrics ### Pre-aggregated metrics
To reduce the number of metric values that may be sent through telemetry, To reduce the number of metric values that may be sent through telemetry,
when using a particularly high volume of measurements, metric data can be when using a particularly high volume of measurements, metric data can be
[pre-aggregated by the client](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights#AggregateMetricTelemetry) [pre-aggregated by the client](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights#AggregateMetricTelemetry)
and submitted all at once. and submitted all at once.
```go ```go
@ -219,7 +219,7 @@ client.Track(aggregate)
``` ```
### Requests ### Requests
[Request telemetry items](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights#RequestTelemetry) [Request telemetry items](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights#RequestTelemetry)
represent completion of an external request to the application and contains represent completion of an external request to the application and contains
a summary of that request execution and results. This SDK's request a summary of that request execution and results. This SDK's request
telemetry is focused on HTTP requests. telemetry is focused on HTTP requests.
@ -254,7 +254,7 @@ client.Track(request)
``` ```
### Dependencies ### Dependencies
[Remote dependency telemetry items](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights#RemoteDependencyTelemetry) [Remote dependency telemetry items](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights#RemoteDependencyTelemetry)
represent interactions of the monitored component with a remote represent interactions of the monitored component with a remote
component/service like SQL or an HTTP endpoint. component/service like SQL or an HTTP endpoint.
@ -285,7 +285,7 @@ client.Track(dependency)
``` ```
### Exceptions ### Exceptions
[Exception telemetry items](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights#ExceptionTelemetry) [Exception telemetry items](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights#ExceptionTelemetry)
represent handled or unhandled exceptions that occurred during the execution represent handled or unhandled exceptions that occurred during the execution
of the monitored application. This SDK is geared towards handling panics or of the monitored application. This SDK is geared towards handling panics or
unexpected results from important functions: unexpected results from important functions:
@ -357,7 +357,7 @@ if err != nil {
``` ```
### Availability ### Availability
[Availability telemetry items](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights/#AvailabilityTelemetry) [Availability telemetry items](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights/#AvailabilityTelemetry)
represent the result of executing an availability test. This is useful if represent the result of executing an availability test. This is useful if
you are writing availability monitors in Go. you are writing availability monitors in Go.
@ -382,7 +382,7 @@ client.Track(availability)
``` ```
### Page Views ### Page Views
[Page view telemetry items](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights/#PageViewTelemetry) [Page view telemetry items](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights/#PageViewTelemetry)
represent generic actions on a page like a button click. These are typically represent generic actions on a page like a button click. These are typically
generated by the client side rather than the server side, but is available generated by the client side rather than the server side, but is available
here nonetheless. here nonetheless.
@ -403,10 +403,10 @@ client.Track(pageview)
Telemetry items all have a `Tags` property that contains information *about* Telemetry items all have a `Tags` property that contains information *about*
the submitted telemetry, such as user, session, and device information. The the submitted telemetry, such as user, session, and device information. The
`Tags` property is an instance of the `Tags` property is an instance of the
[contracts.ContextTags](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts/#ContextTags) [contracts.ContextTags](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights/contracts/#ContextTags)
type, which is a `map[string]string` under the hood, but has helper methods type, which is a `map[string]string` under the hood, but has helper methods
to access the most commonly used data. An instance of to access the most commonly used data. An instance of
[TelemetryContext](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights/#TelemetryContext) [TelemetryContext](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights/#TelemetryContext)
exists on the `TelemetryClient`, and also contains a `Tags` property. These exists on the `TelemetryClient`, and also contains a `Tags` property. These
tags are applied to all telemetry sent through the client. If a context tag tags are applied to all telemetry sent through the client. If a context tag
is found on both the client's `TelemetryContext` and in the telemetry item's is found on both the client's `TelemetryContext` and in the telemetry item's
@ -418,8 +418,8 @@ A few examples for illustration:
import ( import (
"os" "os"
"github.com/Microsoft/ApplicationInsights-Go/appinsights" "github.com/microsoft/ApplicationInsights-Go/appinsights"
"github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts" "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
) )
func main() { func main() {
@ -465,7 +465,7 @@ func main() {
``` ```
### Shutdown ### Shutdown
The Go SDK submits data asynchronously. The [InMemoryChannel](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights/#InMemoryChannel) The Go SDK submits data asynchronously. The [InMemoryChannel](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights/#InMemoryChannel)
launches its own goroutine used to accept and send telemetry. If you're not launches its own goroutine used to accept and send telemetry. If you're not
careful, this may result in lost telemetry when the service needs to shut careful, this may result in lost telemetry when the service needs to shut
down. The channel has a few methods to deal with this case: down. The channel has a few methods to deal with this case:
@ -513,7 +513,7 @@ func main() {
We recommend something similar to the above to minimize lost telemetry We recommend something similar to the above to minimize lost telemetry
through shutdown. through shutdown.
[The documentation](https://godoc.org/github.com/Microsoft/ApplicationInsights-Go/appinsights#TelemetryChannel) [The documentation](https://godoc.org/github.com/microsoft/ApplicationInsights-Go/appinsights#TelemetryChannel)
explains in more detail what can lead to the cases above. explains in more detail what can lead to the cases above.
### Diagnostics ### Diagnostics

Просмотреть файл

@ -3,7 +3,7 @@ package appinsights
import ( import (
"time" "time"
"github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts" "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
) )
// Application Insights telemetry client provides interface to track telemetry // Application Insights telemetry client provides interface to track telemetry

Просмотреть файл

@ -2,7 +2,7 @@ package appinsights
// NOTE: This file was automatically generated. // NOTE: This file was automatically generated.
import "github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts" import "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
// Type of the metric data measurement. // Type of the metric data measurement.
const ( const (

Просмотреть файл

@ -99,7 +99,7 @@ const (
CloudRoleInstance string = "ai.cloud.roleInstance" CloudRoleInstance string = "ai.cloud.roleInstance"
// SDK version. See // SDK version. See
// https://github.com/Microsoft/ApplicationInsights-Home/blob/master/SDK-AUTHORING.md#sdk-version-specification // https://github.com/microsoft/ApplicationInsights-Home/blob/master/SDK-AUTHORING.md#sdk-version-specification
// for information. // for information.
InternalSdkVersion string = "ai.internal.sdkVersion" InternalSdkVersion string = "ai.internal.sdkVersion"

Просмотреть файл

@ -503,7 +503,7 @@ func (tags CloudContextTags) SetRoleInstance(value string) {
} }
// SDK version. See // SDK version. See
// https://github.com/Microsoft/ApplicationInsights-Home/blob/master/SDK-AUTHORING.md#sdk-version-specification // https://github.com/microsoft/ApplicationInsights-Home/blob/master/SDK-AUTHORING.md#sdk-version-specification
// for information. // for information.
func (tags InternalContextTags) GetSdkVersion() string { func (tags InternalContextTags) GetSdkVersion() string {
if result, ok := tags["ai.internal.sdkVersion"]; ok { if result, ok := tags["ai.internal.sdkVersion"]; ok {
@ -514,7 +514,7 @@ func (tags InternalContextTags) GetSdkVersion() string {
} }
// SDK version. See // SDK version. See
// https://github.com/Microsoft/ApplicationInsights-Home/blob/master/SDK-AUTHORING.md#sdk-version-specification // https://github.com/microsoft/ApplicationInsights-Home/blob/master/SDK-AUTHORING.md#sdk-version-specification
// for information. // for information.
func (tags InternalContextTags) SetSdkVersion(value string) { func (tags InternalContextTags) SetSdkVersion(value string) {
if value != "" { if value != "" {

Просмотреть файл

@ -1,4 +1,4 @@
// Data contract definitions for telemetry submitted to Application Insights. // Data contract definitions for telemetry submitted to Application Insights.
// This is generated from the schemas found at // This is generated from the schemas found at
// https://github.com/Microsoft/ApplicationInsights-Home/tree/master/EndpointSpecs/Schemas/Bond // https://github.com/microsoft/ApplicationInsights-Home/tree/master/EndpointSpecs/Schemas/Bond
package contracts package contracts

Просмотреть файл

@ -6,7 +6,7 @@ import (
"runtime" "runtime"
"strings" "strings"
"github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts" "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
) )
// Exception telemetry items represent a handled or unhandled exceptions that // Exception telemetry items represent a handled or unhandled exceptions that

Просмотреть файл

@ -5,7 +5,7 @@ import (
"strings" "strings"
"testing" "testing"
"github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts" "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
) )
type myStringer struct{} type myStringer struct{}

Просмотреть файл

@ -5,7 +5,7 @@ import (
"time" "time"
"code.cloudfoundry.org/clock" "code.cloudfoundry.org/clock"
"github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts" "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
) )
var ( var (

Просмотреть файл

@ -4,7 +4,7 @@ import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts" "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
) )
type telemetryBufferItems []*contracts.Envelope type telemetryBufferItems []*contracts.Envelope

Просмотреть файл

@ -7,7 +7,7 @@ import (
"strconv" "strconv"
"time" "time"
"github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts" "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
) )
// Common interface implemented by telemetry data contracts // Common interface implemented by telemetry data contracts

Просмотреть файл

@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts" "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
) )
const float_precision = 1e-4 const float_precision = 1e-4

Просмотреть файл

@ -1,7 +1,7 @@
package appinsights package appinsights
import ( import (
"github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts" "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
"time" "time"
) )

Просмотреть файл

@ -3,7 +3,7 @@ package appinsights
import ( import (
"strings" "strings"
"github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts" "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
) )
// Encapsulates contextual data common to all telemetry submitted through a // Encapsulates contextual data common to all telemetry submitted through a

Просмотреть файл

@ -5,7 +5,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts" "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
) )
func TestDefaultTags(t *testing.T) { func TestDefaultTags(t *testing.T) {

Просмотреть файл

@ -11,7 +11,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/Microsoft/ApplicationInsights-Go/appinsights/contracts" "github.com/microsoft/ApplicationInsights-Go/appinsights/contracts"
) )
type testServer struct { type testServer struct {

Просмотреть файл

@ -19,7 +19,7 @@ The full path to BondSchemaGenerator.exe
The path to the directory that contains all of the input .bond files. The path to the directory that contains all of the input .bond files.
.LINK https://github.com/Microsoft/ApplicationInsights-Home .LINK https://github.com/microsoft/ApplicationInsights-Home
#> #>
@ -75,7 +75,7 @@ try {
# Check locally. # Check locally.
if (-not (Test-Path .\ApplicationInsights-Home -PathType Container)) { if (-not (Test-Path .\ApplicationInsights-Home -PathType Container)) {
# Clone into it! # Clone into it!
git clone https://github.com/Microsoft/ApplicationInsights-Home.git git clone https://github.com/microsoft/ApplicationInsights-Home.git
} }
} }