...

Package metrics

import "k8s.io/kubernetes/pkg/proxy/metrics"
Overview
Index

Overview ▾

Variables

var (
    // SyncProxyRulesLatency is the latency of one round of kube-proxy syncing proxy
    // rules. (With the iptables proxy, this includes both full and partial syncs.)
    SyncProxyRulesLatency = metrics.NewHistogram(
        &metrics.HistogramOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_proxy_rules_duration_seconds",
            Help:           "SyncProxyRules latency in seconds",
            Buckets:        metrics.ExponentialBuckets(0.001, 2, 15),
            StabilityLevel: metrics.ALPHA,
        },
    )

    // SyncFullProxyRulesLatency is the latency of one round of full rule syncing.
    SyncFullProxyRulesLatency = metrics.NewHistogram(
        &metrics.HistogramOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_full_proxy_rules_duration_seconds",
            Help:           "SyncProxyRules latency in seconds for full resyncs",
            Buckets:        metrics.ExponentialBuckets(0.001, 2, 15),
            StabilityLevel: metrics.ALPHA,
        },
    )

    // SyncPartialProxyRulesLatency is the latency of one round of partial rule syncing.
    SyncPartialProxyRulesLatency = metrics.NewHistogram(
        &metrics.HistogramOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_partial_proxy_rules_duration_seconds",
            Help:           "SyncProxyRules latency in seconds for partial resyncs",
            Buckets:        metrics.ExponentialBuckets(0.001, 2, 15),
            StabilityLevel: metrics.ALPHA,
        },
    )

    // SyncProxyRulesLastTimestamp is the timestamp proxy rules were last
    // successfully synced.
    SyncProxyRulesLastTimestamp = metrics.NewGauge(
        &metrics.GaugeOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_proxy_rules_last_timestamp_seconds",
            Help:           "The last time proxy rules were successfully synced",
            StabilityLevel: metrics.ALPHA,
        },
    )

    // NetworkProgrammingLatency is defined as the time it took to program the network - from the time
    // the service or pod has changed to the time the change was propagated and the proper kube-proxy
    // rules were synced. Exported for each endpoints object that were part of the rules sync.
    // See https://github.com/kubernetes/community/blob/master/sig-scalability/slos/network_programming_latency.md
    // Note that the metrics is partially based on the time exported by the endpoints controller on
    // the master machine. The measurement may be inaccurate if there is a clock drift between the
    // node and master machine.
    NetworkProgrammingLatency = metrics.NewHistogram(
        &metrics.HistogramOpts{
            Subsystem: kubeProxySubsystem,
            Name:      "network_programming_duration_seconds",
            Help:      "In Cluster Network Programming Latency in seconds",
            Buckets: metrics.MergeBuckets(
                metrics.LinearBuckets(0.25, 0.25, 2),
                metrics.LinearBuckets(1, 1, 59),
                metrics.LinearBuckets(60, 5, 12),
                metrics.LinearBuckets(120, 30, 7),
            ),
            StabilityLevel: metrics.ALPHA,
        },
    )

    // EndpointChangesPending is the number of pending endpoint changes that
    // have not yet been synced to the proxy.
    EndpointChangesPending = metrics.NewGauge(
        &metrics.GaugeOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_proxy_rules_endpoint_changes_pending",
            Help:           "Pending proxy rules Endpoint changes",
            StabilityLevel: metrics.ALPHA,
        },
    )

    // EndpointChangesTotal is the number of endpoint changes that the proxy
    // has seen.
    EndpointChangesTotal = metrics.NewCounter(
        &metrics.CounterOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_proxy_rules_endpoint_changes_total",
            Help:           "Cumulative proxy rules Endpoint changes",
            StabilityLevel: metrics.ALPHA,
        },
    )

    // ServiceChangesPending is the number of pending service changes that
    // have not yet been synced to the proxy.
    ServiceChangesPending = metrics.NewGauge(
        &metrics.GaugeOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_proxy_rules_service_changes_pending",
            Help:           "Pending proxy rules Service changes",
            StabilityLevel: metrics.ALPHA,
        },
    )

    // ServiceChangesTotal is the number of service changes that the proxy has
    // seen.
    ServiceChangesTotal = metrics.NewCounter(
        &metrics.CounterOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_proxy_rules_service_changes_total",
            Help:           "Cumulative proxy rules Service changes",
            StabilityLevel: metrics.ALPHA,
        },
    )

    // IptablesRestoreFailuresTotal is the number of iptables restore failures that the proxy has
    // seen.
    IptablesRestoreFailuresTotal = metrics.NewCounter(
        &metrics.CounterOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_proxy_rules_iptables_restore_failures_total",
            Help:           "Cumulative proxy iptables restore failures",
            StabilityLevel: metrics.ALPHA,
        },
    )

    // IptablesPartialRestoreFailuresTotal is the number of iptables *partial* restore
    // failures (resulting in a fall back to a full restore) that the proxy has seen.
    IptablesPartialRestoreFailuresTotal = metrics.NewCounter(
        &metrics.CounterOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_proxy_rules_iptables_partial_restore_failures_total",
            Help:           "Cumulative proxy iptables partial restore failures",
            StabilityLevel: metrics.ALPHA,
        },
    )

    // IptablesRulesTotal is the total number of iptables rules that the iptables
    // proxy has installed.
    IptablesRulesTotal = metrics.NewGaugeVec(
        &metrics.GaugeOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_proxy_rules_iptables_total",
            Help:           "Total number of iptables rules owned by kube-proxy",
            StabilityLevel: metrics.ALPHA,
        },
        []string{"table"},
    )

    // IptablesRulesLastSync is the number of iptables rules that the iptables proxy
    // updated in the last sync.
    IptablesRulesLastSync = metrics.NewGaugeVec(
        &metrics.GaugeOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_proxy_rules_iptables_last",
            Help:           "Number of iptables rules written by kube-proxy in last sync",
            StabilityLevel: metrics.ALPHA,
        },
        []string{"table"},
    )

    // ProxyHealthzTotal is the number of returned HTTP Status for each
    // healthz probe.
    ProxyHealthzTotal = metrics.NewCounterVec(
        &metrics.CounterOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "proxy_healthz_total",
            Help:           "Cumulative proxy healthz HTTP status",
            StabilityLevel: metrics.ALPHA,
        },
        []string{"code"},
    )

    // ProxyLivezTotal is the number of returned HTTP Status for each
    // livez probe.
    ProxyLivezTotal = metrics.NewCounterVec(
        &metrics.CounterOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "proxy_livez_total",
            Help:           "Cumulative proxy livez HTTP status",
            StabilityLevel: metrics.ALPHA,
        },
        []string{"code"},
    )

    // SyncProxyRulesLastQueuedTimestamp is the last time a proxy sync was
    // requested. If this is much larger than
    // kubeproxy_sync_proxy_rules_last_timestamp_seconds, then something is hung.
    SyncProxyRulesLastQueuedTimestamp = metrics.NewGauge(
        &metrics.GaugeOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_proxy_rules_last_queued_timestamp_seconds",
            Help:           "The last time a sync of proxy rules was queued",
            StabilityLevel: metrics.ALPHA,
        },
    )

    // SyncProxyRulesNoLocalEndpointsTotal is the total number of rules that do
    // not have an available endpoint. This can be caused by an internal
    // traffic policy with no available local workload.
    SyncProxyRulesNoLocalEndpointsTotal = metrics.NewGaugeVec(
        &metrics.GaugeOpts{
            Subsystem:      kubeProxySubsystem,
            Name:           "sync_proxy_rules_no_local_endpoints_total",
            Help:           "Number of services with a Local traffic policy and no endpoints",
            StabilityLevel: metrics.ALPHA,
        },
        []string{"traffic_policy"},
    )
)

func RegisterMetrics

func RegisterMetrics()

RegisterMetrics registers kube-proxy metrics.

func SinceInSeconds

func SinceInSeconds(start time.Time) float64

SinceInSeconds gets the time since the specified start in seconds.