如何优雅的使用TenSunS自动同步ECS主机监控


概述

后羿 - TenSunS(原ConsulManager)是一个使用Flask+Vue开发,基于Consul的WEB运维平台,弥补了Consul官方UI对Services管理的不足;并且基于Consul的服务发现与键值存储:实现了Prometheus自动发现多云厂商各资源信息;基于Blackbox对站点监控的可视化维护;以及对自建与云上资源的优雅管理与展示。

仓库地址:https://github.com/starsliao/TenSunS

Consul字段设计说明

  • 服务首次启动时会创建一个随机秘钥,存放到consul_kv的/ConsulManager/assets/secret/skey,该秘钥用于对登录Token,各云厂商账号AKSK的加解密使用。
  • 云厂商的每个账号下的ECS实例信息:会存储到Consul的对应Services下的实例中,ECS的实例ID会作为ServiceID。
  • 云厂商的每个账号下的AKSK和分组信息:存放到consul_kv的/ConsulManager/assets下各个云厂商的目录下的aksk(加密存储)和group目录。
  • 分组字段:是采集云厂商用于资源分组的字段,阿里云:资源组,华为云:企业项目,腾讯云:所属项目。请在创建云主机时设置好属组。
  • 新增的各个云厂商的ECS同步任务:会存放到consul_kv的/ConsulManager/jobs下,服务启动的时候会加载这些任务。
  • 每次同步任务的执行结果:会存储到consul_kv的/ConsulManager/record/jobs的各个云厂商目录下。
  • 新增云厂商的数据源之后会自动同步一次分组信息,ECS信息则会在设置的时间间隔之后才会同步,可以手动点击同步按钮同步一次。
  • Linux默认监控nodeexporter的9100端口,Windows默认监控windowsexporter的9128端口。

配置说明

1. 新增同步源
  • 在Web页面点击Node 云主机监控/接入数据源,点击新增同步源,输入各字段:
  • 账户可随意填写,用来区分云厂商不同云账户的标识,支持中文,例如用主账户的名称。
  • 填写的AKSK需要有获取ECS的权限以及各云厂商分组信息的权限。(注意:腾讯云的分组信息因为在ECS中没有找到对应接口,是从分布式数据库TDSQL-查询项目列表 (DCDB)的接口中获取的,AKSK需要有对应权限。)
  • 选择好对应的ECS所在区域(暂支持国内),以及分组与ECS的刷新间隔,确认即可,分组信息会自动同步一次,ECS信息则会在设置的时间间隔之后才会同步,可以手动点击同步按钮同步一次。

    2. 查看云主机列表
  • 可以点击查看按钮或者在云主机列表中查看同步后的ECS信息。(华为云暂未获取到ECS到期日信息)

    3. 管理自建主机
  • 在Web页面点击Node 云主机监控/自建主机管理,点击新增,根据需要即可增加需要监控的自建主机,支持增删改查与批量操作(脚本)。

    3. 配置Prometheus
  • 点击ECS 云主机监控/Prometheus 配置,根据需要来生成各云账号、系统(均支持多选)的Prometheus配置信息(有自建主机记得复选上selfnode_exporter),复制配置后,追加到prometheus.yml的末尾,重启Prometheus即可。

    4. 查看Prometheus
  • 在Prometheus的Web页面中,点击Status-Targets,能看到新增的Job即表示数据同步到Prometheus。

    5. 导入Node Exporter Dashboard
  • 更新了主机监控的grafana看板,可匹配自动同步方式采集ECS信息字段的展示。

  • 优化了大量图表,使用新版表格重建,新增健康评分概念,并新增了整体资源消耗信息的一些图表。
  • 导入ID:8919
  • 详细URL:https://grafana.com/grafana/dashboards/8919

批量导入自建主机脚本【现已支持直接在Web页面上批量导入自建主机!】

在项目仓库根目录的tools目录下:编辑selfnode-instance.list,写入监控目标的信息:机房/公司 租户/部门 区域/项目 分组/环境 名称 实例(ip:端口) 系统(linux/windows),每行一个,空格分隔。

注意:前5个字段组合起来必须唯一,作为一个监控项的ID。即Consul的ServiceID

再修改导入脚本selfnode-input.py中的consultoken和consulurl,保存后执行selfnode-input.py,即可导入所有监控目标到Consul,并符合Prometheus的自动发现配置。

注意:

主动关机的ECS,会在同步时候从Consul中清除,即会在Prometheus中去除(减少无效的告警),重新开机后会增加回去。
各ECS的Node_exporter需要自行安装。
【最近7天P99资源使用率】图表需要在Prometheus增加记录规则(采集1小时后出数据):
groups:   #新rule文件需要加这行开头,追加旧的rule文件则不需要。
- name: node_usage_record_rules
  interval: 1m
  rules:
  - record: cpu:usage:rate1m
    expr: (1 - avg(irate(node_cpu_seconds_total{mode="idle"}[3m])) by (instance,vendor,account,group,name)) * 100
  - record: mem:usage:rate1m
    expr: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100