首页 > 其他分享 >hadoop状态和任务监控

hadoop状态和任务监控

时间:2023-06-14 15:56:02浏览次数:37  
标签:name db hadoop datetime 任务 监控 time now

# -*- coding: UTF-8 -*-

import  mysql.connector
import sys
import datetime
import importlib
import requests

importlib.reload(sys)

#修改hadoop地址参数为实际地址
env_code='生产环境 http://172.16.159.75:18888/'
hadoop_code='生产环境hadoop http://172.16.159.75:50070/'
MYSQL_CONFIG= {'host': '172.16.159.72', 'user': 'oozie', 'password': 'oozie%$#@!eyushangshan', "database": 'oozie','port': 3306}
#修改xxx为实际钉钉token
url = 'https://oapi.dingtalk.com/robot/send?access_token=xxx'

hadoop_url= ["http://172.16.159.74:50070/dfshealth.html#tab-overview", "http://172.16.159.75:50070/dfshealth.html#tab-overview"]

def connMysql():
    db = mysql.connector.connect(**MYSQL_CONFIG)
    print("连接上服务器:%s数据库:%s" % ("172.16.159.139", "oozie"))
    return db

def failtaskMonitor(db):
    cur = db.cursor()
    sql = "select app_name,user_name,end_time,start_time from WF_JOBS where status='KILLED'  and end_time between date_add(now(),interval-2 day) and now()"
    cur.execute(sql)
    datalist = cur.fetchall()
    for (app_name,user_name,end_time,start_time) in datalist:
        sendmsg = {
        "msgtype": "markdown",
        "markdown": {
            "title": "任务失败告警",
            "text": "告警时间: %s \n\n" % datetime.datetime.now().strftime('%Y-%m-%d') +
                    "告警环境:%s \n\n" % env_code +
                    "任务【%s】执行失败,请及时处理,并检查环境数据是否正常  \n\n" % app_name +
                    "**任务开始时间**: %s \n\n" % start_time +
                    "**任务结束时间**: %s \n\n" % end_time +
                    "**任务提交人**: %s \n\n" % user_name
            }
        }
        sendMsg(sendmsg)

def delaytaskMonitor(db):
    cur = db.cursor()
    sql = "select app_name,user_name,start_time,TIMESTAMPDIFF(MINUTE, start_time, now()) as diff from WF_JOBS where status='RUNNING' and TIMESTAMPDIFF(MINUTE, start_time, now()) >60 and app_name <> 'error_log_track_workflow'"
    cur.execute(sql)
    datalist = cur.fetchall()
    for (app_name,user_name,start_time,diff) in datalist:
        sendmsg = {
        "msgtype": "markdown",
        "markdown": {
            "title": "任务延迟告警",
            "text": "告警时间: %s \n\n" % datetime.datetime.now().strftime('%Y-%m-%d') +
                    "告警环境:%s \n\n" % env_code +
                    "任务【%s】执行超时,请优化\n\n" % app_name +
                    "**任务已执行**: %s 分钟\n\n" % diff +
                    "**任务开始时间**: %s \n\n" % start_time +
                    "**任务提交人**: %s \n\n" % user_name
            }
        }
        sendMsg(sendmsg)

def hadooptaskMonitor(url):
    hadoop_result1 = requests.get(url[0])
    hadoop_result2 = requests.get(url[1])
    if ( hadoop_result1.status_code != 200 or hadoop_result2.status_code != 200 ):
        sendmsg = {
        "msgtype": "markdown",
        "markdown": {
            "title": "hadoop故障",
            "text": "告警时间: %s \n\n" % datetime.datetime.now().strftime('%Y-%m-%d') +
                    "告警环境:%s \n\n" % hadoop_code +
                    "hadoop出现严重,请检查hadoop状态! \n\n"
            }
        }
        sendMsg(sendmsg)

def sendMsg(sendmsg):
    req = requests.post(url, json=sendmsg)
    result = req.json()
    if result['errcode'] != 0:
        print('notify dingtalk error: %s' % result['errcode'])


if __name__ == '__main__':
    now_time = datetime.datetime.now().minute
    db = connMysql()
    #失败任务监控
    failtaskMonitor(db)
    delaytaskMonitor(db)
    hadooptaskMonitor(hadoop_url)
    #延时任务监控============================
    #if now_time == 0 :
    #每小时执行一次
        #delaytaskMonitor(db)

