metricsink

package module
v1.0.5 Latest Latest
Warning

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

Go to latest
Published: Dec 20, 2019 License: Apache-2.0 Imports: 18 Imported by: 0

README

Metric Collector for Go-Chassis

Build Status
This is a reporter plugin for go-chassis which report circuit breaker metrics to Huaweicloud.

How to use

in main.go

import _ "github.com/huaweicse/cse-collector"

Introdction

The metrics reported by this collector is listed below:

attempts
errors
successes
failures
rejects
shortCircuits
timeouts
fallbackSuccesses
fallbackFailures
totalDuration
runDuration

It also collects data for each api's:

Name                 string  `json:"name"`
Desc                 string  `json:"desc"`
Qps                  float64 `json:"qps"`
Latency              int     `json:"latency"`
L995                 int     `json:"l995"`
L99                  int     `json:"l99"`
L90                  int     `json:"l90"`
L75                  int     `json:"l75"`
L50                  int     `json:"l50"`
L25                  int     `json:"l25"`
L5                   int     `json:"l5"`
Rate                 float64 `json:"rate"`
Total                int64   `json:"total"`
Failure              int64   `json:"failure"`
ShortCircuited       int64   `json:"shortCircuited"`
IsCircuitBreakerOpen bool    `json:"isCircuitBreakerOpen"`
SemaphoreRejected    int64   `json:"semaphoreRejected"`
ThreadPoolRejected   int64   `json:"threadPoolRejected"`
CountTimeout         int64   `json:"countTimeout"`

Configurations

in chassis.yaml file. You need to configure your micro service to send the data to Huaweicloud ServiceStage.

cse:
  monitor:
    client:
      serverUri: https://cse.cn-north-1.myhwclouds.com:443
      enable: true

Data Post

Every 2 sec data will be posted to monitoring server if serverUri is correct and enable is true

The data format

{
  "data": {
    "appId": "default",
    "version": "1.0.0",
    "name": "order",
    "environment": "",
    "instance": "order-c3bbef-8457f585dc-c69cz",
    "thread": 14,
    "customs": null,
    "interfaces": [
      {
        "name": "Consumer.restaurant.rest",
        "desc": "Consumer.restaurant.rest",
        "qps": 0,
        "latency": 1,
        "l995": 0,
        "l99": 0,
        "l90": 0,
        "l75": 0,
        "l50": 0,
        "l25": 0,
        "l5": 0,
        "rate": 1,
        "total": 0,
        "failure": 0,
        "shortCircuited": 0,
        "circuitBreakerOpen": false,
        "semaphoreRejected": 0,
        "threadPoolRejected": 0,
        "countTimeout": 0,
        "failureRate": 0
      }
    ],
    "cpu": 4,
    "memory": {
      "heapAlloc": 3041688,
      "heapIdle": 61628416,
      "heapInUse": 4399104,
      "heapObjects": 28501,
      "heapReleased": 61595648,
      "heapSys": 66027520
    },
    "serviceId": "32370e6ed839834a0493dddc3e7a7d5cb6d5db59",
    "instanceId": "7c91fbb922ef11ea99b30255ac1004a6"
  }
}

Data Flush

Every 10sec data will be flushed

[
    [
        {
            "time": 1526905933600,
            "appId": "default",
            "version": "0.0.1",
            "qps": 0,
            "latency": 0,
            "failureRate": 0,
            "total": 0,
            "breakerRateAgg": 0,
            "circuitBreakerOpen": false,
            "failure": 0,
            "shortCircuited": 0,
            "semaphoreRejected": 0,
            "threadPoolRejected": 0,
            "countTimeout": 0,
            "l995": 0,
            "l99": 0,
            "l90": 0,
            "l75": 0,
            "l50": 0,
            "l25": 0,
            "l5": 0,
            "instanceId": "6a0895085cf211e8bb850255ac105551",
            "thread": 11,
            "cpu": 4,
            "memory": {
                "heapAlloc": 2649632,
                "heapIdle": 1597440,
                "heapInUse": 3874816,
                "heapObjects": 24737,
                "heapReleased": 0,
                "heapSys": 5472256
            },
            "functionCount": 1,
            "customs": null,
            "name": "root1-ThinkPad-T440p"
        }
    ]
]

Documentation

Index

Constants

View Source
const (
	//HeaderUserName is a variable of type string
	HeaderUserName   = "x-user-name"
	HeaderDomainName = "x-domain-name"
	ContentType      = "Content-Type"
	Name             = "monitor"
)

constants for header parameters

Variables

View Source
var IsMonitoringConnected bool

IsMonitoringConnected is a boolean to keep an check if there exsist any succeful connection to monitoring Server

Functions

This section is empty.

Types

type CseCollectorConfig

type CseCollectorConfig struct {
	// CseMonitorAddr is the http address of the csemonitor server
	CseMonitorAddr string
	// Headers for csemonitor server
	Header http.Header
	// TickInterval specifies the period that this collector will send metrics to the server.
	TimeInterval time.Duration
	// Config structure to configure a TLS client for sending Metric data
	TLSConfig *tls.Config

	Env string
}

CseCollectorConfig is a struct to keep monitoring information

type Reporter

type Reporter struct {
	// contains filtered or unexported fields
}

Reporter is a struct to store the registry address and different monitoring information

func GetReporter added in v1.0.2

func GetReporter() (*Reporter, error)

GetReporter get reporter singleton

func NewReporter

func NewReporter(config *CseCollectorConfig) (*Reporter, error)

NewReporter creates a new monitoring object for CSE type collections

func (*Reporter) Send added in v1.0.2

func (reporter *Reporter) Send(cb *hystrix.CircuitBreaker)

Send send metrics to monitoring service

Directories

Path Synopsis
example
pkg

Jump to

Keyboard shortcuts

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