精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

探索 Prometheus Agent + GreptimeDB:輕量級(jí)監(jiān)控的未來

開發(fā) 開發(fā)工具
Prometheus 一直是 Kubernetes 生態(tài)中不可或缺的監(jiān)控工具。然而,隨著分布式系統(tǒng)的復(fù)雜性增加以及邊緣計(jì)算、Serverless 技術(shù)的廣泛應(yīng)用,傳統(tǒng)的 Prometheus Server 已不再適合所有場景。為了應(yīng)對(duì)這些挑戰(zhàn),Prometheus 引入了一種輕量級(jí)運(yùn)行模式:Prometheus Agent。

引言

緊接上篇的文章,我們繼續(xù)往上蓋大樓,現(xiàn)在我們已經(jīng)蓋到了第 500 樓了,不要往下看,除非你是勇者,不然你會(huì)嚇到你自己。

這一篇的東西也是挺多的:Prometheus Agent。

Prometheus 一直是 Kubernetes 生態(tài)中不可或缺的監(jiān)控工具。然而,隨著分布式系統(tǒng)的復(fù)雜性增加以及邊緣計(jì)算、Serverless 技術(shù)的廣泛應(yīng)用,傳統(tǒng)的 Prometheus Server 已不再適合所有場景。為了應(yīng)對(duì)這些挑戰(zhàn),Prometheus 引入了一種輕量級(jí)運(yùn)行模式:Prometheus Agent。

Prometheus Agent 專注于指標(biāo)的采集和推送,省去了存儲(chǔ)和查詢的功能,使其在資源受限的環(huán)境中更加高效。

本文將詳細(xì)介紹 Prometheus Agent 的運(yùn)行機(jī)制、使用場景以及部署方式,并分享一些最佳實(shí)踐。

介紹

什么是 Prometheus Agent?

Prometheus Agent 是 Prometheus 自 v2.33.0 版本起引入的一種運(yùn)行模式,其主要特點(diǎn)包括:

  • ? 輕量化:專注于數(shù)據(jù)的采集與推送,不存儲(chǔ)數(shù)據(jù),也不提供查詢能力。
  • ? 高效:減少了本地存儲(chǔ)和查詢相關(guān)的資源占用。
  • ? 推送模式:通過 remote_write 將采集到的指標(biāo)推送到遠(yuǎn)程存儲(chǔ)或中央 Prometheus Server。

這種模式特別適合邊緣場景、Serverless 環(huán)境以及需要集中化監(jiān)控的分布式系統(tǒng)。

Prometheus Agent 的適用場景

邊緣計(jì)算

在邊緣計(jì)算場景中,設(shè)備通常資源有限,難以運(yùn)行完整的 Prometheus Server。Prometheus Agent 通過其輕量化特性,可以高效采集邊緣設(shè)備的指標(biāo),并將數(shù)據(jù)推送到中央監(jiān)控系統(tǒng)。

Serverless 環(huán)境

對(duì)于 Serverless 服務(wù)(如函數(shù)計(jì)算、API 網(wǎng)關(guān)等),Prometheus Agent 可以動(dòng)態(tài)采集相關(guān)指標(biāo),并避免因存儲(chǔ)和查詢功能導(dǎo)致的資源浪費(fèi)。

集中式監(jiān)控

在大型分布式系統(tǒng)中,可通過在每個(gè)子系統(tǒng)中部署 Prometheus Agent,將所有數(shù)據(jù)集中推送到遠(yuǎn)程存儲(chǔ)(如 Cortex、Thanos),實(shí)現(xiàn)統(tǒng)一的存儲(chǔ)與查詢。

高性能監(jiān)控

對(duì)于大規(guī)模集群,Agent 模式可減少單點(diǎn) Prometheus Server 的負(fù)載,將存儲(chǔ)和查詢功能卸載到遠(yuǎn)程存儲(chǔ)。

為什么需要 Prometheus Agent

Prometheus Agent 其實(shí)只是 Prometheus 的一種特殊運(yùn)行狀態(tài),在 prometheus-operator 中以 PrometheusAgent 這個(gè) CRD 體現(xiàn),但其內(nèi)部控制邏輯與 Prometheus CRD 一致。

之所以需要 Prometheus Agent,我們其實(shí)可以從 Prometheus 的官方文檔[1]一窺究竟。Prometheus Agent 本質(zhì)上就是將時(shí)序數(shù)據(jù)庫能力從 Prometheus 中剝離,并優(yōu)化 Remote Write 性能,從而讓其成為了一個(gè)支持 Prometheus 采集語義的高性能 Agent。這樣一來,Prometheus Agent 還可以部署在一些資源受限的邊緣場景進(jìn)行數(shù)據(jù)采集。

“眾所周知”,Prometheus 作為數(shù)據(jù)庫而言,查詢性能和可擴(kuò)展性相對(duì)較弱,這也是為什么 Remote Write 會(huì)如此流行以至于又成為了一個(gè)事實(shí)上的標(biāo)準(zhǔn):因?yàn)榇蠹叶枷M麑?shù)據(jù)轉(zhuǎn)存在性能更高的數(shù)據(jù)庫上但又希望繼續(xù)兼容 Prometheus 的采集邏輯(因?yàn)楹芎糜茫gent 模式其實(shí)如大家所意,禁用了查詢、報(bào)警和本地存儲(chǔ)功能,并用了一個(gè)特殊的 TSDB WAL 來臨時(shí)存儲(chǔ)數(shù)據(jù),從而整體架構(gòu)如下所示:

圖片圖片

這種架構(gòu)某種程度是推拉結(jié)合的模式。Metrics 的采集采用 Pull 模式,而其存儲(chǔ)則采用 Push 模式。對(duì)于高吞吐的寫入,Push 模式其實(shí)對(duì)寫入更友好。因?yàn)槲覀兛偸强梢砸?Batch 模式來集中向遠(yuǎn)端寫入大批數(shù)據(jù)。這種模式下的 Prometheus 其實(shí)是無狀態(tài),更便于部署和 Scrape Job 的分片。

