成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

K8s 云原生應(yīng)用如何接入監(jiān)控.md

數(shù)據(jù)庫 其他數(shù)據(jù)庫
隨著這兩年可觀測性標(biāo)準(zhǔn)的完善,許多廠商都在往 OpenTelemetry 上進(jìn)行遷移,接入 OpenTelemetry 與直接使用 Prometheus 最大的不同是:不再由 Prometheus 主動抓取應(yīng)用指標(biāo),而是由應(yīng)用給 OpenTelemetry-Collector 推送標(biāo)準(zhǔn)化的可觀測數(shù)據(jù)(包含日志、trace、指標(biāo)),再由它遠(yuǎn)程寫入 Prometheus 這類時序數(shù)據(jù)庫中。

前段時間有朋友問我如何在 kubernetes 里搭建監(jiān)控系統(tǒng),恰好在公司也在維護(hù)內(nèi)部的可觀測平臺,正好借這個機(jī)會整理下目前常見的自建監(jiān)控方案。

一個完整的監(jiān)控系統(tǒng)通常包含以下的內(nèi)容:

  • 指標(biāo)暴露:將系統(tǒng)內(nèi)部需要關(guān)注的指標(biāo)暴露出去
  • 指標(biāo)采集:收集并存儲暴露出來的指標(biāo)
  • 指標(biāo)展示:以各種圖表展示和分析收集到的數(shù)據(jù)
  • 監(jiān)控告警:當(dāng)某些關(guān)鍵指標(biāo)在一定時間周期內(nèi)出現(xiàn)異常時,可以及時通知相關(guān)人員

圖片圖片

對于 k8s 的監(jiān)控通常分為兩個部分:

  • k8s 自帶的系統(tǒng)組建
  • 業(yè)務(wù) Pod 暴露出來的監(jiān)控指標(biāo)

系統(tǒng)組建

對于 kubernetes 系統(tǒng)組建可以由 cAdvisor 提供監(jiān)控能力,默認(rèn)情況下這個功能是開箱即用的,我們只需要在 Prometheus 中配置相關(guān)的任務(wù)抓取即可:

- job_name: nodeScrape/monitoring/cadvisor-scrape/0
  scrape_interval: 30s
  scrape_timeout: 15s
  scheme: https
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  tls_config:
    insecure_skip_verify: true
  relabel_configs:
  - source_labels: [__meta_kubernetes_node_name]
    target_label: node
  - action: replace
    source_labels: [__meta_kubernetes_node_name]
    separator: ;
    target_label: __address__
    regex: (.*)
    replacement: kubernetes.default.svc:443
  - action: replace
    source_labels: [__meta_kubernetes_node_name]
    separator: ;
    target_label: __metrics_path__
    regex: (.+)
    replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor

  kubernetes_sd_configs:
  - role: node

圖片圖片

這樣的話就可以監(jiān)控 k8s 的內(nèi)存、CPU 之類的數(shù)據(jù)。

具體提供了哪些指標(biāo)可以參考這里:https://github.com/google/cadvisor/blob/master/docs/storage/prometheus.md#prometheus-container-metrics

也可以找一些常用的監(jiān)控面板:https://grafana.com/grafana/dashboards/13077-kubernetes-monitoring-dashboard-kubelet-cadvisor-node-exporter/

k8s 不但提供了 cAdvisor 的數(shù)據(jù),還有其他類似的 endpoint: /metrics/resource & /metrics/probes

具體暴露出來的指標(biāo)可以參考官方文檔:https://kubernetes.io/docs/concepts/cluster-administration/system-metrics/

業(yè)務(wù)指標(biāo)

對于業(yè)務(wù)應(yīng)用來說第一步也是需要將自己的指標(biāo)暴露出去,如果是 Java 的話可以使用 Prometheus 提供的庫:

<!-- The client -->  
<dependency>  
  <groupId>io.prometheus</groupId>  
  <artifactId>simpleclient</artifactId>  
  <version>0.16.0</version>  
</dependency>  
<!-- Hotspot JVM metrics-->  
<dependency>  
  <groupId>io.prometheus</groupId>  
  <artifactId>simpleclient_hotspot</artifactId>  
  <version>0.16.0</version>  
</dependency>

它會自動將 JVM 相關(guān)的指標(biāo)暴露出去,如果是在 VM 中的應(yīng)用,那只需要簡單的配置下 static_configs 就可以抓取指標(biāo)了:

scrape_configs:  
- job_name: 'springboot'  
scrape_interval: 10s  
static_configs:  
- targets: ['localhost:8080'] # Spring Boot ip+port

但在 kubernetes 中這個 IP 是不固定的,每次重建應(yīng)用的時候都會發(fā)生變化,所以我們需要一種服務(wù)發(fā)現(xiàn)機(jī)制來動態(tài)的找到 Pod 的 IP。

- 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_label_component]
    action: replace
    target_label: job
  - source_labels: [__meta_kubernetes_pod_name]
    action: replace
    target_label: kubernetes_pod_name

Prometheus 提供了一個 kubernetes_sd_configs 的服務(wù)發(fā)現(xiàn)機(jī)制,他會在 kubernetes 中查找 Pod 中是否有配置以下的注解:

template:
  metadata:
    annotations:
      prometheus.io/path: /metrics
      prometheus.io/port: "8082"
      prometheus.io/scrape: "true"

