Documentation
¶
Index ¶
- Constants
- Variables
- func GetSSMParameter(ctx context.Context, name string) (string, error)
- func Main(ctx context.Context, args []string) error
- func Run(ctx context.Context, wg *sync.WaitGroup, configPath string, once bool) error
- func RunFirehoseEndpoint(ctx context.Context, wg *sync.WaitGroup, port int)
- func SetupLogger(logLevel, logFormat string)
- type AgentCmd
- type AggregateDefinition
- type Attribute
- type BackupConfig
- type CLI
- type Channels
- type Client
- func (client *Client) FindHosts(p *mackerel.FindHostsParam) ([]*mackerel.Host, error)
- func (c *Client) PostHostMetricValues(ctx context.Context, mvs []*mackerel.HostMetricValue) error
- func (c *Client) PostServiceMetricValues(ctx context.Context, serviceName string, mvs []*mackerel.MetricValue) error
- type CommandProbe
- func (p *CommandProbe) GetGraphDefs() (*GraphsOutput, error)
- func (p *CommandProbe) MetricName(name string) string
- func (p *CommandProbe) PostGraphDefs(client *mackerel.Client, pc *CommandProbeConfig) error
- func (p *CommandProbe) Run(ctx context.Context) (ms Metrics, err error)
- func (p *CommandProbe) String() string
- func (p *CommandProbe) TempDir() string
- type CommandProbeConfig
- type Config
- type DestinationConfig
- type FirehoseEndpointCmd
- type GRPCCmd
- type GRPCProbe
- type GRPCProbeConfig
- type Graph
- type GraphDefsMetric
- type GraphsOutput
- type HTTPCmd
- type HTTPProbe
- type HTTPProbeConfig
- type HostMetric
- type HostMetrics
- type LambdaCmd
- type MackerelConfig
- type Metric
- type MetricConfig
- type Metrics
- type OnceCmd
- type OtelConfig
- type OtelMetric
- type OutputConfig
- type PingCmd
- type PingProbe
- type PingProbeConfig
- type Probe
- type ProbeConfig
- type ProbeDefinition
- func (pd *ProbeDefinition) GenerateProbes(host *mackerel.Host, client *mackerel.Client) []Probe
- func (pd *ProbeDefinition) RunHostProbes(ctx context.Context, client *Client, stats *StatsCollector) []HostMetric
- func (pd *ProbeDefinition) RunProbes(ctx context.Context, client *Client, chs *Channels, stats *StatsCollector, ...)
- func (pd *ProbeDefinition) RunServiceProbes(ctx context.Context, client *Client, stats *StatsCollector) []ServiceMetric
- func (pd *ProbeDefinition) Validate() error
- type ServiceMetric
- type ServiceMetrics
- type StatsCollector
- type TCPCmd
- type TCPProbe
- type TCPProbeConfig
- type VersionCmd
Constants ¶
const CustomPrefix = "custom."
Variables ¶
var ( DefaultGRPCTimeout = 10 * time.Second DefaultGRPCMetricKeyPrefix = "grpc" )
var ( DefaultHTTPTimeout = 15 * time.Second DefaultHTTPMetricKeyPrefix = "http" )
var ( MaxConcurrency = 100 MaxClientConcurrency = 5 PostMetricBufferLength = 100 ProbeInterval = 60 * time.Second MackerelAPIKey string MackerelOtelEndpoint = "otlp.mackerelio.com:4317" )
var ( DefaultPingTimeout = time.Second DefaultPingCount = 3 DefaultPingMetricName = "ping" )
var ( DefaultTCPTimeout = 5 * time.Second DefaultTCPMaxBytes = 32 * 1024 DefaultTCPMetricKeyPrefix = "tcp" )
var DefaultCommandTimeout = 15 * time.Second
var Version = "v0.10.4"
Functions ¶
func GetSSMParameter ¶ added in v0.5.1
func Main ¶ added in v0.8.0
Main is the main entry point that handles CLI parsing and command execution
func RunFirehoseEndpoint ¶ added in v0.4.0
RunFirehoseEndpoint runs Firehose HTTP endpoint server.
func SetupLogger ¶ added in v0.8.0
func SetupLogger(logLevel, logFormat string)
SetupLogger configures structured logging
Types ¶
type AgentCmd ¶ added in v0.8.0
type AgentCmd struct {
Config string `short:"c" help:"configuration file path or URL(http|s3)" env:"CONFIG"`
WithFirehoseEndpoint bool `help:"run with firehose HTTP endpoint server"`
Port int `help:"firehose HTTP endpoint listen port" default:"8080"`
}
AgentCmd represents the agent command that runs continuously
type AggregateDefinition ¶ added in v0.2.0
type AggregateDefinition struct {
Service exString `yaml:"service"`
Role exString `yaml:"role"`
Roles []exString `yaml:"roles"`
Statuses []exString `yaml:"statuses"`
Metrics []*MetricConfig `yaml:"metrics"`
}
type Attribute ¶ added in v0.7.0
func (*Attribute) Otel ¶ added in v0.7.0
func (a *Attribute) Otel() *otelattribute.Set
type BackupConfig ¶ added in v0.4.0
type BackupConfig struct {
FirehoseStreamName string `yaml:"firehose_stream_name"`
}
type CLI ¶ added in v0.8.0
type CLI struct {
LogLevel string `name:"log-level" help:"log level" default:"info" env:"LOG_LEVEL"`
LogFormat string `name:"log-format" help:"log format (text|json)" default:"text" enum:"text,json" env:"LOG_FORMAT"`
GopsEnabled bool `name:"gops" help:"enable gops agent" default:"false" env:"GOPS"`
Version VersionCmd `cmd:"" help:"Show version"`
Agent AgentCmd `cmd:"" help:"Run agent"`
Once OnceCmd `cmd:"" help:"Run once"`
Lambda LambdaCmd `cmd:"" help:"Run on AWS Lambda like once mode"`
Ping PingCmd `cmd:"" help:"Run ping probe"`
TCP TCPCmd `cmd:"" help:"Run TCP probe"`
HTTP HTTPCmd `cmd:"" help:"Run HTTP probe"`
GRPC GRPCCmd `cmd:"" help:"Run gRPC probe"`
FirehoseEndpoint FirehoseEndpointCmd `cmd:"" help:"Run Firehose HTTP endpoint"`
}
CLI defines the command line interface structure for Kong
type Channels ¶ added in v0.7.0
type Channels struct {
ServiceMetrics chan ServiceMetric
HostMetrics chan HostMetric
OtelMetrics chan Metric
Destination *DestinationConfig
}
func NewChannels ¶ added in v0.7.0
func NewChannels(dst *DestinationConfig) *Channels
func (*Channels) SendAggregatedMetric ¶ added in v0.7.0
func (ch *Channels) SendAggregatedMetric(m ServiceMetric)
func (*Channels) SendHostMetric ¶ added in v0.7.0
func (ch *Channels) SendHostMetric(m HostMetric)
func (*Channels) SendServiceMetric ¶ added in v0.7.0
func (ch *Channels) SendServiceMetric(m ServiceMetric)
type Client ¶ added in v0.4.0
type Client struct {
// contains filtered or unexported fields
}
func (*Client) PostHostMetricValues ¶ added in v0.4.0
func (*Client) PostServiceMetricValues ¶ added in v0.4.0
type CommandProbe ¶
type CommandProbe struct {
Command []string
Timeout time.Duration
GraphDefs bool
// contains filtered or unexported fields
}
func (*CommandProbe) GetGraphDefs ¶ added in v0.1.0
func (p *CommandProbe) GetGraphDefs() (*GraphsOutput, error)
func (*CommandProbe) MetricName ¶
func (p *CommandProbe) MetricName(name string) string
func (*CommandProbe) PostGraphDefs ¶ added in v0.1.0
func (p *CommandProbe) PostGraphDefs(client *mackerel.Client, pc *CommandProbeConfig) error
func (*CommandProbe) String ¶
func (p *CommandProbe) String() string
func (*CommandProbe) TempDir ¶ added in v0.3.5
func (p *CommandProbe) TempDir() string
type CommandProbeConfig ¶
type CommandProbeConfig struct {
RawCommand interface{} `yaml:"command"`
Timeout time.Duration `yaml:"timeout"`
GraphDefs bool `yaml:"graph_defs"`
Env map[string]string `yaml:"env"`
// contains filtered or unexported fields
}
func (*CommandProbeConfig) GenerateProbe ¶
type Config ¶
type Config struct {
Probes []*ProbeDefinition `yaml:"probes"`
PostProbedMetrics bool `yaml:"post_probed_metrics"`
Aggregates []*AggregateDefinition `yaml:"aggregates"`
PostAggregatedMetrics bool `yaml:"post_aggregated_metrics"`
ProbeOnly *bool `yaml:"probe_only"` // deprecated
Backup *BackupConfig `yaml:"backup"`
Destination *DestinationConfig `yaml:"destination"`
// contains filtered or unexported fields
}
type DestinationConfig ¶ added in v0.7.0
type DestinationConfig struct {
Mackerel *MackerelConfig `yaml:"mackerel"`
Otel *OtelConfig `yaml:"otel"`
}
type FirehoseEndpointCmd ¶ added in v0.8.0
type FirehoseEndpointCmd struct {
Port int `short:"p" help:"Listen port" default:"8080"`
}
FirehoseEndpointCmd represents the firehose endpoint command for HTTP server
type GRPCCmd ¶ added in v0.9.0
type GRPCCmd struct {
Address string `arg:"" help:"gRPC server address (host:port)" required:""`
GRPCService string `short:"s" name:"service" help:"gRPC service name for health check"`
Timeout time.Duration `short:"t" help:"Timeout"`
NoCheckCertificate bool `short:"k" help:"Do not check certificate"`
Metadata map[string]string `short:"m" name:"metadata" help:"gRPC metadata" placeholder:"key:value"`
HostID string `short:"i" help:"Mackerel host ID"`
TLS bool `help:"Use TLS"`
}
GRPCCmd represents the gRPC command for standalone gRPC probe
type GRPCProbe ¶ added in v0.9.0
type GRPCProbe struct {
Address string
GRPCService string
Timeout time.Duration
TLS bool
NoCheckCertificate bool
Metadata map[string]string
// contains filtered or unexported fields
}
func (*GRPCProbe) MetricName ¶ added in v0.9.0
type GRPCProbeConfig ¶ added in v0.9.0
type GRPCProbeConfig struct {
Address string `yaml:"address"`
GRPCService string `yaml:"grpc_service"`
Timeout time.Duration `yaml:"timeout"`
TLS bool `yaml:"tls"`
NoCheckCertificate bool `yaml:"no_check_certificate"`
Metadata map[string]string `yaml:"metadata"`
MetricKeyPrefix string `yaml:"metric_key_prefix"`
}
func (*GRPCProbeConfig) GenerateProbe ¶ added in v0.9.0
func (pc *GRPCProbeConfig) GenerateProbe(host *mackerel.Host) (Probe, error)
type Graph ¶ added in v0.1.0
type Graph struct {
Label string `json:"label"`
Unit string `json:"unit"`
Metrics []GraphDefsMetric `json:"metrics"`
}
type GraphDefsMetric ¶ added in v0.1.0
type GraphsOutput ¶ added in v0.1.0
type HTTPCmd ¶ added in v0.8.0
type HTTPCmd struct {
URL string `arg:"" help:"URL" required:""`
Method string `short:"m" help:"Request method" default:"GET"`
Body string `short:"b" help:"Request body"`
ExpectPattern string `short:"e" name:"expect" help:"Regexp pattern to expect in server response"`
Timeout time.Duration `short:"t" help:"Timeout"`
NoCheckCertificate bool `short:"k" help:"Do not check certificate"`
Headers map[string]string `short:"H" name:"header" help:"Request headers" placeholder:"Header: Value"`
HostID string `short:"i" help:"Mackerel host ID"`
}
HTTPCmd represents the HTTP command for standalone HTTP probe
type HTTPProbe ¶
type HTTPProbe struct {
URL string
Method string
Headers map[string]string
Body string
ExpectPattern *regexp.Regexp
Timeout time.Duration
NoCheckCertificate bool
// contains filtered or unexported fields
}
func (*HTTPProbe) MetricName ¶
type HTTPProbeConfig ¶
type HTTPProbeConfig struct {
URL string `yaml:"url"`
Method string `yaml:"method"`
Headers map[string]string `yaml:"headers"`
Body string `yaml:"body"`
ExpectPattern string `yaml:"expect_pattern"`
Timeout time.Duration `yaml:"timeout"`
NoCheckCertificate bool `yaml:"no_check_certificate"`
MetricKeyPrefix string `yaml:"metric_key_prefix"`
}
func (*HTTPProbeConfig) GenerateProbe ¶
func (pc *HTTPProbeConfig) GenerateProbe(host *mackerel.Host) (Probe, error)
type HostMetric ¶ added in v0.2.0
func (HostMetric) HostMetricValue ¶ added in v0.2.0
func (m HostMetric) HostMetricValue() *mackerel.HostMetricValue
func (HostMetric) String ¶ added in v0.2.0
func (m HostMetric) String() string
type HostMetrics ¶ added in v0.2.0
type HostMetrics []HostMetric
func (HostMetrics) String ¶ added in v0.2.0
func (ms HostMetrics) String() string
type LambdaCmd ¶ added in v0.8.0
type LambdaCmd struct {
Config string `short:"c" help:"configuration file path or URL(http|s3)" env:"CONFIG"`
}
LambdaCmd represents the lambda command that runs on AWS Lambda
type MackerelConfig ¶ added in v0.7.0
type MackerelConfig struct {
Enabled bool `yaml:"enabled"`
}
type Metric ¶
func (Metric) HostMetric ¶ added in v0.6.0
func (m Metric) HostMetric(hostID string) HostMetric
func (Metric) Otel ¶ added in v0.7.0
func (m Metric) Otel() otelmetricdata.Metrics
func (Metric) OtelString ¶ added in v0.7.0
func (Metric) ServiceMetric ¶ added in v0.6.0
func (m Metric) ServiceMetric(service string) ServiceMetric
type MetricConfig ¶ added in v0.2.0
type MetricConfig struct {
Name exString `yaml:"name"`
Outputs []*OutputConfig `yaml:"outputs"`
}
type OnceCmd ¶ added in v0.8.0
type OnceCmd struct {
Config string `short:"c" help:"configuration file path or URL(http|s3)" env:"CONFIG"`
}
OnceCmd represents the once command that runs probes once and exits
type OtelConfig ¶ added in v0.7.0
type OtelMetric ¶ added in v0.7.0
type OtelMetric interface {
ServiceMetric | HostMetric
}
type OutputConfig ¶ added in v0.2.0
type OutputConfig struct {
Func exString `yaml:"func"`
Name exString `yaml:"name"`
EmitZero bool `yaml:"emit_zero"`
// contains filtered or unexported fields
}
type PingCmd ¶ added in v0.8.0
type PingCmd struct {
Address string `arg:"" help:"Hostname or IP address" required:""`
Count int `short:"c" help:"Iteration count"`
Timeout time.Duration `short:"t" help:"Timeout to ping response"`
HostID string `short:"i" help:"Mackerel host ID"`
}
PingCmd represents the ping command for standalone ping probe
type PingProbe ¶
type PingProbe struct {
Address string
Count int
Timeout time.Duration
// contains filtered or unexported fields
}
func (*PingProbe) MetricName ¶
type PingProbeConfig ¶
type PingProbeConfig struct {
Address string `yaml:"address"`
Count int `yaml:"count"`
Timeout time.Duration `yaml:"timeout"`
MetricKeyPrefix string `yaml:"metric_key_prefix"`
}
func (*PingProbeConfig) GenerateProbe ¶
func (pc *PingProbeConfig) GenerateProbe(host *mackerel.Host) (Probe, error)
type ProbeDefinition ¶
type ProbeDefinition struct {
Service exString `yaml:"service"`
Role exString `yaml:"role"`
Roles []exString `yaml:"roles"`
Statuses []exString `yaml:"statuses"`
IsServiceMetric bool `yaml:"service_metric"`
Ping *PingProbeConfig `yaml:"ping"`
TCP *TCPProbeConfig `yaml:"tcp"`
HTTP *HTTPProbeConfig `yaml:"http"`
Command *CommandProbeConfig `yaml:"command"`
GRPC *GRPCProbeConfig `yaml:"grpc"`
Attributes map[string]string `yaml:"attributes"`
}
func (*ProbeDefinition) GenerateProbes ¶
func (*ProbeDefinition) RunHostProbes ¶ added in v0.6.0
func (pd *ProbeDefinition) RunHostProbes(ctx context.Context, client *Client, stats *StatsCollector) []HostMetric
func (*ProbeDefinition) RunProbes ¶ added in v0.6.0
func (pd *ProbeDefinition) RunProbes(ctx context.Context, client *Client, chs *Channels, stats *StatsCollector, wg *sync.WaitGroup)
func (*ProbeDefinition) RunServiceProbes ¶ added in v0.6.0
func (pd *ProbeDefinition) RunServiceProbes(ctx context.Context, client *Client, stats *StatsCollector) []ServiceMetric
func (*ProbeDefinition) Validate ¶ added in v0.6.0
func (pd *ProbeDefinition) Validate() error
type ServiceMetric ¶ added in v0.2.0
func (ServiceMetric) MetricValue ¶ added in v0.2.0
func (m ServiceMetric) MetricValue() *mackerel.MetricValue
func (ServiceMetric) String ¶ added in v0.2.0
func (m ServiceMetric) String() string
type ServiceMetrics ¶ added in v0.2.0
type ServiceMetrics []ServiceMetric
func (ServiceMetrics) String ¶ added in v0.2.0
func (ms ServiceMetrics) String() string
type StatsCollector ¶ added in v0.8.0
type StatsCollector struct {
// contains filtered or unexported fields
}
StatsCollector manages maprobe internal metrics
func NewStatsCollector ¶ added in v0.8.0
func NewStatsCollector(provider *otelsdkmetric.MeterProvider, attrs map[string]string) (*StatsCollector, error)
NewStatsCollector creates a new StatsCollector
func (*StatsCollector) RecordMetricCollected ¶ added in v0.8.0
func (s *StatsCollector) RecordMetricCollected(ctx context.Context)
RecordMetricCollected records that a metric was collected
func (*StatsCollector) RecordProbeExecution ¶ added in v0.8.0
func (s *StatsCollector) RecordProbeExecution(ctx context.Context, probe Probe, probeErr error)
RecordProbeExecution records a probe execution result
func (*StatsCollector) SetProbeConfigs ¶ added in v0.8.0
func (s *StatsCollector) SetProbeConfigs(count int64)
SetProbeConfigs sets the number of configured probes
func (*StatsCollector) SetTargetCounts ¶ added in v0.8.0
func (s *StatsCollector) SetTargetCounts(hosts, services int64)
SetTargetCounts sets the number of target hosts and services
type TCPCmd ¶ added in v0.8.0
type TCPCmd struct {
Host string `arg:"" help:"Hostname or IP address" required:""`
Port string `arg:"" help:"Port number" required:""`
Send string `short:"s" help:"String to send to the server"`
Quit string `short:"q" help:"String to send server to initiate a clean close of the connection"`
Timeout time.Duration `short:"t" help:"Timeout"`
ExpectPattern string `short:"e" name:"expect" help:"Regexp pattern to expect in server response"`
NoCheckCertificate bool `short:"k" help:"Do not check certificate"`
HostID string `short:"i" help:"Mackerel host ID"`
TLS bool `help:"Use TLS"`
}
TCPCmd represents the TCP command for standalone TCP probe
type TCPProbe ¶
type TCPProbe struct {
Host string
Port string
Send string
Quit string
MaxBytes int
ExpectPattern *regexp.Regexp
Timeout time.Duration
TLS bool
NoCheckCertificate bool
// contains filtered or unexported fields
}
func (*TCPProbe) MetricName ¶
type TCPProbeConfig ¶
type TCPProbeConfig struct {
Host string `yaml:"host"`
Port string `yaml:"port"`
Timeout time.Duration `yaml:"timeout"`
Send string `yaml:"send"`
Quit string `yaml:"quiet"`
MaxBytes int `yaml:"max_bytes"`
ExpectPattern string `yaml:"expect_pattern"`
TLS bool `yaml:"tls"`
NoCheckCertificate bool `yaml:"no_check_certificate"`
MetricKeyPrefix string `yaml:"metric_key_prefix"`
}
func (*TCPProbeConfig) GenerateProbe ¶
func (pc *TCPProbeConfig) GenerateProbe(host *mackerel.Host) (Probe, error)
type VersionCmd ¶ added in v0.8.0
type VersionCmd struct{}
VersionCmd represents the version command