Prometheus -1-3


7.5 ?kube-state-metrics?

安裝和配置?Alertmanager-發(fā)送報(bào)警到?qq?郵箱

cat alertmanager-cm.yaml

kind: ConfigMap

apiVersion: v1

metadata:

? name: alertmanager

? namespace: monitor-sa

data:

? alertmanager.yml: |-

? ? global:

? ? ? resolve_timeout: 1m

? ? ? smtp_smarthost: 'smtp.163.com:25'

? ? ? smtp_from: 'cadr***@163.com'

? ? ? smtp_auth_username: '1815871****'

? ? ? smtp_auth_password: 'BDBPRMLNZGKWRFJP'

? ? ? smtp_require_tls: false

? ? route:? ? ? ? ? ? ? ? ? ? ? #用于配置告警分發(fā)策略

? ? ? group_by: [alertname]? ? # 采用哪個(gè)標(biāo)簽來(lái)作為分組依據(jù)

? ? ? group_wait: 10s? ? ? ? ? ? # 組告警等待時(shí)間。也就是告警產(chǎn)生后等待 10s,如果有同組告警一起發(fā)出

? ? ? group_interval: 10s? ? ? ? #兩組告警的間隔時(shí)間

? ? ? repeat_interval: 10m? ? ? # 重復(fù)告警的間隔時(shí)間,減少相同郵件發(fā)送頻率

? ? ? receiver: default-receiver? #設(shè)置默認(rèn)接受人

? ? receivers:

? ? - name: 'default-receiver'

? ? ? email_configs:

? ? ? - to: '137855***@qq.com'

? ? ? ? send_resolved: true

alertmanager?配置文件解釋說(shuō)明: ??

smtp_smarthost: 'smtp.163.com:25'

#用于發(fā)送郵件的郵箱的?SMTP?服務(wù)器地址+端口?

smtp_from: 'cadr****@163.com'

#這是指定從哪個(gè)郵箱發(fā)送報(bào)警?

smtp_auth_username: '181****'

#這是發(fā)送郵箱的認(rèn)證用戶,不是郵箱名?

smtp_auth_password: 'BDBPRMLNZGKWRFJP'

#這是發(fā)送郵箱的授權(quán)碼而不是登錄密碼?email_configs:

- to: '1378******@qq.com'

#to 后面指定發(fā)送到哪個(gè)郵箱,我發(fā)送到我的?qq?郵箱,大家需要寫(xiě)自己的郵箱地址,不應(yīng)該跟?smtp_from?的郵箱名字重復(fù)

#通過(guò)?kubectl apply?更新文件

kubectl apply -f alertmanager-cm.yaml

cat prometheus-alertmanager-cfg.yaml

kind: ConfigMap

apiVersion: v1

metadata:

? labels:

? ? app: prometheus

? name: prometheus-config

? namespace: monitor-sa

data:

? prometheus.yml: |

? ? rule_files:

? ? - /etc/prometheus/rules.yml

? ? alerting:

? ? ? alertmanagers:

? ? ? - static_configs:

? ? ? ? - targets: ["localhost:9093"]

? ? global:

? ? ? scrape_interval: 15s

? ? ? scrape_timeout: 10s

? ? ? evaluation_interval: 1m

? ? scrape_configs:

? ? - job_name: 'kubernetes-node'

? ? ? kubernetes_sd_configs:

? ? ? - role: node

? ? ? relabel_configs:

? ? ? - source_labels: [__address__]

? ? ? ? regex: '(.*):10250'

? ? ? ? replacement: '${1}:9100'

? ? ? ? target_label: __address__

? ? ? ? action: replace

? ? ? - action: labelmap

? ? ? ? regex: __meta_kubernetes_node_label_(.+)

? ? - job_name: 'kubernetes-node-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-apiserver'

