Kubernetes メトリクス
このページでは、「sumologic-kubernetes-collection Deployment Guide (デプロイ ガイド)」で説明されているコレクション ソリューションをデプロイするときに収集される Kubernetes メトリクスの一覧を示します。
収集するメトリクスは、overrides.xml ファイルで指定します。デプロイ ガイドには、メトリクスのフィルタリングと再ラベル指定に関する情報、およびカスタム Prometheus メトリクスを Sumo Logic に送信する方法が記載されています。
Kube 状態メトリクス (kube-state-metrics)
kube-state-metrics は、Kubernetes API サーバをリッスンし、デプロイ、ノード、ポッドなどのオブジェクトの状態に関するメトリクスを生成するサービスです。
kube-state-metrics は Helm を使用してデプロイできます。Sumo Logic の Helm グラフをインストールするときには、考慮が必要な依存関係があります。重複を避けるために、単独の FluentD インスタンスを使用してメトリクスを収集します。
kube-state-metrics は、GKE、EKS、AKS などの管理された Kubernetes 環境で使用するか、または自分で管理している Kubnetes デプロイで使用できます。
収集する kube-state-metrics メトリクス
このセクションでは、収集することが望ましいメトリクスを示します。すべての kube-state-metrics およびメトリクスの説明については、https://github.com/kubernetes/kube-s...ee/master/docs を参照してください。
- デーモンセット
- kube_daemonset_status_current_number_scheduled
- kube_daemonset_status_desired_number_scheduled
- kube_daemonset_status_number_misscheduled
- kube_daemonset_status_number_unavailable
- kube_daemonset_metadata_generation
- デプロイ
- kube_deployment_metadata_generation
- kube_deployment_spec_paused
- kube_deployment_spec_replicas
- kube_deployment_spec_strategy_rollingupdate_max_unavailable
- kube_deployment_status_observed_generation
- kube_deployment_status_replicas_available
- kube_deployment_status_replicas_unavailable
- ノード
- kube_node_info
- kube_node_spec_unschedulable
- kube_node_status_allocatable
- kube_node_status_capacity
- kube_node_status_condition
- ポッド
- 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_status_phase
kube-state-metrics の表示
Prometheus 名前空間のクラスタにPrometheus Operator をインストールします。
次のコマンドを実行して、Kubernetes API サーバへのプロキシを開始します。
kubectl proxy
メトリクスを表示するには、ブラウザを次の URL で開きます。
http://127.0.0.1:8001/api/v1/namespaces/prometheus/services/kube-prometheus-exporter-kube-state:80/proxy/metrics
Controller Manager (kube-controller-manager) メトリクス
Controller Manager のメトリクスによって、Controller Manager の重要なパフォーマンスと健全性を把握できます。
Controller Manager と通信するには、サービスをデプロイする必要があります。このデプロイは Prometheus Operator によって行われます。
kube-controller-manager メトリクスは、自分で管理している Kubnetes デプロイで収集できます。kube-controller-manager は、GKE、EKS、AKS などの管理された Kubernetes 環境では収集できません。
収集する kube-controller-manager メトリクス
cloudprovider_*_api_request_duration_seconds*
kube-controller-manager メトリクスの表示
Prometheus 名前空間のクラスタにPrometheus Operator をインストールします。
次のコマンドを実行して、Kubernetes API サーバへのプロキシを開始します。
kubectl proxy
メトリクスを表示するには、ブラウザを次の URL で開きます。
http://127.0.0.1:8001/api/v1/namespaces/kube-system/services/kube-prometheus-exporter-kube-controller-manager:10252/proxy/metrics
Scheduler (kube-scheduler) メトリクス
Scheduler と通信するには、サービスをデプロイする必要があります。このデプロイは Prometheus Operator によって行われます。
kube-scheduler メトリクスは、自分で管理している Kubnetes デプロイで収集できます。kube-scheduler メトリクスは、GKE、EKS、AKS などの管理された Kubernetes 環境では収集できません。
収集する kube-scheduler メトリクス
- scheduler_e2e_scheduling_latency_microseconds*
- scheduler_binding_latency_microseconds*
- scheduler_scheduling_algorithm_latency_microseconds*
kube-scheduler メトリクスの表示
Prometheus 名前空間のクラスタに Prometheus Operator をインストールします。
次のコマンドを実行して、Kubernetes API サーバへのプロキシを開始します。
kubectl proxy
メトリクスを表示するには、ブラウザを次の URL で開きます。
http://127.0.0.1:8001/api/v1/namespaces/kube-system/services/kube-prometheus-exporter-kube-controller-manager:10252/proxy/metrics
API サーバ (apiserver) メトリクス
apiserver メトリクスは、GKE、EKS、AKS などの管理された Kubernetes 環境で収集するか、または自分で管理している Kubnetes デプロイで収集できます。
重複を避けるために、単一のワーカーでメトリクスを収集する必要があります。
- 収集する apiserver メトリクス
- apiserver_request_count
- apiserver_request_latencies*
- etcd_request_cache_get_latencies_summary*
- etcd_request_cache_add_latencies_summary*
- etcd_helper_cache_hit_count
- etcd_helper_cache_miss_count
apiserver メトリクスの表示
Prometheus 名前空間のクラスタにPrometheus Operator をインストールします。
次のコマンドを実行して、Kubernetes API サーバへのプロキシを開始します。
kubectl proxy
メトリクスを表示するには、ブラウザを次の URL で開きます。
http://127.0.0.1:8001/metrics
Kubelet (kubelet) メトリクス
Kubelet は、Kubernetes マスターと Kubernetes ノード間のブリッジとして機能します。このメトリクスはマシンで実行されているポッドとコンテナを管理します。
kubelet は、GKE、EKS、AKS などの管理された Kubernetes 環境で収集するか、または自分で管理している Kubnetes デプロイで収集できます。
クラスター内の各ノードから収集します。
収集するメトリクス
- kubelet_docker_operations_errors
- kubelet_docker_operations_latency_microseconds*
- kubelet_running_container_count
- kubelet_running_pod_count
- kubelet_runtime_operations_latency_microseconds*
- etcd_helper_cache_hit_count
- etcd_helper_cache_miss_count
kubelet メトリクスの表示
Prometheus 名前空間のクラスタにPrometheus Operator をインストールします。
次のコマンドを実行して、Kubernetes API サーバへのプロキシを開始します。
kubectl proxy
メトリクスを表示するには、ブラウザを次の URL で開きます。
http://127.0.0.1:8001/api/v1/nodes/NODE_NAME/proxy/metrics
ここで、NODE_NAME
は、ノードの名前です。例:
http://127.0.0.1:8001/api/v1/nodes/ip-172-20-114-48.us-west-2.compute.internal/proxy/metrics
cAdvisor (kubelet) メトリクス
cAdvisor は、コンテナ リソースの使用量およびパフォーマンスのオープン ソース分析エージェントです。
CAdvisor メトリクスは、GKE、EKS、AKS などの管理された Kubernetes 環境で収集するか、または自分で管理している Kubnetes デプロイで収集できます。
デフォルトでは、クラスタ内の各ノードから収集され、container_name が空または POD のレコードが除外されます。
収集するメトリクス
- container_cpu_load_average_10s
- container_cpu_system_seconds_total
- container_cpu_usage_seconds_total
- container_cpu_cfs_throttled_seconds_total
- container_memory_usage_bytes
- container_memory_swap
- container_spec_memory_limit_bytes
- container_spec_memory_swap_limit_bytes
- container_spec_memory_reservation_limit_bytes
- container_fs_usage_bytes
- container_fs_limit_bytes
- container_fs_writes_bytes_total
- container_fs_reads_bytes_total
- container_network_receive_bytes_total
- container_network_transmit_bytes_total
- container_network_receive_errors_total
- container_network_transmit_errors_total
Prometheus 名前空間のクラスタに Prometheus Operator をインストールします。
次のコマンドを実行して、Kubernetes API サーバへのプロキシを開始します。
kubectl proxy
メトリクスを表示するには、ブラウザを次の URL で開きます。
http://127.0.0.1:8001/api/v1/nodes/NODE_NAME/proxy/metrics/cadvisor
ここで、NODE_NAME
は、ノードの名前です。例:
http://127.0.0.1:8001/api/v1/nodes/ip-172-20-114-48.us-west-2.compute.internal/proxy/metrics/cadvisor
Node Exporter (node-exporter) メトリクス
Node Exporter メトリクスは、GKE、EKS、AKS などの管理された Kubernetes 環境で収集するか、または自分で管理している Kubnetes デプロイで収集できます。
デフォルトでは、クラスタ内の各ノードから収集されます。
収集する Node Exporter メトリクス
- node_load1
- node_load5
- node_load15
- node_cpu_seconds_total
- node_memory_MemAvailable_bytes
- node_memory_MemTotal_bytes
- node_memory_Buffers_bytes
- node_memory_SwapCached_bytes
- node_memory_Cached_bytes
- node_memory_MemFree_bytes
- node_memory_SwapFree_bytes
- node_ipvs_incoming_bytes_total
- node_ipvs_incoming_packets_total
- node_ipvs_outgoing_bytes_total
- node_ipvs_outgoing_packets_total
- node_disk_reads_completed_total
- node_disk_writes_completed_total
- node_disk_read_bytes_total
- node_disk_written_bytes_total
- node_filesystem_avail_bytes
- node_filesystem_free_bytes
- node_filesystem_size_bytes
Node Exporter メトリクスの表示
sumologic 名前空間に Prometheus Operator をインストールします。
次のように kubectl port-forward を実行します。
kubectl -n sumologic port-forward svc/prometheus-operator-prometheus-node-exporter 9100
別のコンソールでこのコマンドを実行して、メトリクスサンプルを取得し、メトリクスが生成されていることを確認します。
curl localhost:9100/metrics
Prometheus Operator ルールによって作成されたメトリクス (デフォルト)
このメトリクスは、取り込み時に Prometheus ルールによって生成されます。これらは、Exporter では使用できません。Prometheus は、このメトリクスを取得アクティビティ時に作成します。ルールによって作成されたメトリクスは、リモート書き込み API で送信されます。
Prometheus Operator ルールによって作成されたメトリクスは、GKE、EKS、AKS などの管理された Kubernetes 環境で収集するか、または自分で管理している Kubnetes デプロイで収集できます。
収集するメトリクス
- Cluster_quantile:apiserver_request_latencies:histogram_quantile
- ノード記録ルール メトリクス
- レコードの値はメトリクス名になります。
- Kube Scheduler ルール
- レコードの値はメトリクス名になります。
- ノード ルール
- レコードの値はメトリクス名になります。
up (アップ) メトリクス
Prometheus は、スクレイプに成功したかどうかを示す、up (アップ) というメトリクスを生成します。「1」の値はスクレイプが成功したことを示し、「0」の値は失敗したことを示します。この up
メトリクスは、ダウンした、または問題のあるターゲットをデバッグしてアラートを生成する場合に役立ちます。各ターゲットがスクレイプごとに up メトリクスを生成します。