mackerel

package module
v0.0.0-...-300f058 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 6, 2017 License: Apache-2.0 Imports: 13 Imported by: 0

README

mackerel-client-go

Build Status Coverage Status GoDoc

mackerel-client-go is a Go client library for mackerel.io API.

Usage

import mkr "github.com/mackerelio/mackerel-client-go"
client = mkr.NewClient("<Put your API key>")

hosts, err := client.FindHosts(&mkr.FindHostsParam{
        Service: "My-Service",
        Roles: []string{"proxy"},
        Statuses: []string{"working"},
})

err := client.PostServiceMetricValues("My-Service", []*mkr.MetricValue{
        &mkr.MetricValue{
              Name:  "proxy.access_log.latency",
              Time:  123456789,
              Value: 500,
        },
})

CAUTION

Now, mackerel-client-go is an ALPHA version. In the future release, it may change it's interface.

CONTRIBUTION

  1. Fork (https://github.com/mackerelio/mackerel-client-go/fork)
  2. Create a feature branch
  3. Commit your changes
  4. Rebase your local changes against the master branch
  5. Run test suite with the go test ./... command and confirm that it passes
  6. Run gofmt -s
  7. Create new Pull Request

License

Copyright 2014 Hatena Co., Ltd.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Alert

type Alert struct {
	ID        string  `json:"id,omitempty"`
	Status    string  `json:"status,omitempty"`
	MonitorID string  `json:"monitorId,omitempty"`
	Type      string  `json:"type,omitempty"`
	HostID    string  `json:"hostId,omitempty"`
	Value     float64 `json:"value,omitempty"`
	Message   string  `json:"message,omitempty"`
	Reason    string  `json:"reason,omitempty"`
	OpenedAt  int64   `json:"openedAt,omitempty"`
	ClosedAt  int64   `json:"closedAt,omitempty"`
}

Alert information

type BlockDevice

type BlockDevice map[string]map[string]interface{}

BlockDevice blockdevice

type CPU

type CPU []map[string]interface{}

CPU cpu

type Client

type Client struct {
	BaseURL           *url.URL
	APIKey            string
	Verbose           bool
	UserAgent         string
	AdditionalHeaders http.Header
}

Client api client for mackerel

func NewClient

func NewClient(apikey string) *Client

NewClient returns new mackerel.Client

func NewClientWithOptions

func NewClientWithOptions(apikey string, rawurl string, verbose bool) (*Client, error)

NewClientWithOptions returns new mackerel.Client

func (*Client) CloseAlert

func (c *Client) CloseAlert(alertID string, reason string) (*Alert, error)

CloseAlert close alert

func (*Client) CreateDashboard

func (c *Client) CreateDashboard(param *Dashboard) (*Dashboard, error)

CreateDashboard creating dashboard

func (*Client) CreateGraphAnnotation

func (c *Client) CreateGraphAnnotation(annotation *GraphAnnotation) (*GraphAnnotation, error)

CreateGraphAnnotation creates graph annotation.

func (*Client) CreateGraphDefs

func (c *Client) CreateGraphDefs(payloads []*GraphDefsParam) error

CreateGraphDefs create graph defs

func (*Client) CreateHost

func (c *Client) CreateHost(param *CreateHostParam) (string, error)

CreateHost creating host

func (*Client) CreateMonitor

func (c *Client) CreateMonitor(param Monitor) (Monitor, error)

CreateMonitor creating monitor

func (*Client) DeleteDashboard

func (c *Client) DeleteDashboard(dashboardID string) (*Dashboard, error)

DeleteDashboard delete dashboard

func (*Client) DeleteGraphAnnotation

func (c *Client) DeleteGraphAnnotation(annotationID string) (*GraphAnnotation, error)

DeleteGraphAnnotation deletes graph annotation.

func (*Client) DeleteMonitor

func (c *Client) DeleteMonitor(monitorID string) (Monitor, error)

DeleteMonitor update monitor

func (*Client) FetchHostMetricValues

func (c *Client) FetchHostMetricValues(hostID string, metricName string, from int64, to int64) ([]MetricValue, error)

FetchHostMetricValues retrieves the metric values for a Host

func (*Client) FetchLatestMetricValues

func (c *Client) FetchLatestMetricValues(hostIDs []string, metricNames []string) (LatestMetricValues, error)

FetchLatestMetricValues fetch latest metrics

func (*Client) FetchServiceMetricValues

func (c *Client) FetchServiceMetricValues(serviceName string, metricName string, from int64, to int64) ([]MetricValue, error)

FetchServiceMetricValues retrieves the metric values for a Service

func (*Client) FindAlerts

func (c *Client) FindAlerts() ([]*Alert, error)

FindAlerts find alerts

func (*Client) FindDashboard

func (c *Client) FindDashboard(dashboardID string) (*Dashboard, error)

FindDashboard find dashboard

func (*Client) FindDashboards

func (c *Client) FindDashboards() ([]*Dashboard, error)

FindDashboards find dashboards

func (*Client) FindGraphAnnotations

func (c *Client) FindGraphAnnotations(service string, from int64, to int64) ([]GraphAnnotation, error)

FindGraphAnnotations fetches graph annotation.

func (*Client) FindHost

func (c *Client) FindHost(id string) (*Host, error)

FindHost find the host

func (*Client) FindHosts

func (c *Client) FindHosts(param *FindHostsParam) ([]*Host, error)

FindHosts find hosts

func (*Client) FindMonitors

func (c *Client) FindMonitors() ([]Monitor, error)

FindMonitors find monitors

func (*Client) FindServices

func (c *Client) FindServices() ([]*Service, error)

FindServices finds services.

func (*Client) GetOrg

func (c *Client) GetOrg() (*Org, error)

GetOrg get the org

func (*Client) PostHostMetricValues

func (c *Client) PostHostMetricValues(metricValues [](*HostMetricValue)) error

PostHostMetricValues post host metrics

func (*Client) PostHostMetricValuesByHostID

func (c *Client) PostHostMetricValuesByHostID(hostID string, metricValues [](*MetricValue)) error

PostHostMetricValuesByHostID post host metrics

func (*Client) PostJSON

func (c *Client) PostJSON(path string, payload interface{}) (*http.Response, error)

PostJSON shortcut method for posting json

func (*Client) PostServiceMetricValues

func (c *Client) PostServiceMetricValues(serviceName string, metricValues [](*MetricValue)) error

PostServiceMetricValues post service metrics

func (*Client) PutJSON

func (c *Client) PutJSON(path string, payload interface{}) (*http.Response, error)

PutJSON shortcut method for putting json

func (*Client) Request

func (c *Client) Request(req *http.Request) (resp *http.Response, err error)

Request request to mackerel and receive response

func (*Client) RetireHost

func (c *Client) RetireHost(id string) error

RetireHost retuire the host

func (*Client) UpdateDashboard

func (c *Client) UpdateDashboard(dashboardID string, param *Dashboard) (*Dashboard, error)

UpdateDashboard update dashboard

func (*Client) UpdateGraphAnnotation

func (c *Client) UpdateGraphAnnotation(annotationID string, annotation *GraphAnnotation) (*GraphAnnotation, error)

UpdateGraphAnnotation updates graph annotation.

func (*Client) UpdateHost

func (c *Client) UpdateHost(hostID string, param *UpdateHostParam) (string, error)

UpdateHost updates host

func (*Client) UpdateHostRoleFullnames

func (c *Client) UpdateHostRoleFullnames(hostID string, roleFullnames []string) error

UpdateHostRoleFullnames updates host roles

func (*Client) UpdateHostStatus

func (c *Client) UpdateHostStatus(hostID string, status string) error

UpdateHostStatus updates host status

func (*Client) UpdateMonitor

func (c *Client) UpdateMonitor(monitorID string, param Monitor) (Monitor, error)

UpdateMonitor update monitor

type Cloud

type Cloud struct {
	Provider string      `json:"provider,omitempty"`
	MetaData interface{} `json:"metadata,omitempty"`
}

Cloud cloud

type CreateHostParam

type CreateHostParam struct {
	Name             string      `json:"name,omitempty"`
	DisplayName      string      `json:"displayName,omitempty"`
	Meta             HostMeta    `json:"meta,omitempty"`
	Interfaces       []Interface `json:"interfaces,omitempty"`
	RoleFullnames    []string    `json:"roleFullnames,omitempty"`
	CustomIdentifier string      `json:"customIdentifier,omitempty"`
}

CreateHostParam parameters for CreateHost

type Dashboard

type Dashboard struct {
	ID           string `json:"id,omitempty"`
	Title        string `json:"title,omitempty"`
	BodyMarkDown string `json:"bodyMarkdown,omitempty"`
	URLPath      string `json:"urlPath,omitempty"`
	CreatedAt    int64  `json:"createdAt,omitempty"`
	UpdatedAt    int64  `json:"updatedAt,omitempty"`
}

Dashboard information

type FileSystem

type FileSystem map[string]interface{}

FileSystem filesystem

type FindHostsParam

type FindHostsParam struct {
	Service          string
	Roles            []string
	Name             string
	Statuses         []string
	CustomIdentifier string
}

FindHostsParam parameters for FindHosts

type GraphAnnotation

type GraphAnnotation struct {
	ID          string   `json:"id,omitempty"`
	Title       string   `json:"title,omitempty"`
	Description string   `json:"description,omitempty"`
	From        int64    `json:"from,omitempty"`
	To          int64    `json:"to,omitempty"`
	Service     string   `json:"service,omitempty"`
	Roles       []string `json:"roles,omitempty"`
}

GraphAnnotation represents parameters to post graph annotation.

type GraphDefsMetric

type GraphDefsMetric struct {
	Name        string `json:"name"`
	DisplayName string `json:"displayName"`
	IsStacked   bool   `json:"isStacked"`
}

GraphDefsMetric graph metric

type GraphDefsParam

type GraphDefsParam struct {
	Name        string             `json:"name"`
	DisplayName string             `json:"displayName"`
	Unit        string             `json:"unit"`
	Metrics     []*GraphDefsMetric `json:"metrics"`
}

GraphDefsParam parameters for posting graph definitions

type HeaderField

type HeaderField struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

HeaderField represents key-value pairs in an HTTP header for external http monitoring.

type Host

type Host struct {
	ID               string      `json:"id,omitempty"`
	Name             string      `json:"name,omitempty"`
	DisplayName      string      `json:"displayName,omitempty"`
	CustomIdentifier string      `json:"customIdentifier,omitempty"`
	Type             string      `json:"type,omitempty"`
	Status           string      `json:"status,omitempty"`
	Memo             string      `json:"memo,omitempty"`
	Roles            Roles       `json:"roles,omitempty"`
	RoleFullnames    []string    `json:"roleFullnames,omitempty"`
	IsRetired        bool        `json:"isRetired,omitempty"`
	CreatedAt        int32       `json:"createdAt,omitempty"`
	Meta             HostMeta    `json:"meta,omitempty"`
	Interfaces       []Interface `json:"interfaces,omitempty"`
}

Host host information

func (*Host) DateFromCreatedAt

func (h *Host) DateFromCreatedAt() time.Time

DateFromCreatedAt returns time.Time

func (*Host) DateStringFromCreatedAt

func (h *Host) DateStringFromCreatedAt() string

DateStringFromCreatedAt returns date string

func (*Host) GetRoleFullnames

func (h *Host) GetRoleFullnames() []string

GetRoleFullnames getrolefullnames

func (*Host) IPAddresses

func (h *Host) IPAddresses() map[string]string

IPAddresses returns ipaddresses

type HostMeta

type HostMeta struct {
	AgentRevision string      `json:"agent-revision,omitempty"`
	AgentVersion  string      `json:"agent-version,omitempty"`
	BlockDevice   BlockDevice `json:"block_device,omitempty"`
	CPU           CPU         `json:"cpu,omitempty"`
	Filesystem    FileSystem  `json:"filesystem,omitempty"`
	Kernel        Kernel      `json:"kernel,omitempty"`
	Memory        Memory      `json:"memory,omitempty"`
	Cloud         Cloud       `json:"cloud,omitempty"`
}

HostMeta host meta informations

type HostMetricValue

type HostMetricValue struct {
	HostID string `json:"hostId,omitempty"`
	*MetricValue
}

HostMetricValue host metric value

type Interface

type Interface struct {
	Name          string   `json:"name,omitempty"`
	IPAddress     string   `json:"ipAddress,omitempty"`
	IPv4Addresses []string `json:"ipv4Addresses,omitempty"`
	IPv6Addresses []string `json:"ipv6Addresses,omitempty"`
	MacAddress    string   `json:"macAddress,omitempty"`
}

Interface network interface

type Kernel

type Kernel map[string]string

Kernel kernel

type LatestMetricValues

type LatestMetricValues map[string]map[string]*MetricValue

LatestMetricValues latest metric value

type Memory

type Memory map[string]string

Memory memory

type MetricValue

type MetricValue struct {
	Name  string      `json:"name,omitempty"`
	Time  int64       `json:"time,omitempty"`
	Value interface{} `json:"value,omitempty"`
}

MetricValue metric value

type Monitor

type Monitor interface {
	MonitorType() string
	MonitorID() string
	MonitorName() string
	// contains filtered or unexported methods
}

Monitor represents interface to which each monitor type must confirm to.

type MonitorConnectivity

type MonitorConnectivity struct {
	ID                   string `json:"id,omitempty"`
	Name                 string `json:"name,omitempty"`
	Memo                 string `json:"memo,omitempty"`
	Type                 string `json:"type,omitempty"`
	IsMute               bool   `json:"isMute,omitempty"`
	NotificationInterval uint64 `json:"notificationInterval,omitempty"`

	Scopes        []string `json:"scopes,omitempty"`
	ExcludeScopes []string `json:"excludeScopes,omitempty"`
}

MonitorConnectivity represents connectivity monitor.

func (*MonitorConnectivity) MonitorID

func (m *MonitorConnectivity) MonitorID() string

MonitorID returns monitor id.

func (*MonitorConnectivity) MonitorName

func (m *MonitorConnectivity) MonitorName() string

MonitorName returns monitor name.

func (*MonitorConnectivity) MonitorType

func (m *MonitorConnectivity) MonitorType() string

MonitorType returns monitor type.

type MonitorExpression

type MonitorExpression struct {
	ID                   string `json:"id,omitempty"`
	Name                 string `json:"name,omitempty"`
	Memo                 string `json:"memo,omitempty"`
	Type                 string `json:"type,omitempty"`
	IsMute               bool   `json:"isMute,omitempty"`
	NotificationInterval uint64 `json:"notificationInterval,omitempty"`

	Expression string  `json:"expression,omitempty"`
	Operator   string  `json:"operator,omitempty"`
	Warning    float64 `json:"warning"`
	Critical   float64 `json:"critical"`
}

MonitorExpression represents expression monitor.

func (*MonitorExpression) MonitorID

func (m *MonitorExpression) MonitorID() string

MonitorID returns monitor id.

func (*MonitorExpression) MonitorName

func (m *MonitorExpression) MonitorName() string

MonitorName returns monitor name.

func (*MonitorExpression) MonitorType

func (m *MonitorExpression) MonitorType() string

MonitorType returns monitor type.

type MonitorExternalHTTP

type MonitorExternalHTTP struct {
	ID                   string `json:"id,omitempty"`
	Name                 string `json:"name,omitempty"`
	Memo                 string `json:"memo,omitempty"`
	Type                 string `json:"type,omitempty"`
	IsMute               bool   `json:"isMute,omitempty"`
	NotificationInterval uint64 `json:"notificationInterval,omitempty"`

	Method                          string  `json:"method,omitempty"`
	URL                             string  `json:"url,omitempty"`
	MaxCheckAttempts                uint64  `json:"maxCheckAttempts,omitempty"`
	Service                         string  `json:"service,omitempty"`
	ResponseTimeCritical            float64 `json:"responseTimeCritical,omitempty"`
	ResponseTimeWarning             float64 `json:"responseTimeWarning,omitempty"`
	ResponseTimeDuration            float64 `json:"responseTimeDuration,omitempty"`
	RequestBody                     string  `json:"requestBody,omitempty"`
	ContainsString                  string  `json:"containsString,omitempty"`
	CertificationExpirationCritical uint64  `json:"certificationExpirationCritical,omitempty"`
	CertificationExpirationWarning  uint64  `json:"certificationExpirationWarning,omitempty"`
	SkipCertificateVerification     bool    `json:"skipCertificateVerification,omitempty"`
	// Empty list of headers and nil are different. You have to specify empty
	// list as headers explicitly if you want to remove all headers instead of
	// using nil.
	Headers []HeaderField `json:"headers"`
}

MonitorExternalHTTP represents external HTTP monitor.

func (*MonitorExternalHTTP) MonitorID

func (m *MonitorExternalHTTP) MonitorID() string

MonitorID returns monitor id.

func (*MonitorExternalHTTP) MonitorName

func (m *MonitorExternalHTTP) MonitorName() string

MonitorName returns monitor name.

func (*MonitorExternalHTTP) MonitorType

func (m *MonitorExternalHTTP) MonitorType() string

MonitorType returns monitor type.

type MonitorHostMetric

type MonitorHostMetric struct {
	ID                   string `json:"id,omitempty"`
	Name                 string `json:"name,omitempty"`
	Memo                 string `json:"memo,omitempty"`
	Type                 string `json:"type,omitempty"`
	IsMute               bool   `json:"isMute,omitempty"`
	NotificationInterval uint64 `json:"notificationInterval,omitempty"`

	Metric           string  `json:"metric,omitempty"`
	Operator         string  `json:"operator,omitempty"`
	Warning          float64 `json:"warning"`
	Critical         float64 `json:"critical"`
	Duration         uint64  `json:"duration,omitempty"`
	MaxCheckAttempts uint64  `json:"maxCheckAttempts,omitempty"`

	Scopes        []string `json:"scopes,omitempty"`
	ExcludeScopes []string `json:"excludeScopes,omitempty"`
}

MonitorHostMetric represents host metric monitor.

func (*MonitorHostMetric) MonitorID

func (m *MonitorHostMetric) MonitorID() string

MonitorID returns monitor id.

func (*MonitorHostMetric) MonitorName

func (m *MonitorHostMetric) MonitorName() string

MonitorName returns monitor name.

func (*MonitorHostMetric) MonitorType

func (m *MonitorHostMetric) MonitorType() string

MonitorType returns monitor type.

type MonitorServiceMetric

type MonitorServiceMetric struct {
	ID                   string `json:"id,omitempty"`
	Name                 string `json:"name,omitempty"`
	Memo                 string `json:"memo,omitempty"`
	Type                 string `json:"type,omitempty"`
	IsMute               bool   `json:"isMute,omitempty"`
	NotificationInterval uint64 `json:"notificationInterval,omitempty"`

	Service          string  `json:"service,omitempty"`
	Metric           string  `json:"metric,omitempty"`
	Operator         string  `json:"operator,omitempty"`
	Warning          float64 `json:"warning"`
	Critical         float64 `json:"critical"`
	Duration         uint64  `json:"duration,omitempty"`
	MaxCheckAttempts uint64  `json:"maxCheckAttempts,omitempty"`
}

MonitorServiceMetric represents service metric monitor.

func (*MonitorServiceMetric) MonitorID

func (m *MonitorServiceMetric) MonitorID() string

MonitorID returns monitor id.

func (*MonitorServiceMetric) MonitorName

func (m *MonitorServiceMetric) MonitorName() string

MonitorName returns monitor name.

func (*MonitorServiceMetric) MonitorType

func (m *MonitorServiceMetric) MonitorType() string

MonitorType returns monitor type.

type Org

type Org struct {
	Name string `json:"name"`
}

Org information

type Roles

type Roles map[string][]string

Roles host role maps

type Service

type Service struct {
	Name  string   `json:"name,omitempty"`
	Memo  string   `json:"memo,omitempty"`
	Roles []string `json:"roles,omitempty"`
}

Service represents Mackerel "service".

type UpdateHostParam

type UpdateHostParam CreateHostParam

UpdateHostParam parameters for UpdateHost

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL