使用 DataFlux 完成 Kubernetes 监控指标采集与展示-阿里云开发者社区

开发者社区> 开发与运维> 正文

使用 DataFlux 完成 Kubernetes 监控指标采集与展示

简介:

DataFlux是上海驻云自研发的一套大数据统一分析平台,可以通过对任何来源、类型、规模的实时数据进行监控、分析和处理,释放数据价值。
image

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 的状态管理命令

image

配置采集源

采集 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 对话。

打开 DataKit 采集源配置文件夹(默认路径为 DataKit 安装目录的 conf.d 文件夹),找到 kube_inventory 文件夹,打开里面的 kube_inventory.conf。

配置案例参考如下设置:

[[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指标:
image

使用DataFlux实现数据洞察

根据获取到的指标项进行数据洞察设计,例如:

kubernetes监控视图
image

DataFlux基于自研的DataKit数据(采集器)目前已经可以对接超过200种数据协议,包括:云端数据采集、应用数据采集、日志数据采集、时序数据上报、常用数据库的数据汇聚,帮助企业实现最便捷的IT 统一监控。

image

版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章