123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /*
- Copyright 2018 The Kubernetes Authors.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- package collectors
- import (
- "github.com/prometheus/client_golang/prometheus"
- "k8s.io/klog"
- statsapi "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
- )
- var (
- descLogSize = prometheus.NewDesc(
- "kubelet_container_log_filesystem_used_bytes",
- "Bytes used by the container's logs on the filesystem.",
- []string{
- "namespace",
- "pod",
- "container",
- }, nil,
- )
- )
- type logMetricsCollector struct {
- podStats func() ([]statsapi.PodStats, error)
- }
- // NewLogMetricsCollector implements the prometheus.Collector interface and
- // exposes metrics about container's log volume size.
- func NewLogMetricsCollector(podStats func() ([]statsapi.PodStats, error)) prometheus.Collector {
- return &logMetricsCollector{
- podStats: podStats,
- }
- }
- // Describe implements the prometheus.Collector interface.
- func (c *logMetricsCollector) Describe(ch chan<- *prometheus.Desc) {
- ch <- descLogSize
- }
- // Collect implements the prometheus.Collector interface.
- func (c *logMetricsCollector) Collect(ch chan<- prometheus.Metric) {
- podStats, err := c.podStats()
- if err != nil {
- klog.Errorf("failed to get pod stats: %v", err)
- return
- }
- for _, ps := range podStats {
- for _, c := range ps.Containers {
- if c.Logs != nil && c.Logs.UsedBytes != nil {
- ch <- prometheus.MustNewConstMetric(
- descLogSize,
- prometheus.GaugeValue,
- float64(*c.Logs.UsedBytes),
- ps.PodRef.Namespace,
- ps.PodRef.Name,
- c.Name,
- )
- }
- }
- }
- }
|