一、集群自带的监控
kettle自带的集群监控工具可以监控转换的执行情况。
配置好集群后,打开浏览器:输入http://localhost:8080,输入子服务器的用户名和密码
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000846968-1924636895.jpg)
进入后,点击show status:
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000847640-1253200302.png)
点击转换名称可以看到转换的详情:
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000848015-1293866941.png)
该方式有三个缺点:
(1)无法监控job的执行情况。
(2)另外,如果一个转换不使用集群执行,也不会被监控。
(3)该监控的获取的数据来取内存,在关闭carte服务器后,数据消失,之前的监控信息丢失
综合以上信息,该监控并不能满足ETL需求,需要手动做监控程序。
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000848233-865974354.png)
二、自己开发kettle监控程序。
自己开发监控程序,原理是在转换和任务中设置log,执行情况会记录在日志中,通过读取日志情况判断执行情况。
2.1.在转换和任务中设置日志
转换:
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000848468-880378645.png)
一共有5种日志
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000848921-1950679938.png)
a.转换日志
显示转换名称、开始时间、结束时间、执行状态等
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000849187-2025460888.png)
b.步骤日志
显示步骤相关情况(集群下不写入该表)
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000849390-511779018.png)
c.运行日志
在默认日志级别下不没有数据(集群下不写入该表)
d.通道日志
各日志通道的输出情况(集群下不写入该表)
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000849640-2117013683.png)
e.指标日志(略)
2.2 任务日志
作业:
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000849827-1417252985.png)
日志:
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000850218-1992342383.png)
a.作业日志表
保存作业的开始时间、结束时间、状态等
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000850499-816733976.png)
b.作业项日志表
作业中的项目运行情况
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000850780-303100516.png)
c.日志通道日志表
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000850999-837877028.png)
2.3 监控流程
2.3.1 从资源库读取job列表
select id_job,name from kettle_res.r_job a ;
2.3.2 读取job中的转换的执行状态、上次执行时间
select distinct a.id_job,a.name job_name,b.name trans_name,c.status trans_status,c.LOGDATE laste_exec_time
from kettle_res.r_job a left join kettle_res.r_jobentry b on a.id_job=b.id_job and b.id_jobentry_type=87
left join test.trans_logs c on b.name=SUBSTRING_INDEX(c.transname,'(',1)
and c.logdate= (select max(logdate) from test.trans_logs d where SUBSTRING_INDEX(d.transname,'(',1) =SUBSTRING_INDEX(c.transname,'(',1) group by SUBSTRING_INDEX(d.transname,'(',1) )
group by a.name order by a.id_job,b.id_jobentry
结果:
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000851249-1541294067.png)
至此完成了最基本的监控。
2.3.2 job执行历史
select JOBNAME,status,LOGDATE from test.job_log where jobname=? order by LOGDATE desc
2.3.3 转换执行历史
select transname,status,logdate from test.trans_logs where SUBSTRING_INDEX(transname,'(',1)=? order by logdate desc
2.3.4 短信
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000851468-1148729475.png)
在执行出错时可以发送邮件。
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000851843-1861309768.png)
![](https://images2017.cnblogs.com/blog/645664/201708/645664-20170831000852187-912816816.png)
注意:看邮件提供商是否支持pop3/SMTP协议,是否需要使用SSL连接。
2.3.5 短信监控