Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Prometheus¼à¿ØÊµ¼ù£ºKubernetes¼¯Èº¼à¿Ø
 
×÷Õߣº ÎÞ
  2533  次浏览      28
 2019-12-10
 
±à¼­ÍƼö:
±¾ÎĽ«×ܽáÒ»ÏÂÎÒÃÇĿǰʹÓÃPrometheus¶ÔKubernetes¼¯Èº¼à¿ØµÄʵ¼ù¡£ ÎÒÃÇÑ¡ÔñPrometheus×÷Ϊ¼à¿ØÏµÍ³Ö÷ÒªÔÚÒÔϸ÷²ãÃæÊµÏÖ¼à¿Ø£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚKubernetesÖÐÎÄÉçÇø£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼­ÍƼö¡£

»ù´¡ÉèÊ©²ã£º¼à¿Ø¸÷¸öÖ÷»ú·þÎñÆ÷×ÊÔ´(°üÀ¨KubernetesµÄNodeºÍ·ÇKubernetesµÄNode)£¬ÈçCPU,ÄÚ´æ,ÍøÂçÍÌͺʹø¿íÕ¼ÓÃ,´ÅÅÌI/OºÍ´ÅÅÌʹÓõÈÖ¸±ê¡£

Öмä¼þ²ã£º¼à¿Ø¶ÀÁ¢²¿ÊðÓÚKubernetes¼¯ÈºÖ®ÍâµÄÖмä¼þ£¬ÀýÈ磺MySQL¡¢Redis¡¢RabbitMQ¡¢ElasticSearch¡¢NginxµÈ¡£

Kubernetes¼¯Èº£º¼à¿ØKubernetes¼¯Èº±¾ÉíµÄ¹Ø¼üÖ¸±ê

Kubernetes¼¯ÈºÉϲ¿ÊðµÄÓ¦Óãº¼à¿Ø²¿ÊðÔÚKubernetes¼¯ÈºÉϵÄÓ¦ÓÃ

1.»ù´¡ÉèÊ©²ãºÍÖмä¼þ²ãµÄ¼à¿Ø

ÆäÖлù´¡ÉèÊ©²ã¼à¿ØÖ¸±êµÄÀ­È¡¿Ï¶¨ÊÇÀ´ÔÚPrometheusµÄnode_exporter£¬ÒòΪÎÒÃÇÒª¼à¿ØµÄ·þÎñÆ÷½Úµã¼È°üº¬Kubernetes½ÚµãÓÖ°üº¬ÆäËû²¿Êð¶ÀÁ¢Öмä¼þµÄ½Úµã£¬ ËùÒÔÎÒÃDz¢Ã»Óн«node_exporterÒÔdaemonsetµÄÐÎʽ²¿Êðµ½k8sÉÏ£¬¶øÊÇʹÓÃansible½«node_exporterÒÔ¶þ½øÖƵÄÐÎʽ²¿Êðµ½ËùÓÐÒª¼à¿ØµÄ·þÎñÆ÷ÉÏ¡£ ¶ø¸ºÔð´Ónode_exporterÀ­È¡Ö¸±êµÄPrometheusÒ²ÊÇÓÃansible¶ÀÁ¢²¿ÊðÔÚKubernetes¼¯ÈºÍⲿµÄ¡£PrometheusµÄÅäÖÃÎļþprometheus.ymlʹÓÃansibleµÄj2Ä£°åÉú³É¡£

Öмä²ãµÄ¼à¿ØºÍ»ù´¡ÉèÊ©²ã¼à¿ØÀàËÆ£¬Ê¹ÓÃansibleÔÚ¸÷¸öÖмä¼þËùÔÚµÄÖ÷»úÉϲ¿Êð¸÷¸öÖмä¼þµÄexporter£¬ÈÔȻʹÓÃÉÏÃæÔÚKubernetes¼¯ÈºÍⲿµÄÕâ¸öPrometheus´ÓÕâЩexporterÀ­È¡Ö¸±ê£¬PrometheusµÄÅäÖÃÎļþprometheus.ymlʹÓÃansibleµÄj2Ä£°åÉú³É¡£

2.Kubernetes¼¯ÈºµÄ¼à¿Ø

