Skip to content

Commit

Permalink
feat(metrics): add service metrics
Browse files Browse the repository at this point in the history
This adds the following metrics from kube-state-metrics:
- kube_service_info
- kube_service_spec_external_ip
- kube_service_spec_type
- kube_service_status_load_balancer_ingress

This should help answer questions like:
- what is the type of a given service?
- what is the cluster IP of a given service?
- what is the external IP of a given service?
  • Loading branch information
andrzej-stencel committed Jun 13, 2022
1 parent b9da33b commit 88f9caa
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 20 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

- feat(metrics): add service metrics [#2367]
- fix(metrics): remove outdated API calls [#2372]

[#2367]: https://github.com/SumoLogic/sumologic-kubernetes-collection/pull/2367
[#2372]: https://github.com/SumoLogic/sumologic-kubernetes-collection/pull/2372
[Unreleased]: https://github.com/SumoLogic/sumologic-kubernetes-collection/compare/v2.10.0...main

Expand Down
4 changes: 4 additions & 0 deletions deploy/docs/scraped_metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,10 @@ The following table contains information about metrics scraped by Sumo Logic's P
| `kube_pod_container_status_waiting_reason` | kube-state-metrics | yes |
| `kube_pod_status_phase` | kube-state-metrics | yes |
| `kube_pod_info` | kube-state-metrics | no |
| `kube_service_info` | kube-state-metrics | yes |
| `kube_service_spec_external_ip` | kube-state-metrics | yes |
| `kube_service_spec_type` | kube-state-metrics | yes |
| `kube_service_status_load_balancer_ingress` | kube-state-metrics | yes |
| `node_cpu_seconds_total` | node-exporter | yes |
| `node_load1` | node-exporter | yes |
| `node_load5` | node-exporter | yes |
Expand Down
30 changes: 19 additions & 11 deletions deploy/helm/sumologic/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1378,7 +1378,7 @@ kube-prometheus-stack:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## apiserver_request_count
## apiserver_request_total
## apiserver_request_duration_seconds_count
Expand All @@ -1401,7 +1401,7 @@ kube-prometheus-stack:
probes: false
## Enable scraping /metrics/resource/v1alpha1 from kubelet's service
resource: false
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## kubelet metrics:
## kubelet_docker_operations_errors
## kubelet_docker_operations_errors_total
Expand All @@ -1425,7 +1425,7 @@ kube-prometheus-stack:
sourceLabels: [__name__]
- action: labeldrop
regex: id
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## cadvisor container metrics
## container_cpu_usage_seconds_total
## container_fs_limit_bytes
Expand All @@ -1452,7 +1452,7 @@ kube-prometheus-stack:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## controller manager metrics
## https://kubernetes.io/docs/concepts/cluster-administration/monitoring/#kube-controller-manager-metrics
## e.g.
Expand All @@ -1467,7 +1467,7 @@ kube-prometheus-stack:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## coredns:
## coredns_cache_size
## coredns_cache_entries
Expand All @@ -1492,7 +1492,7 @@ kube-prometheus-stack:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## etcd_request_cache_get_duration_seconds_count
## etcd_request_cache_get_duration_seconds_sum
## etcd_request_cache_add_duration_seconds_count
Expand Down Expand Up @@ -1532,7 +1532,7 @@ kube-prometheus-stack:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## scheduler metrics_latency_microseconds
## scheduler_e2e_scheduling_duration_seconds_bucket
## scheduler_e2e_scheduling_duration_seconds_count
Expand All @@ -1554,7 +1554,7 @@ kube-prometheus-stack:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## kube_daemonset_status_current_number_scheduled
## kube_daemonset_status_desired_number_scheduled
## kube_daemonset_status_number_misscheduled
Expand Down Expand Up @@ -1585,15 +1585,19 @@ kube-prometheus-stack:
## kube_pod_container_status_waiting_reason
## kube_pod_status_phase
## kube_pod_info
## kube_service_info
## kube_service_spec_external_ip
## kube_service_spec_type
## kube_service_status_load_balancer_ingress
metricRelabelings:
- action: keep
regex: (?:kube_statefulset_status_observed_generation|kube_statefulset_status_replicas|kube_statefulset_replicas|kube_statefulset_metadata_generation|kube_daemonset_status_current_number_scheduled|kube_daemonset_status_desired_number_scheduled|kube_daemonset_status_number_misscheduled|kube_daemonset_status_number_unavailable|kube_deployment_spec_replicas|kube_deployment_status_replicas_available|kube_deployment_status_replicas_unavailable|kube_node_info|kube_node_status_allocatable|kube_node_status_capacity|kube_node_status_condition|kube_hpa_spec_max_replicas|kube_hpa_spec_min_replicas|kube_hpa_status_(condition|(current|desired)_replicas)|kube_pod_container_info|kube_pod_container_resource_requests|kube_pod_container_resource_limits|kube_pod_container_status_ready|kube_pod_container_status_terminated_reason|kube_pod_container_status_waiting_reason|kube_pod_container_status_restarts_total|kube_pod_status_phase|kube_pod_info)
regex: (?:kube_statefulset_status_observed_generation|kube_statefulset_status_replicas|kube_statefulset_replicas|kube_statefulset_metadata_generation|kube_daemonset_status_current_number_scheduled|kube_daemonset_status_desired_number_scheduled|kube_daemonset_status_number_misscheduled|kube_daemonset_status_number_unavailable|kube_deployment_spec_replicas|kube_deployment_status_replicas_available|kube_deployment_status_replicas_unavailable|kube_node_info|kube_node_status_allocatable|kube_node_status_capacity|kube_node_status_condition|kube_hpa_spec_max_replicas|kube_hpa_spec_min_replicas|kube_hpa_status_(condition|(current|desired)_replicas)|kube_pod_container_info|kube_pod_container_resource_requests|kube_pod_container_resource_limits|kube_pod_container_status_ready|kube_pod_container_status_terminated_reason|kube_pod_container_status_waiting_reason|kube_pod_container_status_restarts_total|kube_pod_status_phase|kube_pod_info|kube_service_info|kube_service_spec_external_ip|kube_service_spec_type|kube_service_status_load_balancer_ingress)
sourceLabels: [ __name__]
nodeExporter:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## node exporter metrics
## node_cpu_seconds_total
## node_load1
Expand Down Expand Up @@ -1925,11 +1929,15 @@ kube-prometheus-stack:
## kube_hpa_status_condition
## kube_hpa_status_current_replicas
## kube_hpa_status_desired_replicas
## kube_service_info
## kube_service_spec_external_ip
## kube_service_spec_type
## kube_service_status_load_balancer_ingress
- url: http://$(FLUENTD_METRICS_SVC).$(NAMESPACE).svc.cluster.local:9888/prometheus.metrics.state
remoteTimeout: 5s
writeRelabelConfigs:
- action: keep
regex: kube-state-metrics;(?:kube_statefulset_status_observed_generation|kube_statefulset_status_replicas|kube_statefulset_replicas|kube_statefulset_metadata_generation|kube_daemonset_status_current_number_scheduled|kube_daemonset_status_desired_number_scheduled|kube_daemonset_status_number_misscheduled|kube_daemonset_status_number_unavailable|kube_deployment_spec_replicas|kube_deployment_status_replicas_available|kube_deployment_status_replicas_unavailable|kube_node_info|kube_node_status_allocatable|kube_node_status_capacity|kube_node_status_condition|kube_hpa_spec_max_replicas|kube_hpa_spec_min_replicas|kube_hpa_status_(condition|(current|desired)_replicas))
regex: kube-state-metrics;(?:kube_statefulset_status_observed_generation|kube_statefulset_status_replicas|kube_statefulset_replicas|kube_statefulset_metadata_generation|kube_daemonset_status_current_number_scheduled|kube_daemonset_status_desired_number_scheduled|kube_daemonset_status_number_misscheduled|kube_daemonset_status_number_unavailable|kube_deployment_spec_replicas|kube_deployment_status_replicas_available|kube_deployment_status_replicas_unavailable|kube_node_info|kube_node_status_allocatable|kube_node_status_capacity|kube_node_status_condition|kube_hpa_spec_max_replicas|kube_hpa_spec_min_replicas|kube_hpa_status_(condition|(current|desired)_replicas)|kube_service_info|kube_service_spec_external_ip|kube_service_spec_type|kube_service_status_load_balancer_ingress)
sourceLabels: [job, __name__]
- action: labelmap
regex: (pod|service)
Expand Down
18 changes: 9 additions & 9 deletions examples/kube_prometheus_stack/values-prometheus.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ kubeApiServer:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## apiserver_request_count
## apiserver_request_total
## apiserver_request_duration_seconds_count
Expand All @@ -237,7 +237,7 @@ kubelet:
probes: false
## Enable scraping /metrics/resource/v1alpha1 from kubelet's service
resource: false
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## kubelet metrics:
## kubelet_docker_operations_errors
## kubelet_docker_operations_errors_total
Expand All @@ -261,7 +261,7 @@ kubelet:
sourceLabels: [__name__]
- action: labeldrop
regex: id
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## cadvisor container metrics
## container_cpu_usage_seconds_total
## container_fs_limit_bytes
Expand All @@ -288,7 +288,7 @@ kubeControllerManager:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## controller manager metrics
## https://kubernetes.io/docs/concepts/cluster-administration/monitoring/#kube-controller-manager-metrics
## e.g.
Expand All @@ -303,7 +303,7 @@ coreDns:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## coredns:
## coredns_cache_size
## coredns_cache_entries
Expand All @@ -328,7 +328,7 @@ kubeEtcd:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## etcd_request_cache_get_duration_seconds_count
## etcd_request_cache_get_duration_seconds_sum
## etcd_request_cache_add_duration_seconds_count
Expand Down Expand Up @@ -368,7 +368,7 @@ kubeScheduler:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## scheduler metrics_latency_microseconds
## scheduler_e2e_scheduling_duration_seconds_bucket
## scheduler_e2e_scheduling_duration_seconds_count
Expand All @@ -390,7 +390,7 @@ kubeStateMetrics:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## kube_daemonset_status_current_number_scheduled
## kube_daemonset_status_desired_number_scheduled
## kube_daemonset_status_number_misscheduled
Expand Down Expand Up @@ -429,7 +429,7 @@ nodeExporter:
serviceMonitor:
## Scrape interval. If not set, the Prometheus default scrape interval is used.
interval:
## see docs/scrape_metrics.md
## see docs/scraped_metrics.md
## node exporter metrics
## node_cpu_seconds_total
## node_load1
Expand Down

0 comments on commit 88f9caa

Please sign in to comment.