其實(shí),這類兼容 Prometheus 采集語義的 Agent 社區(qū)有不少可供選擇,比如 vmagent[2] 和 vector[3]。VictoriaMetrics 還曾經(jīng)對(duì) Prometheus Agent, vmagant 和 Grafana Agant 做過一個(gè)性能報(bào)告[4]。不過很快,Grafana Agent 就停止開發(fā)并轉(zhuǎn)成維護(hù)模式[5]。Grafana 又造了另一個(gè)項(xiàng)目 Alloy[6],重點(diǎn)支持 OpenTelemetry,當(dāng)然又造了一個(gè)與 Terraform 語法酷似的配置語言的 DSL。

從長期技術(shù)演技來看,Agent 總是兵家必爭之地,因?yàn)榭梢允刈?shù)據(jù)入口可以做的事情比較多。大家總是希望 Agent 能:

? 具有極低的 CPU 和 Memory footprint,因?yàn)樗鼈兺ǔ?huì)以 sidecar 或者 daemonset 的形式進(jìn)行部署,資源極度受限;

? 兼容更多的前端采集協(xié)議和后端寫入邏輯;

? 具備一定的數(shù)據(jù)的編排能力(或者稱為 pipeline ?),即采集后的數(shù)據(jù)能以一定的規(guī)則進(jìn)行改寫和轉(zhuǎn)換;

? 技術(shù)中立;

Prometheus Agent 數(shù)據(jù)采集工作流程

采集目標(biāo)的發(fā)現(xiàn):

? 如果你使用 scrape_configs,Agent 會(huì)直接按照配置中的 targets 抓取數(shù)據(jù)。

? 如果你使用 ServiceMonitor 或 PodMonitor,Agent 會(huì)通過 Prometheus Operator 的自動(dòng)發(fā)現(xiàn)機(jī)制,找到符合條件的服務(wù)或 Pod(我們使用這種方式)。 數(shù)據(jù)采集:

? Prometheus Agent 會(huì)周期性地訪問這些目標(biāo)的 /metrics 端點(diǎn),抓取指標(biāo)數(shù)據(jù)。 數(shù)據(jù)推送:

? Agent 使用 remote_write 將采集到的指標(biāo)數(shù)據(jù)推送到遠(yuǎn)程存儲(chǔ)(例如 Prometheus Server 或 GreptimeDB)。

開始

與 GreptimeDB 的集成

GreptimeDB[7] 作為一個(gè)新款的開源 TSDB 很早就支持了 Prometheus Remote Write[8]。我們其實(shí)可以直接使用 PrometheusAgent 這個(gè) CRD 來定義基于 GreptimeDB Remote Write 的 Prometheus Agent。這樣以來,用戶其實(shí)無需做過多 CR 的改動(dòng)就能直接將數(shù)據(jù)接入到 GreptimeDB 中。

這邊的思路是所有的數(shù)據(jù)都存儲(chǔ)在 遠(yuǎn)程存儲(chǔ) 中,Prometheus 本身不存儲(chǔ)數(shù)據(jù)

部署 greptimedb-operator[9]

helm repo add greptime https://greptimeteam.github.io/helm-charts/
helm repo update

helm upgrade \
  --install \
  --create-namespace \
  greptimedb-operator greptime/greptimedb-operator \
  -n greptimedb

greptimedb-operator[10] 同時(shí)支持管理 GreptimeDB Standalone 和 Cluster 模式,用戶可以根據(jù)自己需要?jiǎng)?chuàng)建相應(yīng)的 CR。

快速啟動(dòng)一個(gè) Standalone 模式下的 GreptimeDB

用的資源比較多,畢竟需要存儲(chǔ)大量數(shù)據(jù),還要被 Prometheus 讀取

apiVersion: greptime.io/v1alpha1
kind: GreptimeDBStandalone
metadata:
  name: greptimedb
  namespace: greptimedb-admin
spec:
  base:
    main:
      image: greptime/greptimedb:latest
      resources:
        limits:
          cpu: "4"
          memory: "7Gi"
        requests:
          cpu: "2"
          memory: "4Gi"

我們可以通過觀察 GreptimeDBStandalone 的狀態(tài)來判斷其是否啟動(dòng)成功:

$ kubectl get all
NAME                             READY   STATUS    RESTARTS   AGE
pod/greptimedb-standalone-0   1/1     Running   0          23s

NAME                               TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)                               AGE
service/kubernetes                 ClusterIP   192.168.194.129   <none>        443/TCP                               36d
service/greptimedb-standalone   ClusterIP   192.168.194.245   <none>        4001/TCP,4000/TCP,4002/TCP,4003/TCP   23s

NAME                                        READY   AGE
statefulset.apps/greptimedb-standalone   1/1     23s

Ingress:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: greptimedb
  namespace: greptimedb-admin
spec:
  ingressClassName: nginx
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: greptimedb-standalone
                port:
                  name: http
      host: greptimedb.kubernetes.click

優(yōu)化 GreptimeDB 的配置文件:

jacobleo@Jacobs-MacBook-Air greptimedb % kgcm -ngreptimedb-admin
NAME                    DATA   AGE
kube-root-ca.crt        1      4d18h
greptimedb-standalone   1      50m

jacobleo@Jacobs-MacBook-Air greptimedb % k edit cm greptimedb-standalone -ngreptimdb-admin
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
  config.toml: |2

    [logging]
      dir = "/data/greptimedb/logs"
      level = "debug" # 我們這里先改成 degub,獲取更多的信息,生產(chǎn)建議使用 info 或者 warn
      log_format = "json" # 我們這里配置成 json,方便后面日志采集(ELK),或者其他之類的

    [storage]
      data_home = "/data/greptimedb"
      ttl = 27 # 我們這里配置了數(shù)據(jù)的保留天數(shù)

    [wal]
      dir = "/data/greptimedb/wal"