? ? ? 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-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: [__meta_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-pods

? ? ? kubernetes_sd_configs:

? ? ? - role: pod

? ? ? relabel_configs:

? ? ? - action: keep

? ? ? ? regex: true

? ? ? ? source_labels:

? ? ? ? - __meta_kubernetes_pod_annotation_prometheus_io_scrape

? ? ? - action: replace

? ? ? ? regex: (.+)

? ? ? ? source_labels:

? ? ? ? - __meta_kubernetes_pod_annotation_prometheus_io_path

? ? ? ? target_label: __metrics_path__

? ? ? - action: replace

? ? ? ? regex: ([^:]+)(?::\d+)?;(\d+)

? ? ? ? replacement: $1:$2

? ? ? ? source_labels:

? ? ? ? - __address__

? ? ? ? - __meta_kubernetes_pod_annotation_prometheus_io_port

? ? ? ? target_label: __address__

? ? ? - action: labelmap

? ? ? ? regex: __meta_kubernetes_pod_label_(.+)

? ? ? - action: replace

? ? ? ? source_labels:

? ? ? ? - __meta_kubernetes_namespace

? ? ? ? target_label: kubernetes_namespace

? ? ? - action: replace

? ? ? ? source_labels:

? ? ? ? - __meta_kubernetes_pod_name

? ? ? ? target_label: kubernetes_pod_name

? ? - job_name: 'kubernetes-schedule'

? ? ? scrape_interval: 5s

? ? ? static_configs:

? ? ? - targets: ['192.168.40.130:10251']

? ? - job_name: 'kubernetes-controller-manager'

? ? ? scrape_interval: 5s

? ? ? static_configs:

? ? ? - targets: ['192.168.40.130:10252']

? ? - job_name: 'kubernetes-kube-proxy'

? ? ? scrape_interval: 5s

? ? ? static_configs:

? ? ? - targets: ['192.168.40.130:10249','192.168.40.131:10249']

? ? - job_name: 'kubernetes-etcd'

? ? ? scheme: https

? ? ? tls_config:

? ? ? ? ca_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/ca.crt

? ? ? ? cert_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/server.crt

? ? ? ? key_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/server.key

? ? ? scrape_interval: 5s

? ? ? static_configs:

? ? ? - targets: ['192.168.40.130:2379']

? rules.yml: |

? ? groups:

? ? - name: example

? ? ? rules:

? ? ? - alert: kube-proxy的cpu使用率大于80%

? ? ? ? expr: rate(process_cpu_seconds_total{job=~"kubernetes-kube-proxy"}[1m]) * 100 > 80

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}組件的cpu使用率超過(guò)80%"

? ? ? - alert:? kube-proxy的cpu使用率大于90%

? ? ? ? expr: rate(process_cpu_seconds_total{job=~"kubernetes-kube-proxy"}[1m]) * 100 > 90

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}組件的cpu使用率超過(guò)90%"

? ? ? - alert: scheduler的cpu使用率大于80%

? ? ? ? expr: rate(process_cpu_seconds_total{job=~"kubernetes-schedule"}[1m]) * 100 > 80

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}組件的cpu使用率超過(guò)80%"

? ? ? - alert:? scheduler的cpu使用率大于90%

? ? ? ? expr: rate(process_cpu_seconds_total{job=~"kubernetes-schedule"}[1m]) * 100 > 90

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}組件的cpu使用率超過(guò)90%"

? ? ? - alert: controller-manager的cpu使用率大于80%

? ? ? ? expr: rate(process_cpu_seconds_total{job=~"kubernetes-controller-manager"}[1m]) * 100 > 80

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}組件的cpu使用率超過(guò)80%"

? ? ? - alert:? controller-manager的cpu使用率大于90%

? ? ? ? expr: rate(process_cpu_seconds_total{job=~"kubernetes-controller-manager"}[1m]) * 100 > 0

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}組件的cpu使用率超過(guò)90%"

? ? ? - alert: apiserver的cpu使用率大于80%

? ? ? ? expr: rate(process_cpu_seconds_total{job=~"kubernetes-apiserver"}[1m]) * 100 > 80

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}組件的cpu使用率超過(guò)80%"

? ? ? - alert:? apiserver的cpu使用率大于90%

? ? ? ? expr: rate(process_cpu_seconds_total{job=~"kubernetes-apiserver"}[1m]) * 100 > 90

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}組件的cpu使用率超過(guò)90%"

? ? ? - alert: etcd的cpu使用率大于80%

? ? ? ? expr: rate(process_cpu_seconds_total{job=~"kubernetes-etcd"}[1m]) * 100 > 80

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}組件的cpu使用率超過(guò)80%"

? ? ? - alert:? etcd的cpu使用率大于90%

? ? ? ? expr: rate(process_cpu_seconds_total{job=~"kubernetes-etcd"}[1m]) * 100 > 90

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}組件的cpu使用率超過(guò)90%"

? ? ? - alert: kube-state-metrics的cpu使用率大于80%

? ? ? ? expr: rate(process_cpu_seconds_total{k8s_app=~"kube-state-metrics"}[1m]) * 100 > 80

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.k8s_app}}組件的cpu使用率超過(guò)80%"

? ? ? ? ? value: "{{ $value }}%"

threshold: "80%"?

? ? ? - alert: kube-state-metrics的cpu使用率大于90%

? ? ? ? expr: rate(process_cpu_seconds_total{k8s_app=~"kube-state-metrics"}[1m]) * 100 > 0

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.k8s_app}}組件的cpu使用率超過(guò)90%"

? ? ? ? ? value: "{{ $value }}%"

threshold: "90%"?

? ? ? - alert: coredns的cpu使用率大于80%

? ? ? ? expr: rate(process_cpu_seconds_total{k8s_app=~"kube-dns"}[1m]) * 100 > 80

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.k8s_app}}組件的cpu使用率超過(guò)80%"

? ? ? ? ? value: "{{ $value }}%"

threshold: "80%"?

? ? ? - alert: coredns的cpu使用率大于90%

? ? ? ? expr: rate(process_cpu_seconds_total{k8s_app=~"kube-dns"}[1m]) * 100 > 90

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.k8s_app}}組件的cpu使用率超過(guò)90%"

? ? ? ? ? value: "{{ $value }}%"

threshold: "90%"?

? ? ? - alert: kube-proxy打開(kāi)句柄數(shù)>600

? ? ? ? expr: process_open_fds{job=~"kubernetes-kube-proxy"}? > 600

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}打開(kāi)句柄數(shù)>600"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kube-proxy打開(kāi)句柄數(shù)>1000

? ? ? ? expr: process_open_fds{job=~"kubernetes-kube-proxy"}? > 1000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}打開(kāi)句柄數(shù)>1000"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kubernetes-schedule打開(kāi)句柄數(shù)>600

? ? ? ? expr: process_open_fds{job=~"kubernetes-schedule"}? > 600

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}打開(kāi)句柄數(shù)>600"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kubernetes-schedule打開(kāi)句柄數(shù)>1000

? ? ? ? expr: process_open_fds{job=~"kubernetes-schedule"}? > 1000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}打開(kāi)句柄數(shù)>1000"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kubernetes-controller-manager打開(kāi)句柄數(shù)>600

? ? ? ? expr: process_open_fds{job=~"kubernetes-controller-manager"}? > 600

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}打開(kāi)句柄數(shù)>600"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kubernetes-controller-manager打開(kāi)句柄數(shù)>1000

? ? ? ? expr: process_open_fds{job=~"kubernetes-controller-manager"}? > 1000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}打開(kāi)句柄數(shù)>1000"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kubernetes-apiserver打開(kāi)句柄數(shù)>600

? ? ? ? expr: process_open_fds{job=~"kubernetes-apiserver"}? > 600

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}打開(kāi)句柄數(shù)>600"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kubernetes-apiserver打開(kāi)句柄數(shù)>1000

? ? ? ? expr: process_open_fds{job=~"kubernetes-apiserver"}? > 1000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}打開(kāi)句柄數(shù)>1000"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kubernetes-etcd打開(kāi)句柄數(shù)>600

? ? ? ? expr: process_open_fds{job=~"kubernetes-etcd"}? > 600

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}打開(kāi)句柄數(shù)>600"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kubernetes-etcd打開(kāi)句柄數(shù)>1000

? ? ? ? expr: process_open_fds{job=~"kubernetes-etcd"}? > 1000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? description: "{{$labels.instance}}的{{$labels.job}}打開(kāi)句柄數(shù)>1000"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: coredns

