天天看點

使用 DataFlux 完成 Kubernetes 監控名額采集與展示

DataFlux是上海駐雲自研發的一套大資料統一分析平台,可以通過對任何來源、類型、規模的實時資料進行監控、分析和處理,釋放資料價值。
使用 DataFlux 完成 Kubernetes 監控名額采集與展示

DataFlux包含五大功能子產品:

  • Datakit 采集器
  • Dataway 資料網關
  • DataFlux Studio 實時資料洞察平台
  • DataFlux Admin Console 管理背景
  • DataFlux.f(x) 實時資料處理開發平台

面向企業提供全場景的資料洞察分析能力, 具有實時性、靈活性、易擴充、易部署等特點。

今天給大家分享的是如何使用 DataFlux 完成Kubernetes 監控名額采集與展示。

安裝DataKit

備注:以Linux系統為例

DataKit 安裝指令:
DK_FTDATAWAY=[你的 DataWay 網關位址] bash -c "$(curl https://static.dataflux.cn/datakit/install.sh)"           

補充安裝指令中的 DataWay 網關位址,然後複制安裝指令到主機上執行即可。

例如:如果的 DataWay 網關位址 IP 為 1.2.3.4,端口為 9528(9528為預設端口),則網關位址為

http://1.2.3.4:9528/v1/write/metrics

,安裝指令為:

DK_FTDATAWAY=http://1.2.3.4:9528/v1/write/metrics bash -c "$(curl https://static.dataflux.cn/datakit/install.sh)"           

安裝完成後,DataKit 預設會自動運作,并且會在終端中提示 DataKit 的狀态管理指令

使用 DataFlux 完成 Kubernetes 監控名額采集與展示

配置采集源

采集 Kubernetes 叢集名額上報到 DataFlux 中。

dDataFlux 對 kubernetes 叢集名額采集,主要通過兩個 input 插件完成:

  • kubernetes(主要針對叢集中 kubelet 的資料采集,即 node 節點相關性能)
  • kube_inventory(主要針對叢集中 api-server 的資料采集,即叢集、pod 相關性能)

kube_inventory 配置

打開 DataKit 采集源配置檔案夾(預設路徑為 DataKit 安裝目錄的 conf.d 檔案夾),找到 kube_inventory 檔案夾,打開裡面的 kube_inventory.conf。

配置案例參考如下設定:

[[inputs.kube_inventory]]
## URL for the Kubernetes API
url = "https://172.16.0.12:6443"

## Namespace to use. Set to "" to use all namespaces.
# namespace = "default"

## Use bearer token for authorization. ('bearer_token' takes priority)
## If both of these are empty, we'll use the default serviceaccount:
## at: /run/secrets/kubernetes.io/serviceaccount/token
# bearer_token = "/path/to/bearer/token"
## OR
# bearer_token_string = "abc_123"

## Set response_timeout (default 5 seconds)
# response_timeout = "5s"

## Optional Resources to exclude from gathering
## Leave them with blank with try to gather everything available.
## Values can be - "daemonsets", deployments", "endpoints", "ingress", "nodes",
## "persistentvolumes", "persistentvolumeclaims", "pods", "services", "statefulsets"
# resource_exclude = [ "deployments", "nodes", "statefulsets" ]

## Optional Resources to include when gathering
## Overrides resource_exclude if both set.
# resource_include = [ "deployments", "nodes", "statefulsets" ]

## Optional TLS Config
tls_ca = "/opt/kubernetes/ssl/ca.pem"
tls_cert = "/opt/kubernetes/ssl/kube-apiserver.pem"
tls_key = "/opt/kubernetes/ssl/kube-apiserver-key.pem"

## Use TLS but skip chain & host verification
# insecure_skip_verify = false           

配置好後,重新開機 DataKit 即可生效

Kubernetes Permissions

如果使用RBAC授權,則需要建立一個叢集角色以列出“persistentvolumes”和“nodes”。然後,您需要建立一個聚合的ClusterRole,它最終将綁定到使用者或組。

---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: influx:cluster:viewer
  labels:
    rbac.authorization.k8s.io/aggregate-view-telegraf: "true"
rules:
  - apiGroups: [""]
    resources: ["persistentvolumes", "nodes"]
    verbs: ["get", "list"]

---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: influx:telegraf
aggregationRule:
  clusterRoleSelectors:
    - matchLabels:
        rbac.authorization.k8s.io/aggregate-view-telegraf: "true"
    - matchLabels:
        rbac.authorization.k8s.io/aggregate-to-view: "true"
rules: [] # Rules are automatically filled in by the controller manager.           

将新建立的聚合ClusterRole與以下配置檔案綁定,并根據需要更新主題。

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: influx:telegraf:viewer
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: influx:telegraf
subjects:
  - kind: ServiceAccount
    name: telegraf
    namespace: default           

kubernetes采集名額

Kubernetes 插件與 Kubelet API 進行對話,并收集有關單個主機正在運作的 pod 和容器的度量。假定此插件在 kubernetes 安裝中作為守護程式的一部分運作。這意味着 DataFlux 在叢集中的每個節點上運作。是以,您應該配置此插件以與其本地運作的 kubelet 對話。

[[inputs.kubernetes]]
## URL for the kubelet
url = "http://172.16.0.12:10255"

#tls_ca = "/opt/kubernetes/ssl/ca.pem"
#tls_cert = "/opt/kubernetes/ssl/kubernetes.pem"
#tls_key = "/opt/kubernetes/ssl/kubernetes-key.pem"
#insecure_skip_verify = true

## Use bearer token for authorization. ('bearer_token' takes priority)
## If both of these are empty, we'll use the default serviceaccount:
## at: /run/secrets/kubernetes.io/serviceaccount/token
# bearer_token = "/path/to/bearer/token"
## OR
# bearer_token_string = "abc_123"

## Pod labels to be added as tags.  An empty array for both include and
## exclude will include all labels.
# label_include = []
# label_exclude = ["*"]

## Set response_timeout (default 5 seconds)
# response_timeout = "5s"

## Optional TLS Config
# tls_ca = /path/to/cafile
# tls_cert = /path/to/certfile
# tls_key = /path/to/keyfile
## Use TLS but skip chain & host verification
# insecure_skip_verify = false           

驗證資料上報

完成資料采集操作後,我們需要驗證資料是否采內建功并且上報到DataWay,以便後續能正常進行資料分析及展示

操作步驟:登入DataFlux——資料管理——名額浏覽——驗證資料是否采內建功

kubernetes名額:

使用 DataFlux 完成 Kubernetes 監控名額采集與展示

使用DataFlux實作資料洞察

根據擷取到的名額項進行資料洞察設計,例如:

kubernetes監控視圖

使用 DataFlux 完成 Kubernetes 監控名額采集與展示

DataFlux基于自研的DataKit資料(采集器)目前已經可以對接超過200種資料協定,包括:雲端資料采集、應用資料采集、日志資料采集、時序資料上報、常用資料庫的資料彙聚,幫助企業實作最便捷的IT 統一監控。

使用 DataFlux 完成 Kubernetes 監控名額采集與展示