DataFlux是上海驻云自研发的一套大数据统一分析平台,可以通过对任何来源、类型、规模的实时数据进行监控、分析和处理,释放数据价值。
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 的状态管理命令
配置采集源
采集 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指标:
使用DataFlux实现数据洞察
根据获取到的指标项进行数据洞察设计,例如:
kubernetes监控视图
DataFlux基于自研的DataKit数据(采集器)目前已经可以对接超过200种数据协议,包括:云端数据采集、应用数据采集、日志数据采集、时序数据上报、常用数据库的数据汇聚,帮助企业实现最便捷的IT 统一监控。