ҪʵÏÖ¶ÔKubernetes¼¯ÈºµÄ¼à¿Ø£¬ÒòΪKubernetesµÄrbac»úÖÆÒÔ¼°Ö¤ÊéÈÏÖ¤£¬µ±È»ÊǰÑPrometheus²¿ÊðÔÚKubernetes¼¯ÈºÉÏ×î·½±ã¡£¿ÉÊÇÎÒÃÇĿǰµÄ¼à¿ØÏµÍ³ÊÇÒÔk8s¼¯ÈºÍⲿµÄPrometheusΪÖ÷µÄ£¬grafanaºÍ¸æ¾¯¶¼ÊÇʹÓÃÕâ¸öÍⲿµÄPrometheus£¬Èç¹û»¹ÐèÒªÔÚKubernetes¼¯ÈºÄÚ²¿²¿ÊðÒ»¸öPrometheusµÄ»°Ò»¶¨Òª°ÑËüͰÍⲿµÄPrometheusÁªºÏÆðÀ´£¬ºÃÔÚPrometheusÖ§³ÖFederation¡£

2.1 PrometheusµÄFederation¼ò½é

FederationÔÊÐíÒ»¸öPrometheus´ÓÁíÒ»¸öPrometheusÖÐÀ­È¡Ä³Ð©Ö¸¶¨µÄʱÐòÊý¾Ý¡£FederationÊÇPrometheusÌṩµÄÀ©Õ¹»úÖÆ£¬ÔÊÐíPrometheus´ÓÒ»¸ö½ÚµãÀ©Õ¹µ½¶à¸ö½Úµã£¬Êµ¼ÊʹÓÃÖÐÒ»°ã»áÀ©Õ¹³ÉÊ÷×´µÄ²ã¼¶½á¹¹¡£ÏÂÃæÊÇPrometheus¹Ù·½ÎĵµÖжÔfederationµÄÅäÖÃʾÀý£º

- job_name: 'federate'
scrape_interval: 15s
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
- '{job="prometheus"}'
- '{__name__=~"job:.*"}'
static_configs:
- targets:
- 'source-prometheus-1:9090'
- 'source-prometheus-2:9090'
- 'source-prometheus-3:9090'

Õâ¶ÎÅäÖÃËùÊôµÄPrometheus½«´Ósource-prometheus-1 ~ 3Õâ3¸öPrometheusµÄ/federate¶ËµãÀ­È¡¼à¿ØÊý¾Ý¡£ match[]²ÎÊýÖ¸¶¨ÁËÖ»À­È¡´øÓÐjob=¡±prometheus±êÇ©µÄÖ¸±ê£¬»òÕßÃû³ÆÒÔjob¿ªÍ·µÄÖ¸±ê¡£

2.2 ÔÚKubernetesÉϲ¿ÊðPrometheus

Ç°ÃæÒѾ­½éÉÜÁ˽«Ê¹ÓÃPrometheus federationµÄÐÎʽ£¬k8s¼¯ÈºÍⲿµÄPrometheus´Ók8s¼¯ÈºÖÐPrometheusÀ­È¡¼à¿ØÊý¾Ý£¬ÍⲿµÄPrometheus²ÅÊÇ¼à¿ØÊý¾ÝµÄ´æ´¢¡£ k8s¼¯ÈºÖв¿ÊðPrometheusµÄÊý¾Ý´æ´¢²ã¿ÉÒÔ¼òµ¥µÄʹÓÃemptyDir,Êý¾ÝÖ»±£Áô24Сʱ(»ò¸ü¶Ìʱ¼ä)¼´¿É£¬²¿ÊðÔÚk8s¼¯ÈºÉϵÄÕâ¸öPrometheusʵÀý¼´Ê¹·¢Éú¹ÊÕÏÒ²¿ÉÒÔ·ÅÐĵÄÈÃËüÔÚ¼¯Èº½ÚµãÖÐÆ¯ÒÆ¡£

ÔÚk8sÉϲ¿ÊðPrometheusÊ®·Ö¼òµ¥£¬Ö»ÐèÒªÏÂÃæ4¸öÎļþ£ºprometheus.rbac.yml, prometheus.config.yml, prometheus.deploy.yml, prometheus.svc.yml¡£ ÏÂÃæ¸øµÄÀý×ÓÖн«Prometheus²¿Êðµ½kube-systemÃüÃû¿Õ¼ä¡£

