exporter

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Oct 21, 2021 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package exporter Time : 2021/7/22 2:25 下午 Author : xushiyin contact : yuqingxushiyin@gmail.com

Package exporter Time : 2021/7/22 1:25 下午 Author : xushiyin contact : yuqingxushiyin@gmail.com

Package exporter Time : 2021/7/22 3:29 下午 Author : xushiyin contact : yuqingxushiyin@gmail.com

Package exporter Time : 2021/7/26 2:10 下午 Author : xushiyin contact : yuqingxushiyin@gmail.com

Index

Constants

View Source
const RootPath = "/"

Variables

This section is empty.

Functions

This section is empty.

Types

type BuildInfo

type BuildInfo struct {
	Version   string
	CommitSha string
	Date      string
}

type Collector

type Collector interface {
	Collect(ch chan<- prometheus.Metric)
}

type LogstashExporter

type LogstashExporter struct {
	sync.Mutex
	// contains filtered or unexported fields
}

LogstashExporter implements the prometheus.Exporter interface, and exports Logstash metrics.

func NewLogstashExporter

func NewLogstashExporter(opts Options) (*LogstashExporter, error)

func (*LogstashExporter) Collect

func (e *LogstashExporter) Collect(ch chan<- prometheus.Metric)

Collect fetches new metrics from the RedisHost and updates the appropriate metrics.

func (*LogstashExporter) Describe

func (e *LogstashExporter) Describe(_ chan<- *prometheus.Desc)

Describe outputs Redis metric descriptions.

func (*LogstashExporter) ServeHTTP

func (e *LogstashExporter) ServeHTTP(w http.ResponseWriter, r *http.Request)

type NodeRootInfo

type NodeRootInfo struct {
	Host        string `json:"host"`
	Version     string `json:"version"`
	HttpAddress string `json:"http_address"`
}

func GetLogstashRootInfo

func GetLogstashRootInfo(rc *ReqClient, path string, milliseconds int64) (*NodeRootInfo, error)

GetLogstashRootInfo get Logstash root info

type NodeStatsCollector

type NodeStatsCollector struct {
	ReqPath string

	LogstashInfo *prometheus.Desc

	JvmThreadsCount     *prometheus.Desc
	JvmThreadsPeakCount *prometheus.Desc

	MemHeapUsedInBytes         *prometheus.Desc
	MemHeapCommittedInBytes    *prometheus.Desc
	MemHeapMaxInBytes          *prometheus.Desc
	MemHeapUsedPercent         *prometheus.Desc
	MemNonHeapUsedInBytes      *prometheus.Desc
	MemNonHeapCommittedInBytes *prometheus.Desc

	MemPoolPeakUsedInBytes  *prometheus.Desc
	MemPoolUsedInBytes      *prometheus.Desc
	MemPoolPeakMaxInBytes   *prometheus.Desc
	MemPoolMaxInBytes       *prometheus.Desc
	MemPoolCommittedInBytes *prometheus.Desc

	GCCollectionTimeInMillis *prometheus.Desc
	GCCollectionCount        *prometheus.Desc

	ProcessOpenFileDescriptors     *prometheus.Desc
	ProcessPeakOpenFileDescriptors *prometheus.Desc
	ProcessMaxFileDescriptors      *prometheus.Desc
	ProcessMemTotalVirtualInBytes  *prometheus.Desc
	ProcessCPUTotalInMillis        *prometheus.Desc
	ProcessCPUPercent              *prometheus.Desc

	PipelineDuration       *prometheus.Desc
	PipelineEventsIn       *prometheus.Desc
	PipelineEventsFiltered *prometheus.Desc
	PipelineEventsOut      *prometheus.Desc
	// contains filtered or unexported fields
}

NodeStatsCollector type

func NewNodeStatsCollector

func NewNodeStatsCollector(e *LogstashExporter) (*NodeStatsCollector, error)

func (*NodeStatsCollector) Collect

func (c *NodeStatsCollector) Collect(ch chan<- prometheus.Metric)

type NodeStatsInfo

