integrations

package
v1.4.1 Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2024 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MarshalYAML

func MarshalYAML(v interface{}) (interface{}, error)

MarshalYAML helps implement yaml.Marshaller for structs that have a Configs field that should be inlined in the YAML string.

func NewLogger

func NewLogger(logger log.Logger, opts ...Option) *logrus.Logger

NewLogger translates log.Logger to logrus.Logger

func RegisterIntegration

func RegisterIntegration(cfg Config)

RegisterIntegration dynamically registers a new integration. The Config will represent the configuration that controls the specific integration. Registered Configs may be loaded using UnmarshalYAML or manually constructed.

RegisterIntegration panics if cfg is not a pointer.

func UnmarshalYAML

func UnmarshalYAML(out interface{}, unmarshal func(interface{}) error) error

UnmarshalYAML helps implement yaml.Unmarshaller for structs that have a Configs field that should be inlined in the YAML string.

Types

type CollectorIntegration

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

CollectorIntegration is an integration exposing metrics from one or more Prometheus collectors.

func NewCollectorIntegration

func NewCollectorIntegration(name string, configs ...CollectorIntegrationConfig) *CollectorIntegration

NewCollectorIntegration creates a basic integration that exposes metrics from multiple prometheus.Collector.

func (*CollectorIntegration) MetricsHandler

func (i *CollectorIntegration) MetricsHandler() (http.Handler, error)

MetricsHandler returns the HTTP handler for the integration.

func (*CollectorIntegration) Run

Run satisfies Integration.Run.

func (*CollectorIntegration) ScrapeConfigs

func (i *CollectorIntegration) ScrapeConfigs() []config.ScrapeConfig

ScrapeConfigs satisfies Integration.ScrapeConfigs.

type CollectorIntegrationConfig

type CollectorIntegrationConfig func(integration *CollectorIntegration)

CollectorIntegrationConfig defines constructor configuration for NewCollectorIntegration

func WithCollectors

func WithCollectors(cs ...prometheus.Collector) CollectorIntegrationConfig

WithCollectors adds more collectors to the CollectorIntegration being created.

func WithExporterMetricsIncluded

func WithExporterMetricsIncluded(included bool) CollectorIntegrationConfig

WithExporterMetricsIncluded can enable the exporter metrics if the flag provided is enabled.

func WithRunner

func WithRunner(runner func(context.Context) error) CollectorIntegrationConfig

WithRunner replaces the runner of the CollectorIntegration. The runner function should run while the context provided is not done.

type Config

type Config interface {
	// Name returns the name of the integration and the key that will be used to
	// pull the configuration from the Agent config YAML.
	Name() string

	// InstanceKey should return the key that represents the config, which will be
	// used to populate the value of the `instance` label for metrics.
	//
	// InstanceKey is given an agentKey that represents the agent process. This
	// may be used if the integration being configured applies to an entire
	// machine.
	//
	// This method may not be invoked if the instance key for a Config is
	// overridden.
	InstanceKey(agentKey string) (string, error)

	// NewIntegration returns an integration for the given with the given logger.
	NewIntegration(l log.Logger) (Integration, error)
}

Config provides the configuration and constructor for an integration.

func RegisteredIntegrations

func RegisteredIntegrations() []Config

RegisteredIntegrations all Configs that were passed to RegisterIntegration. Each call will generate a new set of pointers.

type Configs

type Configs []UnmarshaledConfig

Configs is a list of UnmarshaledConfig. Configs for integrations which are unmarshaled from YAML are combined with common settings.

type Integration

type Integration interface {
	// MetricsHandler returns an http.Handler that will return metrics.
	MetricsHandler() (http.Handler, error)

	// ScrapeConfigs returns a set of scrape configs that determine where metrics
	// can be scraped.
	ScrapeConfigs() []config.ScrapeConfig

	// Run should start the integration and do any required tasks, if necessary.
	// For example, an Integration that requires a persistent connection to a
	// database would establish that connection here. If the integration doesn't
	// need to do anything, it should wait for the ctx to be canceled.
	//
	// An error will be returned if the integration failed. Integrations should
	// not return the ctx error.
	Run(ctx context.Context) error
}

An Integration is a process that integrates with some external system and pulls telemetry data.

func NewHandlerIntegration

func NewHandlerIntegration(name string, handler http.Handler) Integration

NewHandlerIntegration creates a new named integration that will call handler when metrics are needed.

func NewIntegrationWithInstanceKey

func NewIntegrationWithInstanceKey(l log.Logger, cfg Config, key string) (Integration, string, error)

NewIntegrationWithInstanceKey uses cfg to construct an integration and return it along its instance key.

type ManagerConfig

type ManagerConfig struct {
	// When true, scrapes metrics from integrations.
	ScrapeIntegrations bool `yaml:"scrape_integrations,omitempty"`

	// The integration configs is merged with the manager config struct so we
	// don't want to export it here; we'll manually unmarshal it in UnmarshalYAML.
	Integrations Configs `yaml:"-"`

	// Extra labels to add for all integration samples
	Labels model.LabelSet `yaml:"labels,omitempty"`

	// Prometheus RW configs to use for all integrations.
	PrometheusRemoteWrite []*promConfig.RemoteWriteConfig `yaml:"prometheus_remote_write,omitempty"`

	IntegrationRestartBackoff time.Duration `yaml:"integration_restart_backoff,omitempty"`

	// ListenPort tells the integration Manager which port the Agent is
	// listening on for generating Prometheus instance configs.
	ListenPort int `yaml:"-"`

	// ListenHost tells the integration Manager which port the Agent is
	// listening on for generating Prometheus instance configs
	ListenHost string `yaml:"-"`

	TLSConfig config_util.TLSConfig `yaml:"http_tls_config,omitempty"`

	// This is set to true if the Server TLSConfig Cert and Key path are set
	ServerUsingTLS bool `yaml:"-"`

	// We use this config to check if we need to reload integrations or not
	// The Integrations Configs don't have prometheus defaults applied which
	// can cause us skip reload when scrape configs change
	PrometheusGlobalConfig promConfig.GlobalConfig `yaml:"-"`

	ReplaceInstanceLabel bool `yaml:"replace_instance_label,omitempty"` // DEPRECATED, unused
	UseHostnameLabel     bool `yaml:"use_hostname_label,omitempty"`     // DEPRECATED, unused
}