prometheus.rbac.yml¶¨ÒåÁËPrometheusÈÝÆ÷·ÃÎÊk8s apiserverËùÐèµÄServiceAccountºÍClusterRole¼°ClusterRoleBinding£¬²Î¿¼PrometheusÔ´ÂëÖпâÖеÄÀý×Ó:

apiVersion: rbac.
authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: prometheus
rules:
- apiGroups: [""]
resources:
- nodes
- nodes/proxy
- services
- endpoints
- pods
verbs: ["get", "list", "watch"]
- apiGroups:
- extensions
resources:
- ingresses
verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
verbs: ["get"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: prometheus
namespace: kube-system
---
apiVersion: rbac.
authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: prometheus
roleRef:
apiGroup: rbac.
authorization.k8s.io
kind: ClusterRole
name: prometheus
subjects:
- kind: ServiceAccount
name: prometheus
namespace: kube-system

prometheus.config.yml configmapÖеÄprometheusµÄÅäÖÃÎļþ£¬²Î¿¼PrometheusÔ´ÂëÖпâÖеÄÀý×Ó:

apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-config
namespace: kube-system
data:
prometheus.yml: |
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'kubernetes-apiservers'
kubernetes_sd_configs:
- role: endpoints
scheme: https
tls_config:
ca_file: /var/run/secrets
/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets
/kubernetes.io/serviceaccount/token
relabel_configs:
- source_labels:
[__meta_kubernetes_namespace,
__meta_kubernetes_service_name,
__meta_kubernetes
_endpoint_port_name]
action: keep
regex: default;kubernetes;https
- job_name: 'kubernetes-nodes'
kubernetes_sd_configs:
- role: node
scheme: https
tls_config:
ca_file: /var/run/
secrets/kubernetes.io
/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets
/kubernetes.io/serviceaccount/token
relabel_configs:
- action: labelmap
regex: __meta_kubernetes
_node_label_(.+)
- target_label: __address__
replacement: kubernetes.
default.svc:443
- source_labels:
[__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1/nodes/${1}
/proxy/metrics
- job_name: 'kubernetes-cadvisor'
kubernetes_sd_configs:
- role: node
scheme: https
tls_config:
ca_file: /var/run/secrets
/kubernetes.io
/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets
/kubernetes.io/serviceaccount/token
relabel_configs:
- action: labelmap
regex: __meta_kubernetes
_node_label_(.+)
- target_label: __address__
replacement: kubernetes.
default.svc:443
- source_labels:
[__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1
/nodes/${1}/proxy
/metrics/cadvisor
- job_name: 'kubernetes-
service-endpoints'
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_
kubernetes_service
_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_
kubernetes_service
_annotation_prometheus_io_scheme]
action: replace
target_label: __scheme__
regex: (https?)
- source_labels: [__met
a_kubernetes_service
_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__,
__meta_kubernetes_service_annotation
_prometheus_io_port]
action: replace
target_label: __address__
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
- action: labelmap
regex: __meta_kubernetes
_service_label_(.+)
- source_labels:
[__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
- source_labels:
[__meta_kubernetes_service_name]
action: replace
target_label: kubernetes_name
- job_name: 'kubernetes-services'
kubernetes_sd_configs:
- role: service
metrics_path: /probe
params:
module: [http_2xx]
relabel_configs:
- source_labels:
[__meta_kubernetes_service
_annotation_prometheus_io_probe]
action: keep
regex: true
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: blackbox
-exporter.example.com:9115
- source_labels: [__param_target]
target_label: instance
- action: labelmap
regex: __meta_kubernetes
_service_label_(.+)
- source_labels:
[__meta_kubernetes_namespace]
target_label: kubernetes_namespace
- source_labels:
[__meta_kubernetes_service_name]
target_label: kubernetes_name
- job_name: 'kubernetes-ingresses'
kubernetes_sd_configs:
- role: ingress
relabel_configs:
- source_labels:
[__meta_kubernetes_ingress
_annotation_prometheus_io_probe]
action: keep
regex: true
- source_labels:
[__meta_kubernetes_ingress_scheme,
__address__,__meta_
kubernetes_ingress_path]
regex: (.+);(.+);(.+)
replacement: ${1}://${2}${3}
target_label: __param_target
- target_label: __address__
replacement: blackbox-
exporter.example.com:9115
- source_labels: [__param_target]
target_label: instance
- action: labelmap
regex: __meta_kubernetes
_ingress_label_(.+)
- source_labels:
[__meta_kubernetes_namespace]
target_label: kubernetes_namespace
- source_labels:
[__meta_kubernetes_ingress_name]
target_label: kubernetes_name
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels:
[__meta_kubernetes_pod
_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels:
[__meta_kubernetes_pod
_annotation_prometheus_io_path]
action: replace
target_label: __metrics_path__
regex: (.+)
- source_labels: [__address__,
__meta_kubernetes_pod_
annotation_prometheus_io_port]
action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
target_label: __address__
- action: labelmap
regex: __meta_kubernetes
_pod_label_(.+)
- source_labels:
[__meta_kubernetes_namespace]
action: replace
target_label: kubernetes_namespace
- source_labels:
[__meta_kubernetes_pod_name]
action: replace
target_label: kubernetes_pod_name

prometheus.deploy.yml¶¨ÒåPrometheusµÄ²¿Êð£º

---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
labels:
name: prometheus-deployment
name: prometheus
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: prometheus
template:
metadata:
labels:
app: prometheus
spec:
containers:
- image: harbor.frognew
.com/prom/prometheus:2.0.0
name: prometheus
command:
- "/bin/prometheus"
args:
- "--config.file=/etc
/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
- "--storage.tsdb.retention=24h"
ports:
- containerPort: 9090
protocol: TCP
volumeMounts:
- mountPath: "/prometheus"
name: data
- mountPath: "/etc/prometheus"
name: config-volume
resources:
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: 500m
memory: 2500Mi
serviceAccountName: prometheus
imagePullSecrets:
- name: regsecret
volumes:
- name: data
emptyDir: {}
- name: config-volume
configMap:
name: prometheus-config

prometheus.svc.yml¶¨ÒåPrometheusµÄServic£¬ÐèÒª½«PrometheusÒÔNodePort, LoadBalancer»òʹÓÃIngress±©Â¶µ½¼¯ÈºÍⲿ£¬ÕâÑùÍⲿµÄPrometheus²ÅÄÜ·ÃÎÊËü£º

---
kind: Service
apiVersion: v1
metadata:
labels:
app: prometheus
name: prometheus
namespace: kube-system
spec:
type: NodePort
ports:
- port: 9090
targetPort: 9090
nodePort: 30003
selector:
app: prometheus

2.3 ÅäÖÃPrometheus Federation

Íê³ÉKubernetes¼¯ÈºÉϵÄPrometheusµÄ²¿ÊðÖ®ºó£¬ÏÂÃæ½«ÅäÖü¯ÈºÍⲿµÄPrometheusʹÆä´Ó¼¯ÈºÄÚ²¿µÄPrometheusÀ­È¡Êý¾Ý¡£ ʵ¼ÊÉÏÖ»ÐèÒÔ¾²Ì¬ÅäÖõÄÐÎʽÌí¼ÓÒ»¸öjob¾Í¿ÉÒÔ£º

- job_name: 'federate'
scrape_interval: 15s
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
- '{job=~"kubernetes-.*"}'
static_configs:
- targets:
- '<nodeip>:30003'

×¢ÒâÉÏÃæµÄÅäÖÃÊÇÍⲿPrometheusÀ­È¡k8s¼¯ÈºÉÏÃæËùÓÐÃû³ÆÒÔkubernetes-µÄjobµÄ¼à¿ØÊý¾Ý¡£

2.4 Kubernetes¼¯ÈºGrafana Dashboard

¼à¿ØDashboardʹÓÃKubernetes cluster monitoring (via Prometheus)Õâ¸ö¼´¿É¡£ ÁíÍâ¹ØÓÚPodºÍDeployment»¹ÓÐÕâÁ½¸öDashboard£ºKubernetes Pod MetricsºÍKubernetes Deployment metrics¡£

2.5 Kubernetes¼¯Èº¸æ¾¯¹æÔò

¿ÉÒÔ¶ÔapiserverºÍkubeletÁ½¸ö¹Ø¼ü×é¼þµÄ´æ»î״̬½øÐÐ¼à¿Ø£¬¹æÔòÈçÏ£º

up{job=~"kubernetes-
apiservers|kubernetes-nodes
|kubernetes-cadvisor"} == 0

¸ü¶àµÄ¸æ¾¯¹æÔò¿ÉÒÔͨ¹ý²é¿´ÉÏÃæ2.4ÖеÄgrafana dashboardÖÐ¼à¿ØµÄ¹Ø¼üÖ¸±ê£¬Ñ¡ÔñºÍºÏÊʵÄÖ¸±ê½øÐÐÉèÖã¬Êµ¼ÊÉÏÒ»Ì×ºÃµÄ¼à¿ØÏµÍ³µÄ¼à¿ØÖ¸±êºÍ¸æ¾¯¹æÔò²¢²»ÊÇÔ½¶àÔ½ºÃ¡£

3.Kubernetes¼¯ÈºÉϲ¿ÊðÓ¦ÓÃµÄ¼à¿Ø

Kubernetes¼¯ÈºÉϲ¿ÊðÓ¦ÓÃµÄ¼à¿ØÐèÒª´ÓÁ½¸ö·½Ã棺

Kubernetes¼¯ÈºÉÏPod, DaemonSet, Deployment, Job, CronJobµÈ¸÷ÖÖ×ÊÔ´¶ÔÏóµÄ״̬ÐèÒª¼à¿Ø£¬ÕâÒ²·´Ó³ÁËʹÓÃÕâЩ×ÊÔ´²¿ÊðµÄÓ¦ÓõÄ״̬¡£µ«Í¨¹ý²é¿´Ç°ÃæPrometheus´Ók8s¼¯ÈºÀ­È¡µÄÖ¸±ê(ÕâЩָ±êÖ÷ÒªÀ´×ÔapiserverºÍkubeletÖм¯³ÉµÄcAdvisor)£¬²¢Ã»ÓоßÌåµÄ¸÷ÖÖ×ÊÔ´¶ÔÏóµÄ״ָ̬±ê¡£¶ÔÓÚPrometheusÀ´Ëµ£¬µ±È»ÊÇÐèÒªÒýÈëеÄexporterÀ´±©Â¶ÕâЩָ±ê£¬KubernetesÌṩÁËÒ»¸ökube-state-metricsÕýʽÎÒÃÇÐèÒª¡£

Kubernetes¼¯ÈºÉÏÓ¦ÓÃÄÚ²¿µÄ¼à¿Ø£¬Õâ¸öÓë¾ßÌåÓ¦ÓõĿª·¢ÓïÑÔ£¬¿ª·¢¿ò¼ÜºÍ¾ßÌå¼¼Êõ½ôÃÜÏà¹Ø£¬±ÈÈçJavaÓ¦ÓõÄJVM¼à¿Ø£¬GoÓ¦ÓõÄGC¼à¿ØµÈµÈ£¬Õâ¸öÐèÒªÓ¦ÓÃ×ÔÉí×÷ΪExporter±©Â¶ÕâЩָ±ê»òÔÚÓ¦ÓõÄPodÖÐÆðÒ»¸öexporterµÄsidecarÈÝÆ÷¡£

ÕâÀォÖ÷Òª½éÉÜkube-state-metrics£¬¶ø¶ÔÓÚÓ¦ÓÃÄÚ²¿µÄ¼à¿ØÊµ¼ùºó±ßÓÐʱ¼äÔÙµ¥¶À×ܽᡣkube-state-metricsʹÓÃkubernetesµÄgoÓïÑÔ¿Í»§¶Ëclient-go¿ÉÒÔ´ÓKubernetes¼¯ÈºÖлñÈ¡¸÷ÖÖ×ÊÔ´¶ÔÏóµÄÖ¸±ê¡£

3.1 ÔÚKubernetesÉϲ¿Êðkube-state-metrics

kube-state-metricsÒѾ­¸ø³öÁËÔÚKubernetes²¿ÊðµÄmanifest¶¨ÒåÎļþ£¬¾ßÌåµÄÎļþ¶¨Òå¶¼ÔÚÕâÀï¡£

½«kube-state-metrics²¿Êðµ½KubernetesÉÏÖ®ºó£¬¾Í»á·¢ÏÖKubernetes¼¯ÈºÖеÄPrometheus»áÔÚkubernetes-service-endpointsÕâ¸öjobÏÂ×Ô¶¯·þÎñ·¢ÏÖkube-state-metrics£¬²¢¿ªÊ¼À­È¡metrics£¬µ±È»¼¯ÈºÍⲿµÄPrometheusÒ²ÄÜ´Ó¼¯ÈºÖеÄPrometheusÀ­È¡µ½ÕâЩÊý¾ÝÁË¡£ÕâÊÇÒòΪÉÏ2.2ÖÐprometheus.config.ymlÖÐPrometheusµÄÅäÖÃÎļþjob kubernetes-service-endpointsµÄÅäÖ᣶ø²¿Êðkube-state-metricsµÄmanifest¶¨ÒåÎļþkube-state-metrics-service.yaml¶Ôkube-state-metricsServiceµÄ¶¨Òå°üº¬annotation prometheus.io/scrape: ¡®true¡¯£¬Òò´Ëkube-state-metricsµÄendpoint¿ÉÒÔ±»Prometheus×Ô¶¯·þÎñ·¢ÏÖ¡£

¹ØÓÚkube-state-metrics±©Â¶µÄËùÓÐ¼à¿ØÖ¸±ê¿ÉÒԲο¼
kube-state-metricsµÄÎĵµkube-state-metrics Documentation¡£

3.2 ¸æ¾¯¹æÔò

ĿǰÎÒÃǸù¾Ý´Ókube-state-metrics»ñÈ¡µÄ¼à¿ØÖ¸±ê£¬Öƶ¨ÁËÒÔϸ澯¹æÔò£º

´æÔÚÖ´ÐÐʧ°ÜµÄJob: kube_job_status_failed
{job=¡±kubernetes-service-endpoints¡±,
k8s_app=¡±kube-state-metrics¡±}==1

¼¯Èº½Úµã״̬´íÎó: kube_node_status_condition
{condition=¡±Ready¡±,status!=¡±true¡±}==1

¼¯Èº½ÚµãÄÚ´æ»ò´ÅÅÌ×ÊÔ´¶Ìȱ:
kube_node_status_condition
{condition=~¡±OutOfDisk|MemoryPressure
|DiskPressure¡±,status!=¡±false¡±}==1

¼¯ÈºÖдæÔÚʧ°ÜµÄPVC£ºkube_persistentvolumeclaim
_status_phase{phase=¡±Failed¡±}==1

¼¯ÈºÖдæÔÚÆô¶¯Ê§°ÜµÄPod£º
kube_pod_status_phase{phase=~¡±Failed|Unknown¡±}==1

×î½ü30·ÖÖÓÄÚÓÐPodÈÝÆ÷ÖØÆô:
changes(kube_pod_container_status_restarts[30m])>0

ÆäÖйØÓÚPod״̬µÄµÄ¸æ¾¯ÓÈÎªÖØÒª£¬¿ÉÒÔÔÚJenkinsÍê³ÉCI/CD×Ô¶¯·¢²¼ºó£¬²»ÓÃÊØÔÚKubernetes DashboardÅÔ±ßÈ·ÈÏÕâ¸öDeployment¹ØÁªµÄPodÒѾ­È«²¿Æô¶¯£¬ÒòΪÈç¹û³öÏÖÎÊÌâÊÇ»áÊÕµ½PrometheusµÄ¸æ¾¯µÄ¡£

 
   
2533 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

DevOpsתÐÍÈÚÈëµ½ÆóÒµÎÄ»¯
DevOps ÄÜÁ¦Ä£ÐÍ¡¢Ñݽø¼°°¸ÀýÆÊÎö
»ùÓÚ DevOps ÀíÄîµÄ˽ÓÐ PaaS ƽ̨ʵ¼ù
΢Èí¿ª·¢ÍŶӵÄDevOpsʵ¼ùÆôʾ
Ïà¹ØÎĵµ

DevOpsÇý¶¯Ó¦ÓÃÔËά±ä¸ïÓë´´ÐÂ
ÔËά¹ÜÀí¹æ»®
ÈçºÎʵÏÖÆóÒµÓ¦Óò¿Êð×Ô¶¯»¯
ÔËά×Ô¶¯»¯Êµ¼ù֮·
Ïà¹Ø¿Î³Ì

×Ô¶¯»¯ÔËά¹¤¾ß£¨»ùÓÚDevOps£©
»¥ÁªÍøÔËάÓëDevOps
MySQLÐÔÄÜÓÅ»¯¼°ÔËάÅàѵ
ITϵͳÔËά¹ÜÀí