? ? ? ? expr: process_open_fds{k8s_app=~"kube-dns"}? > 600

? ? ? ? for: 2s

? ? ? ? labels:

severity: warnning?

? ? ? ? annotations:

? ? ? ? ? description: "插件{{$labels.k8s_app}}({{$labels.instance}}): 打開(kāi)句柄數(shù)超過(guò)600"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: coredns

? ? ? ? expr: process_open_fds{k8s_app=~"kube-dns"}? > 1000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? description: "插件{{$labels.k8s_app}}({{$labels.instance}}): 打開(kāi)句柄數(shù)超過(guò)1000"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kube-proxy

? ? ? ? expr: process_virtual_memory_bytes{job=~"kubernetes-kube-proxy"}? > 2000000000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "組件{{$labels.job}}({{$labels.instance}}): 使用虛擬內(nèi)存超過(guò)2G"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: scheduler

? ? ? ? expr: process_virtual_memory_bytes{job=~"kubernetes-schedule"}? > 2000000000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "組件{{$labels.job}}({{$labels.instance}}): 使用虛擬內(nèi)存超過(guò)2G"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kubernetes-controller-manager

? ? ? ? expr: process_virtual_memory_bytes{job=~"kubernetes-controller-manager"}? > 2000000000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "組件{{$labels.job}}({{$labels.instance}}): 使用虛擬內(nèi)存超過(guò)2G"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kubernetes-apiserver

? ? ? ? expr: process_virtual_memory_bytes{job=~"kubernetes-apiserver"}? > 2000000000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "組件{{$labels.job}}({{$labels.instance}}): 使用虛擬內(nèi)存超過(guò)2G"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kubernetes-etcd

? ? ? ? expr: process_virtual_memory_bytes{job=~"kubernetes-etcd"}? > 2000000000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "組件{{$labels.job}}({{$labels.instance}}): 使用虛擬內(nèi)存超過(guò)2G"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: kube-dns

? ? ? ? expr: process_virtual_memory_bytes{k8s_app=~"kube-dns"}? > 2000000000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "插件{{$labels.k8s_app}}({{$labels.instance}}): 使用虛擬內(nèi)存超過(guò)2G"

? ? ? ? ? value: "{{ $value }}"

? ? ? - alert: HttpRequestsAvg

? ? ? ? expr: sum(rate(rest_client_requests_total{job=~"kubernetes-kube-proxy|kubernetes-kubelet|kubernetes-schedule|kubernetes-control-manager|kubernetes-apiservers"}[1m]))? > 1000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? team: admin

? ? ? ? annotations:

? ? ? ? ? description: "組件{{$labels.job}}({{$labels.instance}}): TPS超過(guò)1000"

? ? ? ? ? value: "{{ $value }}"

threshold: "1000"?

? ? ? - alert: Pod_restarts

? ? ? ? expr: kube_pod_container_status_restarts_total{namespace=~"kube-system|default|monitor-sa"} > 0

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: warnning

? ? ? ? annotations:

? ? ? ? ? description: "在{{$labels.namespace}}名稱空間下發(fā)現(xiàn){{$labels.pod}}這個(gè)pod下的容器{{$labels.container}}被重啟,這個(gè)監(jiān)控指標(biāo)是由{{$labels.instance}}采集的"

? ? ? ? ? value: "{{ $value }}"

? ? ? ? ? threshold: "0"

? ? ? - alert: Pod_waiting

? ? ? ? expr: kube_pod_container_status_waiting_reason{namespace=~"kube-system|default"} == 1

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? team: admin

? ? ? ? annotations:

? ? ? ? ? description: "空間{{$labels.namespace}}({{$labels.instance}}): 發(fā)現(xiàn){{$labels.pod}}下的{{$labels.container}}啟動(dòng)異常等待中"

? ? ? ? ? value: "{{ $value }}"

threshold: "1"?

? ? ? - alert: Pod_terminated

? ? ? ? expr: kube_pod_container_status_terminated_reason{namespace=~"kube-system|default|monitor-sa"} == 1

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? team: admin

? ? ? ? annotations:

? ? ? ? ? description: "空間{{$labels.namespace}}({{$labels.instance}}): 發(fā)現(xiàn){{$labels.pod}}下的{{$labels.container}}被刪除"

? ? ? ? ? value: "{{ $value }}"

? ? ? ? ? threshold: "1"

? ? ? - alert: Etcd_leader

? ? ? ? expr: etcd_server_has_leader{job="kubernetes-etcd"} == 0

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? team: admin

? ? ? ? annotations:

? ? ? ? ? description: "組件{{$labels.job}}({{$labels.instance}}): 當(dāng)前沒(méi)有l(wèi)eader"

? ? ? ? ? value: "{{ $value }}"

? ? ? ? ? threshold: "0"

? ? ? - alert: Etcd_leader_changes

? ? ? ? expr: rate(etcd_server_leader_changes_seen_total{job="kubernetes-etcd"}[1m]) > 0

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? team: admin

? ? ? ? annotations:

? ? ? ? ? description: "組件{{$labels.job}}({{$labels.instance}}): 當(dāng)前l(fā)eader已發(fā)生改變"

? ? ? ? ? value: "{{ $value }}"

? ? ? ? ? threshold: "0"

? ? ? - alert: Etcd_failed

? ? ? ? expr: rate(etcd_server_proposals_failed_total{job="kubernetes-etcd"}[1m]) > 0

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? team: admin

? ? ? ? annotations:

? ? ? ? ? description: "組件{{$labels.job}}({{$labels.instance}}): 服務(wù)失敗"

? ? ? ? ? value: "{{ $value }}"

? ? ? ? ? threshold: "0"

? ? ? - alert: Etcd_db_total_size

? ? ? ? expr: etcd_debugging_mvcc_db_total_size_in_bytes{job="kubernetes-etcd"} > 10000000000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? team: admin

? ? ? ? annotations:

? ? ? ? ? description: "組件{{$labels.job}}({{$labels.instance}}):db空間超過(guò)10G"

? ? ? ? ? value: "{{ $value }}"

? ? ? ? ? threshold: "10G"

? ? ? - alert: Endpoint_ready

? ? ? ? expr: kube_endpoint_address_not_ready{namespace=~"kube-system|default"} == 1

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? team: admin

? ? ? ? annotations:

? ? ? ? ? description: "空間{{$labels.namespace}}({{$labels.instance}}): 發(fā)現(xiàn){{$labels.endpoint}}不可用"

? ? ? ? ? value: "{{ $value }}"

? ? ? ? ? threshold: "1"

? ? - name: 物理節(jié)點(diǎn)狀態(tài)-監(jiān)控告警

? ? ? rules:

? ? ? - alert: 物理節(jié)點(diǎn)cpu使用率

? ? ? ? expr: 100-avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance)*100 > 90

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: ccritical

? ? ? ? annotations:

? ? ? ? ? summary: "{{ $labels.instance }}cpu使用率過(guò)高"

description: "{{ $labels.instance }}的cpu使用率超過(guò)90%,當(dāng)前使用率[{{ $value }}],需要排查處理"?

? ? ? - alert: 物理節(jié)點(diǎn)內(nèi)存使用率

? ? ? ? expr: (node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)) / node_memory_MemTotal_bytes * 100 > 90

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? summary: "{{ $labels.instance }}內(nèi)存使用率過(guò)高"

? ? ? ? ? description: "{{ $labels.instance }}的內(nèi)存使用率超過(guò)90%,當(dāng)前使用率[{{ $value }}],需要排查處理"

? ? ? - alert: InstanceDown

? ? ? ? expr: up == 0

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

annotations:?

? ? ? ? ? summary: "{{ $labels.instance }}: 服務(wù)器宕機(jī)"

? ? ? ? ? description: "{{ $labels.instance }}: 服務(wù)器延時(shí)超過(guò)2分鐘"

? ? ? - alert: 物理節(jié)點(diǎn)磁盤的IO性能

? ? ? ? expr: 100-(avg(irate(node_disk_io_time_seconds_total[1m])) by(instance)* 100) < 60

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? summary: "{{$labels.mountpoint}} 流入磁盤IO使用率過(guò)高!"