kind: ConfigMap
metadata:
  annotations:
    controller.greptime.io/last-applied-resource-spec: '{"config.toml":"\n[logging]\n  dir
      = \"/data/greptimedb/logs\"\n  level = \"info\"\n  log_format = \"text\"\n\n[storage]\n  data_home
      = \"/data/greptimedb\"\n\n[wal]\n  dir = \"/data/greptimedb/wal\"\n"}'
  creationTimestamp: "2025-01-14T03:33:43Z"
  name: greptimedb-standalone
  namespace: greptimedb-admin
  ownerReferences:
  - apiVersion: greptime.io/v1alpha1
    blockOwnerDeletion: true
    controller: true
    kind: GreptimeDBStandalone
    name: greptimedb
    uid: 1ae5a33d-f260-48ad-b6ca-609c1cbb262a
  resourceVersion: "318496"
  uid: baa0588e-1ab6-4453-8e37-2f5ea2c1b00d

更改完成后,等待 Pod 重啟,如果不行,就手動(dòng)重啟

數(shù)據(jù)可視化

自 GreptimeDB v0.2.0 版本以來,控制臺(tái)已經(jīng)默認(rèn)嵌入到 GreptimeDB 的 binary 文件中。在啟動(dòng) GreptimeDB 單機(jī)版[11]或分布式集群[12]后,可以通過 URL http://localhost:4000/dashboard 訪問控制臺(tái),我這邊使用的 Ingress。控制臺(tái)支持多種查詢語言,包括 SQL 查詢[13]和 PromQL 查詢[14]。

提供不同種類的圖表,可以根據(jù)不同的場景進(jìn)行選擇。當(dāng)你有足夠的數(shù)據(jù)時(shí),圖表的內(nèi)容將更加豐富。

圖片圖片

可以看到并沒有什么大問題,但是到后面我感覺到有一個(gè) Bug,就是它有時(shí)候會(huì)莫名其妙地不能訪問(可能是我 Mac 本地環(huán)境的原因,我使用的 OrbStack[15](可以幫助我迅速啟動(dòng)一個(gè) K8s 集群, 只支持 Mac)),就是 404 Not Found,我后來就是在它的 YAML 文件換一下鏡像,然后重新部署就好了,很奇怪,當(dāng)時(shí)弄了半天。

看到這里,如果 GreptimeDB 的相關(guān)人員看到了,希望重視下這個(gè)問題。

創(chuàng)建 Promethus Agent 實(shí)例并將 Remote Write 設(shè)置為 GreptimeDB

apiVersion: v1
kind: ServiceAccount
metadata:
  name: prometheus-agent
  namespace: greptimedb-admin
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: prometheus-agent
rules:
  - apiGroups: ["monitoring.coreos.com"]
    resources: 
      - servicemonitors
      - podmonitors
      - prometheuses
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources:
      - nodes
      - nodes/metrics
      - services
      - endpoints
      - pods
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources:
      - configmaps
    verbs: ["get"]
  - apiGroups:
      - discovery.k8s.io
    resources:
      - endpointslices
    verbs: ["get", "list", "watch"]
  - apiGroups:
      - networking.k8s.io
    resources:
      - ingresses
    verbs: ["get", "list", "watch"]
  - nonResourceURLs: ["/metrics"]
    verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: prometheus-agent
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: prometheus-agent
subjects:
  - kind: ServiceAccount
    name: prometheus-agent
    namespace: greptimedb-admin
---
apiVersion: monitoring.coreos.com/v1alpha1
kind: PrometheusAgent
metadata:
  name: prometheus-agent
  namespace: greptimedb-admin
spec:
  image: quay.io/prometheus/prometheus:v2.53.0
  replicas: 1
  serviceAccountName: prometheus-agent

這邊配置下 GreptimeDB,我是用 Ingress 給 GreptimeDB 做的域名解析,你自己可以選擇

·····
  enableFeatures:
    - agent  # 啟用 Prometheus Agent 模式
  remoteWrite:
    - url: http://greptimedb.kubernetes.click/v1/prometheus/write?db=public
      queueConfig:  # 可選配置,用于優(yōu)化數(shù)據(jù)發(fā)送性能
        capacity: 5000 # 緩沖區(qū)容量
        maxSamplesPerSend: 10000 # 每次發(fā)送的樣本數(shù)
        batchSendDeadline: 5s # 批量發(fā)送的最大等待時(shí)間
·····

如果你想要更嚴(yán)謹(jǐn)?shù)卣胰ツ阆胍臄?shù)據(jù),可以使用下面的,你們需要替換你們自己的 Label

serviceMonitorSelector:
    matchExpressions:
      - key: app
        operator: In
        values:
          - frontend
          - backend
      - key: environment
        operator: NotIn
        values:
          - dev
  podMonitorSelector:
    matchExpressions:
      - key: team
        operator: Exists
  namespaceSelector:
    matchNames:
      - default
      - monitoring

serviceMonitorSelector 和 podMonitorSelector:Prometheus-Agent 會(huì)根據(jù)這些選擇器,動(dòng)態(tài)發(fā)現(xiàn)并抓取符合條件的 ServiceMonitor 和 PodMonitor 還有 namespaceSelector 指定的指標(biāo)。

matchExpressions 語法

? key: 標(biāo)簽的名稱。

? operator:

a.In: 標(biāo)簽值必須在 values 列表中。

b.NotIn: 標(biāo)簽值不能在 values 列表中。

c.Exists: 標(biāo)簽必須存在。

d.DoesNotExist: 標(biāo)簽不能存在。

? values: 用于匹配的值列表(僅適用于 In 和 NotIn 操作符)。

示例邏輯

? 匹配 app 標(biāo)簽的值是 frontend 或 backend。

? 排除 environment 標(biāo)簽的值為 dev 的目標(biāo)。

? 包含所有有 team 標(biāo)簽的 PodMonitor。

namespaceSelector

? 限定匹配的命名空間,例如 default 和 monitoring。

但是如果你想要匹配所有的話,可以這樣:

serviceMonitorSelector: {}
  serviceMonitorNamespaceSelector: {}
  podMonitorNamespaceSelector: {}
  podMonitorSelector: {}

Resources 優(yōu)化

它占用的資源也是挺多的

resources:
    limits:
      cpu: "2"       # 最大可使用的 2 個(gè) CPU
      memory: "4Gi"  # 最大可使用 4GB 內(nèi)存
    requests:
      cpu: "1"       # 最少需要 1 個(gè) CPU
      memory: "2Gi"  # 最少需要 2GB 內(nèi)存

完整 YAML 文件

apiVersion: v1
kind: ServiceAccount
metadata:
  name: prometheus-agent
  namespace: greptimedb-admin
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: prometheus-agent
rules:
  - apiGroups: ["monitoring.coreos.com"]
    resources: 
      - servicemonitors
      - podmonitors
      - prometheuses
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources:
      - nodes
      - nodes/metrics
      - services
      - endpoints
      - pods
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources:
      - configmaps
    verbs: ["get"]
  - apiGroups:
      - discovery.k8s.io
    resources:
      - endpointslices
    verbs: ["get", "list", "watch"]
  - apiGroups:
      - networking.k8s.io
    resources:
      - ingresses
    verbs: ["get", "list", "watch"]
  - nonResourceURLs: ["/metrics"]
    verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: prometheus-agent
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: prometheus-agent
subjects:
  - kind: ServiceAccount
    name: prometheus-agent
    namespace: greptimedb-admin
---
apiVersion: monitoring.coreos.com/v1alpha1
kind: PrometheusAgent
metadata:
  name: prometheus-agent
  namespace: greptimedb-admin
spec:
  image: quay.io/prometheus/prometheus:v2.53.0
  replicas: 1
  serviceAccountName: prometheus-agent
  enableFeatures: 
    - agent
  remoteWrite:
    - url: "http://greptimedb.kubernetes.click/v1/prometheus/write?db=public"
      queueConfig:
        capacity: 5000
        maxSamplesPerSend: 10000
        batchSendDeadline: 5s
  serviceMonitorSelector: {}
  serviceMonitorNamespaceSelector: {}
  podMonitorNamespaceSelector: {}
  resources:
    limits:
      cpu: "2"
      memory: "4Gi"
    requests:
      cpu: "1"
      memory: "2Gi"

Apply

$ kubectl apply -f prom-agent.yaml

我部署完成之后,就一直報(bào)錯(cuò),當(dāng)時(shí)很納悶:

圖片圖片

弄了半天,問題才發(fā)現(xiàn)是版本的問題。

我的 Prometheus-Operator 的 Prometheus 是 3.0.1 版本,而我的 Prometheus Agent 使用的版本是 2.53.0,所以,這邊把我的 Prometheus Agent 的版本改成和 Prometheus 的版本,就可以了。

$ kg all
NAME                                READY   STATUS    RESTARTS   AGE
pod/greptimedb-standalone-0      1/1     Running   0          122m
pod/prom-agent-prometheus-agent-0   2/2     Running   0          81s

NAME                                TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)                               AGE
service/kubernetes                  ClusterIP   192.168.194.129   <none>        443/TCP                               36d
service/greptimedb-standalone    ClusterIP   192.168.194.178   <none>        4001/TCP,4000/TCP,4002/TCP,4003/TCP   122m
service/prometheus-agent-operated   ClusterIP   None              <none>        9090/TCP                              82s

NAME                                           READY   AGE
statefulset.apps/greptimedb-standalone      1/1     122m
statefulset.apps/prom-agent-prometheus-agent   1/1     81s

更新 Prometheus YAML 文件

我這邊使用的是 Prometheus-Operator 的 Github[16] 倉庫,這邊沒有使用 Helm 安裝,使用的 Manifest

····
  remoteWrite:     # 你這邊也可以設(shè)置成 remoteRead,取決于你什么場景,然后 url 后面的也要換了
    - url: "http://greptimedb.kubernetes.click/v1/prometheus/write?db=public"
      queueConfig:
        capacity: 5000
        maxSamplesPerSend: 10000
        batchSendDeadline: 5s
  retention: 1h # 將數(shù)據(jù)保留時(shí)間設(shè)置為最短
  scrapeInterval: 10s
  storage:
    volumeClaimTemplate:    # 我這里沒有指定 SC,如果沒有指定,它就會(huì)使用我安裝的默認(rèn)的 SC
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
····

最后我們來看下我們上面兩個(gè) Pod 的資源占用情況

jacobleo@Jacobs-MacBook-Air greptimedb % k top pod -ngreptimedb-admin
NAME                                   CPU(cores)   MEMORY(bytes)   
greptimedb-operator-7c67868d4b-7vmtp   9m           71Mi
greptimedb-standalone-0                341m         5110Mi
prom-agent-prometheus-agent-0          72m          850Mi

可以看到,它們的資源占用還是挺夸張的

測(cè)試連接 GreptimeDB

安裝 MySQL 客戶端

我這邊使用的是 Mac

在 Linux

如果你使用的是 Ubuntu 或其他基于 Debian 的發(fā)行版:

sudo apt update
sudo apt install mysql-client -y

如果你使用的是 CentOS 或基于 RedHat 的發(fā)行版:

sudo yum install mysql -y
在 macOS

你可以使用 Homebrew 來安裝:

brew install mysql-client

注意:安裝完成后,可能需要將 MySQL 客戶端的路徑加入環(huán)境變量。運(yùn)行以下命令:

echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

sudo ln -s /opt/homebrew/Cellar/mysql-client/9.1.0/bin/mysql /usr/local/bin/mysql
在 Windows

? 下載并安裝 MySQL Shell 或 MySQL Workbench 客戶端工具。

? 官方下載鏈接:MySQL Community Downloads[17]

使用 MySQL 客戶端連接服務(wù)

一旦安裝完成,你可以通過以下命令連接到目標(biāo)服務(wù):

通過 kubectl port-forward

確保你暴露了服務(wù)端口,例如:

kubectl port-forward service/greptimedb-standalone 4002:4002 -ngreptimedb-admin

然后使用 MySQL 客戶端

mysql -h 127.0.0.1 -P 4002 -u root -p

測(cè)試數(shù)據(jù)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| greptime_private   |
| information_schema |
| public             |
+--------------------+
3 rows in set (0.13 sec)





mysql> use public;
Database changed

mysql> show tables;  # 數(shù)據(jù)太多,省略了些
+-------------------------------------------------------------------------------------+
| Tables                                                                              |
+-------------------------------------------------------------------------------------+
| :node_memory_MemAvailable_bytes:sum                                                 |
| ALERTS                                                                              |
| ALERTS_FOR_STATE                                                                    |
| aggregator_discovery_aggregation_count_total                                        |
| aggregator_unavailable_apiservice                                                   |
| aggregator_unavailable_apiservice_total                                             |
| alertmanager_alerts                                                                 |
| alertmanager_alerts_invalid_total                                                   |
| alertmanager_alerts_received_total                                                  |
| alertmanager_build_info                                                             |
| alertmanager_cluster_alive_messages_total                                           |
| alertmanager_cluster_enabled                                                        |
| alertmanager_cluster_failed_peers                                                   |
| alertmanager_cluster_health_score                                                   |
| alertmanager_cluster_members                                                        |
| alertmanager_cluster_messages_pruned_total                                          |
| alertmanager_cluster_messages_queued                                                |
| alertmanager_cluster_messages_received_size_total                                   |
| alertmanager_cluster_messages_received_total                                        |
| alertmanager_cluster_messages_sent_size_total                                       |
| alertmanager_cluster_messages_sent_total                                            |
| alertmanager_cluster_peer_info                                                      |
| alertmanager_cluster_peers_joined_total                                             |
| alertmanager_cluster_peers_left_total                                               |
| alertmanager_cluster_peers_update_total                                             |
| alertmanager_cluster_pings_seconds_bucket                                           |
| alertmanager_cluster_pings_seconds_count                                            |
| alertmanager_cluster_pings_seconds_sum                                              |
| alertmanager_cluster_reconnections_failed_total                                     |
| alertmanager_cluster_reconnections_total                                            |
| alertmanager_cluster_refresh_join_failed_total                                      |
| alertmanager_cluster_refresh_join_total                                             |
| alertmanager_config_hash                                                            |
| alertmanager_config_last_reload_success_timestamp_seconds                           |

數(shù)據(jù)寫入成功 !

使用 Grafana 渲染數(shù)據(jù)

我們可以直接跳過 Remote Read 直接對(duì)接 GreptimeDB,將其作為 Prometheus Datasource,設(shè)置對(duì)應(yīng)的 URL 為:http://greptimedb.kubernetes.click/v1/prometheus/

我們這里配置我們的 YAML 文件,配置兩個(gè)數(shù)據(jù)源,我們可以做個(gè)對(duì)比。

apiVersion: v1
kind: Secret
metadata:
  labels:
    app.kubernetes.io/component: grafana
    app.kubernetes.io/name: grafana
    app.kubernetes.io/part-of: kube-prometheus
    app.kubernetes.io/version: 11.4.0
  name: grafana-datasources
  namespace: monitoring
stringData:
  datasources.yaml: |-
    {
        "apiVersion": 1,
        "datasources": [
            {
                "access": "proxy",
                "editable": false,
                "name": "prometheus",
                "orgId": 1,
                "type": "prometheus",
                "url": "http://prom-kubernetes.click",
                "version": 1
            },
            {
                "access": "proxy",
                "editable": false,
                "name": "greptimedb",
                "orgId": 1,
                "type": "prometheus",
                "url": "http://greptimedb.kubernetes.click/v1/prometheus",
                "version": 1
            }
        ]
    }
type: Opaque

驗(yàn)證 Grafana

只有一小部分的 Dashboard 有數(shù)據(jù),大部分都沒有,真的很納悶

沒有數(shù)據(jù)的

圖片圖片

有數(shù)據(jù)的

圖片

可以看到我們報(bào)錯(cuò)了,我這里使用 Prometheus 作為數(shù)據(jù)源沒有問題,但是使用 GreptimeDB 就有點(diǎn)問題,但是我們確實(shí)有數(shù)據(jù)

圖片

我們大家可以思考下,這個(gè)問題我覺得涉及的范圍還是挺大的,我感覺是權(quán)限的問題 RBAC 之類的,或者是 Prometheus 寫入的問題,或者是 Prometheus-agent 搜集的問題

可能原因

數(shù)據(jù)源不匹配

當(dāng)前的 Grafana Dashboard 是基于某些特定的數(shù)據(jù)源和字段(例如 cluster 字段)設(shè)計(jì)的。

但是,數(shù)據(jù)源(比如 Prometheus 或 GreptimeDB)中可能沒有這些字段。

不完整的數(shù)據(jù)

如果 Prometheus 或 GreptimeDB 中沒有完整的數(shù)據(jù)(比如缺少某些 Kubernetes 相關(guān)的指標(biāo)),查詢這些字段會(huì)導(dǎo)致錯(cuò)誤。

比如,你的數(shù)據(jù)源中沒有 kube_namespace_status_phase, kube_pod_info, 等字段。