ManagerConfig holds the configuration for all integrations.

var CurrentManagerConfig ManagerConfig = DefaultManagerConfig()

func DefaultManagerConfig

func DefaultManagerConfig() ManagerConfig

DefaultManagerConfig holds the default settings for integrations.

func (*ManagerConfig) ApplyDefaults

func (c *ManagerConfig) ApplyDefaults(sflags *server.Flags, mcfg *metrics.Config) error

ApplyDefaults applies default settings to the ManagerConfig and validates that it can be used.

If any integrations are enabled and are configured to be scraped, the Prometheus configuration must have a WAL directory configured.

func (*ManagerConfig) DefaultRelabelConfigs

func (c *ManagerConfig) DefaultRelabelConfigs(instanceKey string) []*relabel.Config

DefaultRelabelConfigs returns the set of relabel configs that should be prepended to all RelabelConfigs for an integration.

func (ManagerConfig) MarshalYAML

func (c ManagerConfig) MarshalYAML() (interface{}, error)

MarshalYAML implements yaml.Marshaler for ManagerConfig.

func (*ManagerConfig) UnmarshalYAML

func (c *ManagerConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML implements yaml.Unmarshaler for ManagerConfig.

type Option

type Option func(*output)

Option Exposes logging options

func WithTimestampFromLogrus

func WithTimestampFromLogrus() Option

WithTimestampFromLogrus sets tsFromLogrus logging option

type UnmarshaledConfig

type UnmarshaledConfig struct {
	Config
	Common config.Common
}

UnmarshaledConfig combines an integration's config with common settings.

Directories

Path Synopsis
Package agent is an "example" integration that has very little functionality, but is still useful in practice.
Package agent is an "example" integration that has very little functionality, but is still useful in practice.
Package apache_http embeds https://github.com/Lusitaniae/apache_exporter
Package apache_http embeds https://github.com/Lusitaniae/apache_exporter
Package config provides common configuration structs shared among implementations of integrations.Integration.
Package config provides common configuration structs shared among implementations of integrations.Integration.
Package consul_exporter embeds https://github.com/prometheus/consul_exporter
Package consul_exporter embeds https://github.com/prometheus/consul_exporter
Package dnsmasq_exporter embeds https://github.com/google/dnsmasq_exporter
Package dnsmasq_exporter embeds https://github.com/google/dnsmasq_exporter
Package elasticsearch_exporter instantiates the exporter from github.com/justwatchcom/elasticsearch_exporter - replaced for github.com/prometheus-community/elasticsearch_exporter Using the YAML config provided by the agent
Package elasticsearch_exporter instantiates the exporter from github.com/justwatchcom/elasticsearch_exporter - replaced for github.com/prometheus-community/elasticsearch_exporter Using the YAML config provided by the agent
Package install registers all in-source integrations for use.
Package install registers all in-source integrations for use.
Package memcached_exporter embeds https://github.com/google/memcached_exporter
Package memcached_exporter embeds https://github.com/google/memcached_exporter
Package mysqld_exporter embeds https://github.com/prometheus/mysqld_exporter
Package mysqld_exporter embeds https://github.com/prometheus/mysqld_exporter
Package postgres_exporter embeds https://github.com/prometheus/postgres_exporter
Package postgres_exporter embeds https://github.com/prometheus/postgres_exporter
Package process_exporter embeds https://github.com/ncabatoff/process-exporter
Package process_exporter embeds https://github.com/ncabatoff/process-exporter
Package redis_exporter embeds https://github.com/oliver006/redis_exporter
Package redis_exporter embeds https://github.com/oliver006/redis_exporter
Package snmp_exporter embeds https://github.com/prometheus/snmp_exporter
Package snmp_exporter embeds https://github.com/prometheus/snmp_exporter
Package statsd_exporter embeds https://github.com/prometheus/statsd_exporter
Package statsd_exporter embeds https://github.com/prometheus/statsd_exporter
v2
Package integrations provides a way to run and manage Grafana Agent "integrations," which integrate some external system (such as MySQL) to Grafana Agent's existing metrics, logging, and tracing subsystems.
Package integrations provides a way to run and manage Grafana Agent "integrations," which integrate some external system (such as MySQL) to Grafana Agent's existing metrics, logging, and tracing subsystems.
agent
Package agent is an "example" integration that has very little functionality, but is still useful in practice.
Package agent is an "example" integration that has very little functionality, but is still useful in practice.
apache_http
Package apache_http embeds https://github.com/Lusitaniae/apache_exporter
Package apache_http embeds https://github.com/Lusitaniae/apache_exporter
autoscrape
Package autoscrape implements a scraper for integrations.
Package autoscrape implements a scraper for integrations.
snmp_exporter
Package snmp_exporter embeds https://github.com/prometheus/snmp_exporter
Package snmp_exporter embeds https://github.com/prometheus/snmp_exporter

Jump to

Keyboard shortcuts

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