通过Telegraf采集k8s指标
Telegraf自带的inputs.kube_inventory插件可以实现k8s指标采集
官方参考文档: kube-inventory
说明:本例子中kube-inventory通过静态令牌文件认证方式请求kube-apiserver(根据token内容连接apiserver)
1、首先编辑Telegraf的配置文件telegraf.conf,编辑插件内容,如图:

说明:
- url:kube-apiserver的地址和端口,如果是高可用集群可填写VIP:Port
- bearer_token:连接kube-apiserver需要的token
- resopnse_timeout:超时时间
- resource_exclude:采集资源排除的指标
- resource_include:采集资源包含的指标
- tls:资源认证,目前没有配置TLS认证
- insecure_skip_verify:跳过安全认证
注意:如果token直接写字符串那么字段名是bearer_token_string,如果以文件形式那就是bearer_token
2、获取bearer_token的值, 可通过rbac授权方式获取,操作如下:
2.1 在k8s的master节点,创建rbac.yaml文件内容如下:
---
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"
rules: []
---
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
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: telegraf
namespace: default
2.2 创建完ServiceAccount后可自动创建与ServiceAccount关联的token,如图:

查看此token的内容如下:

注:此token即为telegraf连接到kube-apiserver所用的token
2.3 回到telegraf所在机器,将上述token保存到token.csv文件中,如图:

注:访问token有两种方式,第一种通过文件,第二种直接将token配置在文件中,如图1中的bearer_token_string字段
3、重启telegraf,在监控页面查看指标,如图:



