【目的】:根据昨天的任务运行情况和今天的任务运行情况做一个可视化图 方便查看任务是否积压。
【方法】:基于之前的代码 新增功能。之前的代码已经有了定时每小时发送 当前状态。只需要把当前状态进行存储mysql中 然后使用echarts展示即可。
当前的样子附图:
【开始】
首先找一个echarts双折线图 一个是昨天的 一个是今天的。
我们就用这个图了
首先定义一个mysql表结构
我们用到的数据库是:check
首先考虑的是yarn的表存储应该放一些什么东西???
我们采用每个组件一个单独表(其中包含客户字段 可以根据客户字段找到想要的客户 ----为之后考虑)
yarn_check表结构
- service: 服务名称
- component: 组件名称
- project_name: 项目名称
- customer: 客户名称
- time: 采集数据的时间
- submit_tasks: 提交的任务数目
- complete_tasks: 完成的任务数目
- pending_tasks: 挂起的任务数目
- running_tasks: 运行的任务数目
- failed_tasks: 失败的任务数目
- total_memory_gb: 集群总内存大小(单位为 GB)
- used_memory_gb: 集群已用内存大小(单位为 GB)
- available_memory_gb: 集群可用内存大小(单位为 GB)
- total_vcores: 集群总虚拟核数
- allocated_vcores: 集群已分配虚拟核数
- available_vcores: 集群可用虚拟核数
- 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=~“
c
l
u
s
t
e
r
n
a
m
e
"
,
i
n
s
t
a
n
c
e
=
"
cluster_name",instance=~"
clustername",instance= "instance”,q1!=“”}
promQL昨天时间:
Hadoop_ResourceManager_AppsRunning{name=“QueueMetrics”,product_name=“Hadoop”,service_name=“yarn_resourcemanager”,cluster_name=~“
c
l
u
s
t
e
r
n
a
m
e
"
,
i
n
s
t
a
n
c
e
=
"
cluster_name",instance=~"
clustername",instance= "instance”,q1!=“”} offset 1d
这里两个RM都可以看到是因为jmx对接了两个RM。
可以!=0 搞定 但是不建议 留着看就好啦….以后有更好的办法再更新。