type NodeStatsInfo struct {
	Host        string `json:"host"`
	Version     string `json:"version"`
	HTTPAddress string `json:"http_address"`
	Jvm         struct {
		Threads struct {
			Count     int `json:"count"`
			PeakCount int `json:"peak_count"`
		} `json:"threads"`
		Mem struct {
			HeapUsedInBytes         int `json:"heap_used_in_bytes"`
			HeapUsedPercent         int `json:"heap_used_percent"`
			HeapCommittedInBytes    int `json:"heap_committed_in_bytes"`
			HeapMaxInBytes          int `json:"heap_max_in_bytes"`
			NonHeapUsedInBytes      int `json:"non_heap_used_in_bytes"`
			NonHeapCommittedInBytes int `json:"non_heap_committed_in_bytes"`
			Pools                   struct {
				Survivor struct {
					PeakUsedInBytes  int `json:"peak_used_in_bytes"`
					UsedInBytes      int `json:"used_in_bytes"`
					PeakMaxInBytes   int `json:"peak_max_in_bytes"`
					MaxInBytes       int `json:"max_in_bytes"`
					CommittedInBytes int `json:"committed_in_bytes"`
				} `json:"survivor"`
				Old struct {
					PeakUsedInBytes  int `json:"peak_used_in_bytes"`
					UsedInBytes      int `json:"used_in_bytes"`
					PeakMaxInBytes   int `json:"peak_max_in_bytes"`
					MaxInBytes       int `json:"max_in_bytes"`
					CommittedInBytes int `json:"committed_in_bytes"`
				} `json:"old"`
				Young struct {
					PeakUsedInBytes  int `json:"peak_used_in_bytes"`
					UsedInBytes      int `json:"used_in_bytes"`
					PeakMaxInBytes   int `json:"peak_max_in_bytes"`
					MaxInBytes       int `json:"max_in_bytes"`
					CommittedInBytes int `json:"committed_in_bytes"`
				} `json:"young"`
			} `json:"pools"`
		} `json:"mem"`
		Gc struct {
			Collectors struct {
				Old struct {
					CollectionTimeInMillis int `json:"collection_time_in_millis"`
					CollectionCount        int `json:"collection_count"`
				} `json:"old"`
				Young struct {
					CollectionTimeInMillis int `json:"collection_time_in_millis"`
					CollectionCount        int `json:"collection_count"`
				} `json:"young"`
			} `json:"collectors"`
		} `json:"gc"`
	} `json:"jvm"`
	Process struct {
		OpenFileDescriptors     int `json:"open_file_descriptors"`
		PeakOpenFileDescriptors int `json:"peak_open_file_descriptors"`
		MaxFileDescriptors      int `json:"max_file_descriptors"`
		Mem                     struct {
			TotalVirtualInBytes int64 `json:"total_virtual_in_bytes"`
		} `json:"mem"`
		CPU struct {
			TotalInMillis int64 `json:"total_in_millis"`
			Percent       int   `json:"percent"`
		} `json:"cpu"`
	} `json:"process"`
	Pipeline  Pipeline            `json:"pipeline"`  // Logstash 5
	Pipelines map[string]Pipeline `json:"pipelines"` // Logstash >=6
}

NodeStatsInfo type

func GetLogstashNodeStats

func GetLogstashNodeStats(rc *ReqClient, path string, milliseconds int64) (*NodeStatsInfo, error)

type Options

type Options struct {
	Namespace                string
	EndPoint                 string
	LogstashUsage            string
	Hostname                 string
	MetricsPath              string
	ScrapeTimeoutMillisecond int64
	Registry                 *prometheus.Registry
	BuildInfo                BuildInfo
}

type Pipeline

type Pipeline struct {
	Events struct {
		DurationInMillis int `json:"duration_in_millis"`
		In               int `json:"in"`
		Filtered         int `json:"filtered"`
		Out              int `json:"out"`
	} `json:"events"`
	Plugins struct {
		Inputs []struct {
			ID     string `json:"id"`
			Events struct {
				In  int `json:"in"`
				Out int `json:"out"`
			} `json:"events"`
			Name string `json:"name"`
		} `json:"inputs,omitempty"`
		Filters []struct {
			ID     string `json:"id"`
			Events struct {
				DurationInMillis int `json:"duration_in_millis"`
				In               int `json:"in"`
				Out              int `json:"out"`
			} `json:"events,omitempty"`
			Name             string `json:"name"`
			Matches          int    `json:"matches,omitempty"`
			Failures         int    `json:"failures,omitempty"`
			PatternsPerField struct {
				CapturedRequestHeaders int `json:"captured_request_headers"`
			} `json:"patterns_per_field,omitempty"`
			Formats int `json:"formats,omitempty"`
		} `json:"filters"`
		Outputs []struct {
			ID     string `json:"id"`
			Events struct {
				In  int `json:"in"`
				Out int `json:"out"`
			} `json:"events"`
			Name string `json:"name"`
		} `json:"outputs"`
	} `json:"plugins"`
	Reloads struct {
		LastError            interface{} `json:"last_error"`
		Successes            int         `json:"successes"`
		LastSuccessTimestamp interface{} `json:"last_success_timestamp"`
		LastFailureTimestamp interface{} `json:"last_failure_timestamp"`
		Failures             int         `json:"failures"`
	} `json:"reloads"`
	Queue struct {
		Events   int    `json:"events"`
		Type     string `json:"type"`
		Capacity struct {
			PageCapacityInBytes int   `json:"page_capacity_in_bytes"`
			MaxQueueSizeInBytes int64 `json:"max_queue_size_in_bytes"`
			MaxUnreadEvents     int   `json:"max_unread_events"`
		} `json:"capacity"`
		Data struct {
			Path             string `json:"path"`
			FreeSpaceInBytes int64  `json:"free_space_in_bytes"`
			StorageType      string `json:"storage_type"`
		} `json:"data"`
	} `json:"queue"`
	DeadLetterQueue struct {
		QueueSizeInBytes int `json:"queue_size_in_bytes"`
	} `json:"dead_letter_queue"`
}

Pipeline type

type ReqClient

type ReqClient struct {
	BaseUrl string
	// contains filtered or unexported fields
}

func NewReqClient

func NewReqClient(baseUrl string) *ReqClient

NewReqClient get a request client use default RoundTripper

func (*ReqClient) Do

func (rc *ReqClient) Do(request *http.Request, duration time.Duration) (*ResponseStruct, error)

Do func returns a response with your data

func (*ReqClient) Get

func (rc *ReqClient) Get(path string) (*http.Request, error)

Get returns a GET request

func (*ReqClient) GetQuery added in v1.0.2

func (rc *ReqClient) GetQuery(path string, params interface{}) (*http.Request, error)

GetQuery returns a GET request with query params

type ResponseStruct

type ResponseStruct struct {
	Status        string
	StatusCode    int
	Header        http.Header
	ContentLength int64
	Body          []byte
}

ResponseStruct is a struct who returns after requests

Jump to

Keyboard shortcuts

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