GreptimeDB 的數(shù)據(jù)不兼容

如果通過 Prometheus Remote Write 將數(shù)據(jù)寫入 GreptimeDB,但沒有正確配置查詢映射,GreptimeDB 中的數(shù)據(jù)結(jié)構(gòu)可能與 Dashboard 的預(yù)期不匹配。

Dashboard 配置問題

使用的 Dashboard 是針對(duì)不同環(huán)境(或數(shù)據(jù)源)的。比如,這個(gè) Dashboard 可能是為標(biāo)準(zhǔn)的 Prometheus 配置的,而不是你的特定場景。

字段不匹配

GreptimeDB 和 Prometheus 原始格式存在差異。當(dāng)前的 Grafana Dashboard 很可能是為 Prometheus 數(shù)據(jù)源設(shè)計(jì)的,查詢語句中引用了 cluster 等字段,而這些字段可能在 GreptimeDB 中不存在或沒有被正確映射。

Prometheus Remote Write 不完整

如果 Prometheus 的 Remote Write 配置不正確,寫入到 GreptimeDB 的數(shù)據(jù)可能不包含全部指標(biāo)。例如,某些 Kubernetes 相關(guān)的指標(biāo)可能被過濾掉了。

GreptimeDB 數(shù)據(jù)格式的差異

GreptimeDB 存儲(chǔ)時(shí)可能對(duì) Prometheus 的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了優(yōu)化或調(diào)整,導(dǎo)致字段名、格式等與 Dashboard 的查詢不匹配。

GreptimeDB 的查詢兼容性

GreptimeDB 是否完全兼容 PromQL(Prometheus Query Language)也需要驗(yàn)證。如果不完全兼容,則某些 Grafana 查詢可能無法執(zhí)行。

引用鏈接

[1] 官方文檔:https://prometheus.io/blog/2021/11/16/agent/

[2]vmagent:https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/docs/vmagent.md

[3]vector:https://vector.dev/docs/reference/configuration/sources/prometheus_scrape/#how-it-works

[4]性能報(bào)告:https://victoriametrics.com/blog/comparing-agents-for-scraping/

[5]維護(hù)模式:https://github.com/grafana/agent

[6]Alloy:https://github.com/grafana/alloy

[7]GreptimeDB:https://github.com/GrepTimeTeam/greptimedb

[8]Prometheus Remote Write:https://docs.greptime.com/user-guide/write-data/prometheus

[9]部署 greptimedb-operator:https://github.com/GreptimeTeam/helm-charts/tree/main/charts/greptimedb-operator

[10]greptimedb-operator:https://github.com/GreptimeTeam/greptimedb-operator

[11]單機(jī)版:https://docs.greptime.com/zh/getting-started/installation/greptimedb-standalone[

12]分布式集群:https://docs.greptime.com/zh/getting-started/installation/greptimedb-cluster

[13]SQL 查詢:https://docs.greptime.com/zh/user-guide/query-data/sql

[14]PromQL 查詢:https://docs.greptime.com/zh/user-guide/query-data/promql

[15]OrbStack:https://orbstack.dev/

[16]Github:https://github.com/prometheus-operator/prometheus-operator[17]MySQL Community Downloads: https://dev.mysql.com/downloads/

責(zé)任編輯:武曉燕 來源: 云原生運(yùn)維圈
相關(guān)推薦

2023-05-04 07:26:22

LXQt 1.3.0桌面

2024-12-23 06:10:00

RustRigAI Agent

2023-02-03 15:21:52

2023-08-18 17:25:45

掘力計(jì)劃大語言模型

2025-01-26 15:44:29

2009-07-17 14:38:51

輕量級(jí)Swing組件

2009-07-14 18:05:28

輕量級(jí)Swing組件

2023-06-27 16:42:18

Tinygrad深度學(xué)習(xí)工具

2022-12-29 09:49:06

輕量級(jí)架構(gòu)決策

2022-07-15 16:39:19

PythonWhoosh工具

2014-06-11 20:46:51

Monitorix監(jiān)控系統(tǒng)

2016-10-14 16:35:39

2009-09-11 08:26:49

Linux系統(tǒng)CRUX 2.6Linux

2023-08-09 08:01:38

場景Redis接口

2020-06-19 15:38:08

分析工具GoatCounter開發(fā)

2018-07-19 11:18:45

餓了么時(shí)序數(shù)據(jù)庫監(jiān)控系統(tǒng)

2023-09-14 09:31:21

Docker容器

2021-03-02 09:35:33

Python循環(huán)開發(fā)

2022-03-14 08:02:08

輕量級(jí)動(dòng)態(tài)線程池
點(diǎn)贊
收藏

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

