如何把腾讯云TKE K8s容器服务集成到Prometheus服务发现

如何把腾讯云TKE K8s容器服务集成到Prometheus服务发现

Prometheus

准备工作

  • 首先打开tke集群的内网访问
  • 然后配置/etc/hosts
  • 最后配置一下k8s客户端的config文件

以上操作由于不可描述原因无法截图示意哈,请自行研究腾讯云官方文档,或者给我发邮件,附上你的腾讯云控制台账号密码, 收费150元我远程帮你操作一下哦~

  • 为每一个pod建立一个k8s service
  • 建立管理服务端口映射

以上每建一个service,收费10元,只让我示范建一个的话收费100元

  • 找一台机器装个saltmaster
  • 给每一个地区的每个集群的任意一个节点装上salt-minion

实现代码

开始贴正式的代码之前先说一下我们的模式,我们采用的是Prometheus的file_sd_configs 模式。

import os
import json
import argparse
import subprocess


def get_namespace(host_ip): # 你们的namespace最后有个特殊的标志,方便下面的grep过滤 cmd_namespace = "salt {ip} cmd.run 'kubectl get ns' |awk '{{if (NR>2){{print $1}}}}'|grep xx" namespace_list = subprocess.check_output(cmd_namespace.format(ip=host_ip),shell=True).strip().split('\n') return namespace_list



def gen_prometheus_sd_json(): def main(host_ip,namespace_list,area) cmd= "salt {ip} cmd.run 'kubectl get services -n {namespace}' |awk '{{if (NR>2){{print $1,$4}}}}'" data_list =[] for namespace in namespace_list: results = subprocess.check_output(cmd.format(ip=host_ip,namespace=namespace),shell=True) if not results: contine for result in results.strip().split('\n'): data_dict = {'lable':{},'target':[]} app_job_name = result.split(' ')[0] pod_ip = result.split(' ')[1] data_dict['lable']['application'] = app_job_name data_dict['lable']['env'] = 'prod' data_dict['lable']['job'] = app_job_name # 下面ip后面的端口请自行根据业务修改 data_dict['target'].append(pod_ip + ':10086') data_list.append(data_dict) json_data = json.dumps(data_list, indent =4) json_file = 'tke_{}_sd_prod.json'.format(area) with open(json_file,'w') as tke: tke.write(json_data) # 自行替换salt后面的prometheus机器ip,salt文件服务器路径,Prometheus sd json路径 deploy_cmd = 'salt 192.168.0.1 cp.get_file salt://{0} /data/prometheus/{0}'.format(json_file) os.system(deploy_cmd) # 自行替换tke集群任意节点ip, 做好博客中的准备工作 xx_host_ip = '192.168.0.1' main(host_ip=xx_host_ip,namespace_list=get_namespace(), area='xx')



gen_prometheus_sd_json()


后续配置

  • 自行配置一个定时任务来跑这个脚本
  • 在Prometheus的主配置里面添加file_sd_configs 模式的服务发现,如下
- job_name: 'xx_sd_prod'
  scrape_interval: 5s
  scrape_timeout: 5s
  metrics_path: /admin/prometheus
  file_sd_configs:
  - files:
     - /xx/xx_sd_prod.json
     refresh_interval: 1m




   

0 评论 在 “如何把腾讯云TKE K8s容器服务集成到Prometheus服务发现

发表评论

电子邮件地址不会被公开。 必填项已用*标注

captcha