都配置成功后我們便可以在 Prometheus 的管理后臺查看到具體的服務(wù)信息:

圖片圖片

狀態(tài)是 UP 則表明抓取數(shù)據(jù)成功,這樣我們就可以在 Prometheus 中查詢到數(shù)據(jù)了。

圖片圖片

Prometheus 除了支持 k8s 的服務(wù)發(fā)現(xiàn)之外還支持各種各樣的服務(wù)發(fā)現(xiàn),比如你已經(jīng)使用了  Consul 或者是 Erueka 作為注冊中心,也可以直接配置他們的地址然后進(jìn)行服務(wù)發(fā)現(xiàn),這樣應(yīng)用信息發(fā)生變化時 Prometheus 也能及時感知到。

當(dāng)然 docker/http/docker 等都是支持的,可以按需選擇。

OpenTelemetry

隨著這兩年可觀測性標(biāo)準(zhǔn)的完善,許多廠商都在往 OpenTelemetry 上進(jìn)行遷移,接入 OpenTelemetry 與直接使用 Prometheus 最大的不同是:

不再由 Prometheus 主動抓取應(yīng)用指標(biāo),而是由應(yīng)用給 OpenTelemetry-Collector 推送標(biāo)準(zhǔn)化的可觀測數(shù)據(jù)(包含日志、trace、指標(biāo)),再由它遠(yuǎn)程寫入 Prometheus 這類時序數(shù)據(jù)庫中。

整體流程圖如下:

圖片圖片

對應(yīng)用的最大的區(qū)別就是可以不再使用剛才提到 Prometheus 依賴,而是只需要掛載一個 javaagent 即可:

java -javaagent:opentelemetry-javaagent-2.4.0-SNAPSHOT.jar \  
-Dotel.traces.exporter=otlp \  
-Dotel.metrics.exporter=otlp \  
-Dotel.logs.exporter=none \  
-Dotel.service.name=java-demo \  
-Dotel.exporter.otlp.protocol=grpc \  
-Dotel.propagators=tracecontext,baggage \  
-Dotel.exporter.otlp.endpoint=http://127.0.0.1:5317 -jar target/demo-0.0.1-SNAPSHOT.jar

而其中會新增的一個 OpenTelemetry-Collector項目,由它將收到的指標(biāo)數(shù)據(jù)轉(zhuǎn)發(fā)給 Prometheus,所以在它的配置里會配置 Prometheus 的地址:

exporters:
  otlphttp/prometheus:
    endpoint: http://prometheus:9292/api/v1/otlp
    tls:
      insecure: true

總結(jié)

關(guān)于 Prometheus 的安裝可以參考官方的 operator 或者是 helm:https://github.com/prometheus-operator/kube-prometheus。

當(dāng)然如果不想使用 Prometheus 也推薦使用 VictoriaMetrics,是一個完全兼容 Prometheus 但是資源占用更少的時序數(shù)據(jù)庫。

參考鏈接:

責(zé)任編輯:武曉燕 來源: crossoverJie
相關(guān)推薦

2021-08-13 07:00:41

云原生k8sspringboot

2021-08-26 07:20:05

云原生K8sSpringboot

2024-09-26 09:50:07

2022-07-18 18:48:32

Kubernetes云原生

2023-03-06 07:19:50

2021-04-25 10:26:58

云計算云原生

2020-12-22 07:42:05

云原生開源項目k8s

2023-03-03 07:54:21

2022-04-07 10:17:18

云原生服務(wù)器優(yōu)化

2023-03-07 07:56:37

Sqoopk8s底層

2022-11-08 08:55:31

2022-10-14 07:42:50

LuceneHTTPWeb

2024-06-12 13:21:06

2023-02-08 07:55:33

K8sHPA服務(wù)器

2022-11-06 21:31:11

云原生Sentinel集群模式

2023-08-04 08:19:02

2023-03-01 07:42:12

HBase編排部署數(shù)據(jù)

2024-06-06 09:19:09

2023-09-06 08:12:04

k8s云原生

2021-06-04 06:01:49

Yarn workspTypeScript云原生
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: aaa综合国产| 国产精品国产三级国产aⅴ中文 | 三区四区在线观看 | 欧美日韩中文字幕在线播放 | 亚洲精品v日韩精品 | 综合久久久 | 国产91精品久久久久久久网曝门 | av片免费观看 | 欧美精品久久久 | av网站在线看 | 久久99精品久久久97夜夜嗨 | 人人草天天草 | 中文字幕在线二区 | 国产成人精品一区二区三区网站观看 | 国产精品福利视频 | 久久久免费观看视频 | 欧美成人精品一区二区三区 | 91麻豆精品一区二区三区 | 亚洲一区二区三区免费在线观看 | 日日草夜夜草 | 91精品国产综合久久久久久首页 | 毛片一级片 | 欧美综合网 | 国产在线精品一区二区 | 日韩一区二区三区视频在线播放 | 欧美激情国产日韩精品一区18 | 影音先锋久久 | 天天操天天射综合网 | 久久精品国产亚洲a | 久久免费精品视频 | 婷婷开心激情综合五月天 | 久久久无码精品亚洲日韩按摩 | 综合久久久久 | 一区二区三区四区毛片 | www.色.com | 欧美日韩一区在线 | 男女视频91 | 免费一级欧美在线观看视频 | 亚洲成人一区 | 国产精品久久久久久久一区探花 | 欧美在线 |