标签:name,db,hadoop,datetime,任务,监控,time,now
From: https://www.cnblogs.com/wes1502/p/17480479.html

相关文章

  • 麒麟系统任务栏消失???
    麒麟系统任务栏消失???请确保当前电脑没有执行特别重要的任务,并且所有资料有备份,最好是没有重要资料的公用电脑解决办法如下:mate-panel--reset命令解释:这是一个Linux命令,它会重置Mate面板的默认设置。Mate面板是一个常用的Linux桌面环境组件,通常用于管理和启动应用程序、任务......
  • Vue3中循环任务优化方案
    需求在使用循环任务时,往往需要使用到setInterval方法。其接受三个参数,分别是1.具体执行的函数2.执行时间间隔3.传递个函数的参数,并返回一个id,后续可以使用这个id来停止循环的执行。具体的使用可以查阅MDN。在实际开发中,很容易重复创建相同的interval实例,进行反复的执行,并且在......
  • 搭建promtetheus+grafana性能监控环境
    环境准备CentOSLinuxrelease7.7.1908(Core)prometheus-2.36.2grafana-enterprise-9.0.2-1node_exporter-1.3.1mysqld_exporter-0.14.0备注:软件可以去清华镜像站下载:https://mirrors.tuna.tsinghua.edu.cn/github-release/prometheus/prometheus/或者:https://download......
  • 无需下载软件,使win10任务栏透明
    1.桌面鼠标右键点击个性化,颜色>>选择颜色>>选择深色或自定义,透明效果开启;2.win+R输入regedit;3.查找目录计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced4.在右侧空白处右键,选择新建→DWORD(32位)值,命名此文件为TaskbarAcrylicOpacit......
  • 【大数据】大数据 Hadoop 管理工具 Apache Ambari(HDP)
    目录一、概述二、Ambari与HDP关系三、Ambari与Clouderamanager的对比1)开源性2)支持的发行版3)用户界面4)功能和扩展性5)社区支持和生态系统四、ApacheAmbari术语五、ApacheAmbari核心组件介绍六、ApacheAmbari架构1)Ambari-agent内部架构2)Ambari-server内部架构3)Ambari......
  • Prometheus 监控
    Prometheus最开始设计是一个面向云原生应用程序的开源的监控&报警工具,在对 Kubernetes服务发现协议分析之前,我们先来梳理下 Prometheus 如何接入云原生,实现对 Kubernetes 集群进行监控。Kubernetes 云原生集群监控主要涉及到如下三类指标:node 物理节点指标、pod&contain......
  • 事件队列(EventLoop)【宏任务,微任务】
    一、概念event:事件loop:循环,循环的是一个又一个的任务队列任务队列:是一个先进先出的数据结构,排在前面的事件,优先被主线程读取任务队列分为:宏队列,微队列,分别存放宏任务和微任务二、宏任务【多个】、微任务【1个】微任务一般比宏任务先执行,并且微任务队列只有一个,宏任务队列可......
  • CH32--裸机系统实现多任务
    在ram和flash资源足够的芯片中,我们通常通过跑操作系统来实现多任务,但此方法有个弊端,那就是对ram要求高,那么对于比如003这种只有2K ram的小容量芯片可能就不太够用了。这时就需要裸机来实现多任务了,方法如下:在裸机中,通常都是在一个while循环中,通过判断相应的标志位,来按照顺序......
  • openEuler 计划任务
    计划任务-at命令#创建at任务atnow+3minat>echo"123">>/tmp/at.logat>echo"abc">>/tmp/at.logat>date>>/tmp/at.logctrl+d at22:00at>pwd>>/tmp/getdir.logat>date>>/tmp/getdir.logctr......
  • XXL-JOB手工执行任务报错:msg:xxl-rpc remoting error(Connection refused (Connection
    【问题描述】XXL-JOB手工执行任务报错:msg:xxl-rpcremotingerror(Connectionrefused(Connectionrefused)),forurl  【原因分析】 在xxl-job服务端所在的服务器上面去telnetxxl-job所在的客户端服务器的9986端口,提示拒绝连接:对于端口拒绝连接的问题,应该是网络的问......