? ? ? ? ? description: "{{$labels.mountpoint }} 流入磁盤IO大于60%(目前使用:{{$value}})"

? ? ? - alert: 入網(wǎng)流量帶寬

? ? ? ? expr: ((sum(rate (node_network_receive_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance)) / 100) > 102400

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? summary: "{{$labels.mountpoint}} 流入網(wǎng)絡(luò)帶寬過(guò)高!"

? ? ? ? ? description: "{{$labels.mountpoint }}流入網(wǎng)絡(luò)帶寬持續(xù)5分鐘高于100M. RX帶寬使用率{{$value}}"

? ? ? - alert: 出網(wǎng)流量帶寬

? ? ? ? expr: ((sum(rate (node_network_transmit_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[5m])) by (instance)) / 100) > 102400

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? summary: "{{$labels.mountpoint}} 流出網(wǎng)絡(luò)帶寬過(guò)高!"

? ? ? ? ? description: "{{$labels.mountpoint }}流出網(wǎng)絡(luò)帶寬持續(xù)5分鐘高于100M. RX帶寬使用率{{$value}}"

? ? ? - alert: TCP會(huì)話

? ? ? ? expr: node_netstat_Tcp_CurrEstab > 1000

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? summary: "{{$labels.mountpoint}} TCP_ESTABLISHED過(guò)高!"

? ? ? ? ? description: "{{$labels.mountpoint }} TCP_ESTABLISHED大于1000%(目前使用:{{$value}}%)"

? ? ? - alert: 磁盤容量

? ? ? ? expr: 100-(node_filesystem_free_bytes{fstype=~"ext4|xfs"}/node_filesystem_size_bytes {fstype=~"ext4|xfs"}*100) > 80

? ? ? ? for: 2s

? ? ? ? labels:

? ? ? ? ? severity: critical

? ? ? ? annotations:

? ? ? ? ? summary: "{{$labels.mountpoint}} 磁盤分區(qū)使用率過(guò)高!"

? ? ? ? ? description: "{{$labels.mountpoint }} 磁盤分區(qū)使用大于80%(目前使用:{{$value}}%)"

注意:配置文件解釋說(shuō)明

- job_name: 'kubernetes-schedule' scrape_interval: 5s

static_configs:

- targets: ['192.168.1.63:10251']

- job_name: 'kubernetes-controller-manager'

#god63?節(jié)點(diǎn)的?ip:schedule?端口

scrape_interval: 5s

static_configs:

- targets: ['192.168.172.163:10252']?

#god63 節(jié)點(diǎn)的?ip:controller-manager?端口

- job_name: 'kubernetes-kube-proxy'

scrape_interval: 5s

static_configs:

- targets: ['192.168.172.163:10249','192.168.172.164:10249']

#god63?和 god64?節(jié)點(diǎn)的?ip:kube-proxy?端口?- job_name: 'kubernetes-etcd'

scheme: https tls_config:

ca_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/ca.crt cert_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/server.crt key_file: /var/run/secrets/kubernetes.io/k8s-certs/etcd/server.key

scrape_interval: 5s static_configs:

- targets: ['192.168.172.163:2379']

#god63?節(jié)點(diǎn)的?ip:etcd?端口

#更新資源清單文件

# kubectl delete -f prometheus-cfg.yaml

configmap "prometheus-config" deleted

# kubectl apply -f prometheus-alertmanager-cfg.yaml?

alertmanager.tar.gz 上傳的?k8s?的各個(gè)節(jié)點(diǎn)

cat prometheus-alertmanager-deploy.yaml

---

apiVersion: apps/v1

kind: Deployment

metadata:

? name: prometheus-server

? namespace: monitor-sa

? labels:

? ? app: prometheus

spec:

? replicas: 1

? selector:

? ? matchLabels:

? ? ? app: prometheus

? ? ? component: server

? ? #matchExpressions:

? ? #- {key: app, operator: In, values: [prometheus]}

? ? #- {key: component, operator: In, values: [server]}

? template:

? ? metadata:

? ? ? labels:

? ? ? ? app: prometheus

? ? ? ? component: server

? ? ? annotations:

? ? ? ? prometheus.io/scrape: 'false'

? ? spec:

? ? ? nodeName: god64

? ? ? serviceAccountName: monitor

? ? ? containers:

? ? ? - name: prometheus

? ? ? ? image: prom/prometheus:v2.2.1

? ? ? ? imagePullPolicy: IfNotPresent

? ? ? ? command:

? ? ? ? - "/bin/prometheus"

? ? ? ? args:

? ? ? ? - "--config.file=/etc/prometheus/prometheus.yml"

? ? ? ? - "--storage.tsdb.path=/prometheus"

? ? ? ? - "--storage.tsdb.retention=24h"

? ? ? ? - "--web.enable-lifecycle"

? ? ? ? ports:

? ? ? ? - containerPort: 9090

? ? ? ? ? protocol: TCP

? ? ? ? volumeMounts:

? ? ? ? - mountPath: /etc/prometheus

? ? ? ? ? name: prometheus-config

? ? ? ? - mountPath: /prometheus/

? ? ? ? ? name: prometheus-storage-volume

? ? ? ? - name: k8s-certs

? ? ? ? ? mountPath: /var/run/secrets/kubernetes.io/k8s-certs/etcd/

? ? ? - name: alertmanager

? ? ? ? image: prom/alertmanager:v0.14.0

? ? ? ? imagePullPolicy: IfNotPresent

? ? ? ? args:

? ? ? ? - "--config.file=/etc/alertmanager/alertmanager.yml"

? ? ? ? - "--log.level=debug"

? ? ? ? ports:

? ? ? ? - containerPort: 9093

? ? ? ? ? protocol: TCP

? ? ? ? ? name: alertmanager

? ? ? ? volumeMounts:

? ? ? ? - name: alertmanager-config

? ? ? ? ? mountPath: /etc/alertmanager

? ? ? ? - name: alertmanager-storage

? ? ? ? ? mountPath: /alertmanager

? ? ? ? - name: localtime

? ? ? ? ? mountPath: /etc/localtime

? ? ? volumes:

? ? ? ? - name: prometheus-config

? ? ? ? ? configMap:

? ? ? ? ? ? name: prometheus-config

? ? ? ? - name: prometheus-storage-volume

? ? ? ? ? hostPath:

? ? ? ? ? path: /data

? ? ? ? ? type: Directory

? ? ? ? - name: k8s-certs

? ? ? ? ? secret:

? ? ? ? ? secretName: etcd-certs

? ? ? ? - name: alertmanager-config

? ? ? ? ? configMap:

? ? ? ? ? ? name: alertmanager

? ? ? ? - name: alertmanager-storage

? ? ? ? ? hostPath:

? ? ? ? ? path: /data/alertmanager

? ? ? ? ? type: DirectoryOrCreate

? ? ? ? - name: localtime

? ? ? ? ? hostPath:

? ? ? ? ? path: /usr/share/zoneinfo/Asia/Shanghai

生成一個(gè)?etcd-certs,這個(gè)在部署?prometheus?需要

kubectl -n monitor-sa create secret generic etcd-certs --from-file=/etc/kubernetes/pki/etcd/server.key --from-file=/etc/kubernetes/pki/etcd/server.crt --from-file=/etc/kubernetes/pki/etcd/ca.crt

#查看?prometheus?是否部署成功

kubectl get pods -n monitor-sa | grep prometheus

prometheus-server-5bc47cc46d-nzgbn? 1/1? ? Running? ? ? 0? ? ? ? ? 5s

顯示如下,可看到?pod?狀態(tài)是?running,說(shuō)明?prometheus?部署成功

cat alertmanager-svc.yaml

---

apiVersion: v1

kind: Service

metadata:

? labels:

? ? name: prometheus

? ? kubernetes.io/cluster-service: 'true'

? name: alertmanager

? namespace: monitor-sa

spec:

? ports:

? - name: alertmanager

? ? nodePort: 30066 ? ?# 外部機(jī)器可訪問(wèn)的端口。

? ? port: 9093 ? ? ? ? ? ?#kubernetes中的服務(wù)之間訪問(wèn)的端口

? ? protocol: TCP

? ? targetPort: 9093 ? ?# ? ? ??容器的端口(

? selector:

? ? app: prometheus

? sessionAffinity: None

? type: NodePort

kubectl apply -f alertmanager-svc.yaml

#查看?service?在物理機(jī)上映射的端口

kubectl get svc -n monitor-sa

NAME? ? ? ? ? TYPE? ? ? CLUSTER-IP? ? ? EXTERNAL-IP? PORT(S)? ? ? ? ? AGE

alertmanager? NodePort? 10.104.175.75? ? <none>? ? ? ? 9093:30066/TCP? 28m

prometheus? ? NodePort? 10.106.198.175? <none>? ? ? ? 9090:31994/TCP? 22h

注意:上面可以看到?prometheus?的?service?暴漏的端口是?30009,alertmanager?的?service?暴 露的端口是?30066

訪問(wèn)?prometheus?的?web?界面 點(diǎn)擊?status->targets,可看到如下

從上面可以發(fā)現(xiàn)?kubernetes-controller-manager?和?kubernetes-schedule?都顯示連接不上對(duì) 應(yīng)的端口

可按如下方法處理;

vim /etc/kubernetes/manifests/kube-scheduler.yaml?修改如下內(nèi)容:

把--bind-address=127.0.0.1?變成--bind-address=192.168.172.163?把?httpGet:字段下的?hosts?由?127.0.0.1?變成?192.168.172.163?把—port=0?刪除

修改之后在?k8s?各個(gè)節(jié)點(diǎn)執(zhí)行?systemctl restart kubelet

kubectl get cs?顯示如下:

NAME controller-manager scheduler

etcd-0

STATUS Healthy ok

Healthy ok

Healthy {"health":"true"}

ss -antulp | grep :10251

ss -antulp | grep :10252

可以看到相應(yīng)的端口已經(jīng)被物理機(jī)監(jiān)聽(tīng)了 點(diǎn)擊?status->targets,可看到如下

是因?yàn)?kube-proxy?默認(rèn)端口?10249?是監(jiān)聽(tīng)在?127.0.0.1?上的,需要改成監(jiān)聽(tīng)到物理節(jié)點(diǎn)上,按如 下方法修改,線上建議在安裝?k8s?的時(shí)候就做修改,這樣風(fēng)險(xiǎn)小一些:

kubectl edit configmap kube-proxy -n kube-system

把?metricsBindAddress?這段修改成?metricsBindAddress: 0.0.0.0:10249

然后重新啟動(dòng)?kube-proxy?這個(gè)?pod

]# kubectl get pods -n kube-system | grep kube-proxy |awk '{print $1}' | xargs kubectl delete pods -n kube-system

]# ss -antulp |grep :10249

可顯示如下

]# ss -antulp | grep :10249

tcp LISTEN 0 128 [::]:10249

點(diǎn)擊?Alerts,可看到如下

把?kubernetes-etcd?展開(kāi),可看到如下:

FIRING?表示?prometheus?已經(jīng)將告警發(fā)給?alertmanager,在?Alertmanager?中可以看到有一個(gè)?alert。

登錄到?alertmanager web?界面,瀏覽器輸入?192.168.172.163:30066,顯示如下

這樣我在我的?qq?郵箱,就可以收到報(bào)警了

修改?prometheus?任何一個(gè)配置文件之后,可通過(guò)?kubectl apply?使配置生效,執(zhí)行順序如下:?

]# kubectl delete -f alertmanager-cm.yaml

]# kubectl apply -f alertmanager-cm.yaml

]# kubectl delete -f prometheus-alertmanager-cfg.yaml?

# kubectl apply -f prometheus-alertmanager-cfg.yaml?

# kubectl delete-f prometheus-alertmanager-deploy.yaml?

# kubectl apply –f prometheus-alertmanager-deploy.yaml

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,431評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,637評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,555評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,900評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,629評(píng)論 6 412
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,976評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,976評(píng)論 3 448
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 43,139評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,686評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,411評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,641評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,129評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,820評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,233評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,567評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,362評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,604評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容