【目的】:根据昨天的任务运行情况和今天的任务运行情况做一个可视化图 方便查看任务是否积压。
【方法】:基于之前的代码 新增功能。之前的代码已经有了定时每小时发送 当前状态。只需要把当前状态进行存储mysql中 然后使用echarts展示即可。
当前的样子附图:
【开始】
首先找一个echarts双折线图 一个是昨天的 一个是今天的。
我们就用这个图了
首先定义一个mysql表结构
我们用到的数据库是:check
首先考虑的是yarn的表存储应该放一些什么东西???
我们采用每个组件一个单独表(其中包含客户字段 可以根据客户字段找到想要的客户 ----为之后考虑)
yarn_check表结构
1. service: 服务名称
2. component: 组件名称
3. project_name: 项目名称
4. customer: 客户名称
5. time: 采集数据的时间
6. submit_tasks: 提交的任务数目
7. complete_tasks: 完成的任务数目
8. pending_tasks: 挂起的任务数目
9. running_tasks: 运行的任务数目
10. failed_tasks: 失败的任务数目
11. total_memory_gb: 集群总内存大小(单位为 GB)
12. used_memory_gb: 集群已用内存大小(单位为 GB)
13. available_memory_gb: 集群可用内存大小(单位为 GB)
14. total_vcores: 集群总虚拟核数
15. allocated_vcores: 集群已分配虚拟核数
16. available_vcores: 集群可用虚拟核数
17. collector_ip: 采集数据的机器 IP 地址
CREATE TABLE yarn_check (
service VARCHAR(50),
component VARCHAR(50),
project_name VARCHAR(100),
customer VARCHAR(100),
time DATETIME,
submit_tasks INT,
complete_tasks INT,
pending_tasks INT,
running_tasks INT,
failed_tasks INT,
total_memory_gb FLOAT,
used_memory_gb FLOAT,
available_memory_gb FLOAT,
total_vcores INT,
allocated_vcores INT,
available_vcores INT,
collector_ip VARCHAR(50)
);
写入情况:
这种方式入库 然后用echarts 做一下两个表的可视化就可以。
但是这种方式想了下还是需要单独开发…有想法的可以根据这个思路继续开发。
我最后采用了另一种方式
因为平台直接有prometheus和grafana
所以我直接用promQL查询出来就搞定了
Grafana上的
promQL查询当前时间:
Hadoop_ResourceManager_AppsRunning{name="QueueMetrics",product_name="Hadoop",service_name="yarn_resourcemanager",cluster_name=~"$cluster_name",instance=~"$instance",q1!=""}
promQL昨天时间:
Hadoop_ResourceManager_AppsRunning{name="QueueMetrics",product_name="Hadoop",service_name="yarn_resourcemanager",cluster_name=~"$cluster_name",instance=~"$instance",q1!=""} offset 1d
这里两个RM都可以看到是因为jmx对接了两个RM。
可以!=0 搞定 但是不建议 留着看就好啦….以后有更好的办法再更新。