欧美在线观看网址综合| 精品乱人伦一区二区三区| 欧美日韩精品免费看| 伊人久久亚洲综合| 一区二区三区四区在线观看国产日韩| 欧美一区二区三区小说| 免费毛片网站在线观看| 第九色区av在线| 国产乱人伦精品一区二区在线观看 | 琪琪久久久久日韩精品| 91成人免费网站| 国产精品va在线观看无码| 男人天堂网在线观看| 国产在线观看免费一区| 欧亚精品在线观看| 九九热精品免费视频| 国产亚洲欧美日韩在线观看一区二区| 欧美日韩国产欧美日美国产精品| www.成年人视频| 免费观看在线午夜影视| 91麻豆swag| 99久久精品免费看国产一区二区三区| 高潮毛片又色又爽免费 | 亚洲不卡在线| 欧美性受极品xxxx喷水| 精品少妇在线视频| av毛片在线| 国产精品三级av| 欧美亚洲另类久久综合| 动漫av一区二区三区| 久久国产欧美日韩精品| 日本久久久久亚洲中字幕| 免费在线视频一区二区| 99久久综合狠狠综合久久aⅴ| 亚洲激情在线视频| 苍井空张开腿实干12次| 亚洲人成777| 欧美性受极品xxxx喷水| 国产成人精品无码播放| 99thz桃花论族在线播放| 亚洲精品日产精品乱码不卡| 亚洲ai欧洲av| 国产精品一二三区视频| 久久精品一区二区三区不卡牛牛| 国产伦精品一区二区三区高清版| www.色亚洲| 国产精品一区二区男女羞羞无遮挡| 国产精品情侣自拍| 中文字幕精品无| 日韩精品欧美精品| 55夜色66夜色国产精品视频| 国产精品第九页| 伊人影院久久| 欧美精品久久久久久久免费观看| 久久精品www人人爽人人| 永久亚洲成a人片777777| 日韩在线观看精品| 国产福利视频网站| 亚洲国产精品日韩专区av有中文| 爽爽爽爽爽爽爽成人免费观看| 97人妻人人揉人人躁人人| 国产成人一区| 中文字幕在线观看日韩| 日本成人精品视频| 久久久久国产精品| 久久国产精品影视| 免费中文字幕在线观看| 国产精品vip| 97香蕉超级碰碰久久免费的优势| 日本午夜视频在线观看| 久久一日本道色综合久久| 国产成人jvid在线播放| 亚洲熟妇无码久久精品| 国产乱理伦片在线观看夜一区| 亚洲aa中文字幕| 粉嫩av一区二区夜夜嗨| 99精品桃花视频在线观看| 麻豆视频成人| 毛片在线视频| 亚洲二区视频在线| 久久无码高潮喷水| 久久99久久久精品欧美| 欧美一区二区三区系列电影| 911亚洲精选| 蜜桃a∨噜噜一区二区三区| 中文字幕自拍vr一区二区三区| 暗呦丨小u女国产精品| 国模吧视频一区| 国产不卡av在线| 国产人妖一区二区三区| 成人app下载| 亚洲mv在线看| av在线中出| 欧美色视频一区| 亚洲欧美高清在线| 日韩欧美中字| 午夜精品久久久久久久男人的天堂 | 日本少妇激三级做爰在线| 国产精品毛片久久久| 伊人伊成久久人综合网小说 | 精品成人av一区| 三上悠亚av一区二区三区| 视频一区日韩| 在线观看亚洲视频| 精品在线视频免费| 捆绑紧缚一区二区三区视频| 国产精品一区二区免费看| av中文字幕一区二区三区| 亚洲成人av一区二区三区| 一区二区三区欧美精品| 丝袜久久网站| 久久99精品久久久久久青青91| 无码人妻av一区二区三区波多野 | 9a蜜桃久久久久久免费| 国内精品在线视频| 亚洲成va人在线观看| 91 视频免费观看| 国产一区二区三区四区五区传媒 | 亚洲在线不卡| free欧美| 日韩精品一区二区三区第95| 黄色在线观看免费| 另类小说综合欧美亚洲| 欧美激情论坛| 激情国产在线| 日韩精品综合一本久道在线视频| 69xxx免费| 免播放器亚洲| 精品中文字幕人| 国产三级伦理在线| 欧美一区二区成人| 三级黄色录像视频| 久久精品国产久精国产| 日韩伦理一区二区三区av在线| 国产黄色大片在线观看| 欧美不卡视频一区| 一区视频免费观看| 国产精品自拍三区| 大桥未久一区二区三区| 欧美极品在线| 日韩中文字幕国产精品| 国产情侣免费视频| 欧美国产一区二区| 91极品视频在线观看| 国产一区二区三区四区五区| 日本午夜人人精品| 国产高清av在线| 在线视频你懂得一区| 欧美做受xxxxxⅹ性视频| 性久久久久久| 久久久福利视频| 成人片免费看| 亚洲天堂免费在线| 国产精品无码粉嫩小泬| 国产精品萝li| 中文字幕视频三区| 久久精品影视| 成人免费看片网站| 男人久久天堂| 亚洲三级黄色在线观看| 亚洲精品一区二区二区| 国产精品午夜在线| 中文字幕资源在线观看| 国产精品草草| 久久精品二区| 深夜视频一区二区| 久久精品视频在线观看| 亚洲第一页在线观看| 午夜精品在线看| 国产伦精品一区二区三区妓女 | 成人黄色av网站| 四季久久免费一区二区三区四区| 精品粉嫩aⅴ一区二区三区四区| 日韩三级视频在线| 国产欧美精品一区二区三区四区| 在线看的黄色网址| 欧美日本一区| 免费亚洲精品视频| 欧美高清xxx| 国内精品久久久久久久久| 色就是色亚洲色图| 欧美日韩1区2区| 久久精品人妻一区二区三区| 久久免费午夜影院| 亚洲在线观看网站| 国产欧美一级| 中文字幕精品一区日韩| 牛牛影视久久网| 国产精品视频自在线| 国产色婷婷在线| 综合国产在线视频| 色婷婷在线视频| 欧美日韩一区二区三区在线看| 欧美黄色aaa| 国产丝袜在线精品| 波多野结衣三级视频| 日韩精品福利网| 四虎4hu永久免费入口| 亚洲日产av中文字幕| 国产综合久久久久久| 中国色在线日|韩| 免费不卡在线观看av| 国产日本在线观看| 亚洲第一免费网站| 国产精品视频a| 91久久奴性调教| 黄色小视频在线免费看| 国产精品久久久久久久久快鸭 | 午夜免费福利在线| 99在线精品视频在线观看| 色乱码一区二区三区熟女 | 精品国产三级a∨在线| 最新国产精品视频| 成人午夜电影免费在线观看| 欧美电影免费观看高清完整| 久久久久久久久亚洲| 国产丝袜在线| 最新国产精品拍自在线播放| 欧洲视频在线免费观看| 精品毛片乱码1区2区3区| 国产精品丝袜黑色高跟鞋| 色婷婷久久一区二区三区麻豆| 日本一本高清视频| 亚洲一区二区三区四区五区黄 | 国产爆初菊在线观看免费视频网站| 精品奇米国产一区二区三区| 91亚洲欧美激情| 精品视频在线视频| 日韩精品在线一区二区三区| 狠狠躁夜夜躁人人爽超碰91| 日本少妇全体裸体洗澡| 亚洲一区在线观看免费观看电影高清| 国产一区二区精彩视频| 1区2区3区国产精品| 成年人免费视频播放| 亚洲国产高清不卡| 亚洲综合欧美综合| 国产欧美一区视频| 欧美熟妇激情一区二区三区| 国产亚洲成aⅴ人片在线观看| 在线观看日韩精品视频| 91丨porny丨国产入口| 六十路息与子猛烈交尾| aaa欧美日韩| 国产福利短视频| 99精品欧美一区二区蜜桃免费| 日韩Av无码精品| 99久久婷婷国产精品综合| 艳妇乳肉豪妇荡乳xxx| eeuss影院一区二区三区| 亚洲无人区码一码二码三码| 不卡高清视频专区| aaaaa一级片| 久久久777精品电影网影网| 性欧美一区二区| 国产日韩欧美制服另类| 91ts人妖另类精品系列| 成人免费小视频| 九九热精品在线观看| 亚洲国产成人av好男人在线观看| 青青草av在线播放| 色综合久久久久久久久久久| 探花国产精品一区二区| 91麻豆精品国产91久久久更新时间| 99久久久国产精品无码网爆| 欧美成人vr18sexvr| 五月婷婷六月激情| 国产亚洲视频在线| а√天堂官网中文在线| 欧美极品美女视频网站在线观看免费| av资源在线播放| 国产精品男人爽免费视频1| 在线视频成人| 国产在线精品一区二区中文| 国产欧美日韩在线观看视频| 色综合影院在线观看| 最新精品国产| 自慰无码一区二区三区| 久久国产精品99精品国产| 免费在线观看日韩av| 久久久久国产精品厨房| 欧美视频www| 欧美体内谢she精2性欧美| 亚洲无码精品国产| 精品国产一区久久| 高h视频在线| 欧美另类69精品久久久久9999| 午夜不卡影院| 91免费国产视频| 神马午夜久久| 男人草女人视频| 快she精品国产999| 性折磨bdsm欧美激情另类| 国产三区在线成人av| 久久免费视频精品| 欧美无砖砖区免费| 无码精品人妻一区二区三区影院| 最新中文字幕亚洲| 美女露胸视频在线观看| 91九色在线视频| 一区二区美女| 久久久久免费看黄a片app| 免费在线看成人av| 国产亚洲色婷婷久久99精品91| 国产精品久久久久久久久免费桃花| 香蕉免费毛片视频| 91精品国产福利| 国产剧情在线观看| 91精品国产高清久久久久久91| 永久免费观看精品视频| 色视频一区二区三区| 一本不卡影院| 波多野结衣三级视频| 国产精品久久久久天堂| 中文字幕一区在线播放| 精品少妇一区二区| 综合久久2o19| 91视频九色网站| 日韩免费视频| 久久久久久三级| 久久久久国产成人精品亚洲午夜| 日本少妇做爰全过程毛片| 欧美一区二区三区电影| 丝袜美腿美女被狂躁在线观看| 日本午夜人人精品| 亚洲精品**不卡在线播he| 亚洲人成无码网站久久99热国产| 国产精品一二三在| 国产精品国产三级国产传播| 欧洲精品一区二区| 精品美女视频在线观看免费软件| 97在线观看视频国产| 999久久久久久久久6666| 四虎永久免费网站| 精品影院一区二区久久久| 国产午夜精品福利视频| 欧美亚洲高清一区| 91社区在线高清| 国产精品入口免费视| 成人高清av| 九热视频在线观看| 国产精品女同一区二区三区| 中国黄色一级视频| 中文字幕亚洲一区二区三区| 亚洲www啪成人一区二区| 日本精品一区二区三区高清 久久| 媚黑女一区二区| 精品成人无码一区二区三区| 91国模大尺度私拍在线视频 | 美女视频久久黄| 粉嫩av国产一区二区三区| 亚洲免费精品视频| 精品在线播放免费| 免费一级a毛片夜夜看| 精品国产网站在线观看| 午夜欧美激情| 午夜精品一区二区在线观看| 六月丁香婷婷色狠狠久久| 91杏吧porn蝌蚪| 精品国产污污免费网站入口| 日本在线影院| 深田咏美在线x99av| 国内精品在线播放| 国产无遮挡又黄又爽在线观看| 亚洲成色777777在线观看影院| 周于希免费高清在线观看| 日本亚洲自拍| 狠狠色丁香婷婷综合| 免费网站看av| 精品无人区乱码1区2区3区在线| 欧美三级精品| 久久久久久久免费视频| 成人免费观看男女羞羞视频| 不卡av电影在线| 日韩在线视频观看正片免费网站| 玖玖精品一区| 国产免费黄色av| 欧美激情一区在线| 亚洲AV无码一区二区三区少妇| 欧美在线视频导航| 手机在线电影一区| 欧美熟妇精品一区二区蜜桃视频 | 99视频免费看| 51精品国产黑色丝袜高跟鞋| 91亚洲国产高清| 国产精品福利导航| 欧美精品高清视频| 岛国av在线网站| 宅男av一区二区三区| 99久久精品99国产精品| 一级黄色片免费看| 亚州国产精品久久久| 久久国产亚洲精品| 亚洲av成人无码一二三在线观看| 欧美性三三影院| 美女网站在线看| 艳母动漫在线免费观看| 久久尤物电影视频在线观看| 99久久久久成人国产免费| 国产99久久久欧美黑人|