使用arthas在线诊断flink的那些事

2023-11-14

最近在使用arthas诊断工具, 诊断java服务的一些问题, 突然想到能不能使用arthas诊断flink的jobManager和taskManager呢? 答案是可以的.
采用javaagent, 在flink启动jobmanager和taskManager的时候, 注入我们的agent
官方文档
下载tunnel-server的jar包

使用的是Arthas Tunnel方式.

第一步: 先启动一个 tunnel-server服务, 
在服务器:10.0.16.1 执行 
java -jar -Dserver.port=4433 -Darthas.server.port=7766  arthas-tunnel-server-3.5.3-fatjar.jar

其中 -Dserver.port 指定web页面访问地址,-Darthas.server.port为监听端口, 远程的arthas-agent通过该端口连接

第二步,为flink程序在启动时注入arthas-agent,
我们需要使用javaagent, 
2.1 新建一个maven项目, 引入arthas-agent的依赖包
       <dependency>
            <groupId>com.taobao.arthas</groupId>
            <artifactId>arthas-agent-attach</artifactId>
            <version>3.5.3</version>
        </dependency>
        <dependency>
            <groupId>com.taobao.arthas</groupId>
            <artifactId>arthas-packaging</artifactId>
            <version>3.5.3</version>
        </dependency>

2.2 编写AgentPremain,并且创建
   public static void premain(String agentArgs, Instrumentation inst){
        //arthasConfigMap为配置参数
        Map<String, String> arthasConfigMap = new HashMap<>();
        arthasConfigMap.put("arthas.tunnelServer","ws://10.0.16.1:7766/ws");
        arthasConfigMap.put("arthas.appName","flink:68480");
        arthasConfigMap.put("arthas.httpPort","-1"); //表示不使用httpPort
        arthasConfigMap.put("arthas.telnetPort","0"); //设置为0,表示自动获取,防止出现端口占用
        arthasConfigMap.put("arthas.agentId","xxxxxxxxxx"+uuidString);
        //上述可以通过-D传入, 比如下文的-Dagent.arthas-tunnelServer, 然后使用   
        //System.getProperty("agent.arthas-tunnelServer") 获取, 相对更灵活
		ArthasAgent arthasAgent = new ArthasAgent(arthasConfigMap, null, false, null);
        arthasAgent.init();
  }

2.3 将编写javaagent项目打好jar包  customize-arthas-agent-1.0.0.jar, 
     并且将jar包放入到yarn集群下的所有节点上, 比如目录为/data/arthas/
2.4 在启动flink时, 注入这部分命令-yD yarn.container-start-command-template="" 源码中有或者看我以往的文章
flink run -m yarn-cluster -ys 1 -ynm flink-yarn-name \
-yD state.checkpoints.dir=hdfs://clife/checkpoint/flink \
-yD state.savepoints.dir=hdfs://clife/checkpoint/flink \
-yjm 1G -ytm 2G -yqu default  \
-yD execution.checkpointing.externalized-checkpoint-retention=RETAIN_ON_CANCELLATION   \
-yD table.exec.source.idle-timeout=10s    \
-yD yarn.tags=68480   \
-yD state.backend=rocksdb  \
-yD state.backend.incremental=true  \
-yD yarn.container-start-command-template="%java% %jvmmem% %jvmopts% %logging% \
-javaagent:/data/arthas/customize-arthas-agent-1.0.0.jar \
-Dagent.arthasEnabled=true -Dagent.arthas-appName=flink:68480 \
-Dagent.arthas-tunnelServer=ws://10.0.16.1:7766/ws  \
 %class% %args% %redirects%"   \
-yD env.java.opts="-Dfile.encoding=UTF-8"   \
-c xx.Main  \
/xxx.jar
  

最后, 即可在页面中连接arthas进行在线诊断了

我们改造了arthas部分代码, 目前可以筛选出指定flink任务的arthas
如果web-console出现不能复制粘贴时, 可以使用ctrl+insert 或者 ctrl+shift+c 来复制选中, shift+insert 或者 ctrl+shift+v 来粘贴
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用arthas在线诊断flink的那些事 的相关文章

随机推荐

  • 微信小程序播放音乐并同步一次显示一行歌词

    主要是对于歌词部分的描述 gitee项目仓库地址 https gitee com manster1231 master cloud music 点个star哦 1 总体思路 先在加载页面时异步获取歌词 根据 musicId 我们可以获取到该
  • Nginx proxy_pass反向代理动态端口

    背景 某项目需要播放第三方监控视频 我方访问域名假定为 my area com 第三方的域名假定为 video other com 域名不一致就导致浏览器跨域问题无法播放 且第三方拖拖拉拉不想解决 于是只有我方使用 nginx 做反向代理来
  • [CVPR-23-Highlight] Magic3D: High-Resolution Text-to-3D Content Creation

    目录 Abstract Background DreamFusion High Resolution 3D Generation Coarse to fine Diffusion Priors Scene Models Coarse to
  • jdk1.8 -- Collectors 的使用

    package com collector import java util ArrayList import java util Arrays import java util Collections import java util I
  • CNN核心概念理解

    卷积神经网络 Convolutional Neural Networks 简称CNN 是一种经典的神经网络算法 由于在图像识别领域取得的良好效果 随着人工智能的火热 它也受到越来越多的关注 CNN的核心概念卷积 池化听起来好像很神秘 了解之
  • stm32中断

    stm32中断 一 中断原理 二 CubeMX中断控制LED灯 一 项目生成 二 代码修改 三 编译运行 三 HAL库中断串口通信 一 新建项目 二 代码 三 烧录运行结果 四 总结 五 参考资料 一 中断原理 1 数据传输方式 2 全过程
  • leetcode:93. 复原 IP 地址

    题目链接 93 复原 IP 地址 题目描述 有效 IP 地址 正好由四个整数 每个整数位于 0 到 255 之间组成 且不能含有前导 0 整数之间用 分隔 例如 0 1 2 201 和 192 168 1 1 是 有效 IP 地址 但是 0
  • PermissionError: [Errno 13] Permission denied: ‘./MNIST_Dataset_Loader/dataset/train-images-idx3-uby

    在使用从github上下载的代码时报错 PermissionError Errno 13 Permission denied MNIST Dataset Loader dataset train images idx3 ubyte 解决办法
  • 【计算机网络系列】网络层⑫:虚拟专用网和网络地址转换NAT

    虚拟专用网和网络地址转换NAT 虚拟专用网 由于IP地址的紧缺 一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数 考虑到互联网并不很安全 一个机构内也并不需要把所有的主机接入到外部的互联网 实际上 在许多情况下 很多主机主要还是
  • 物联网的相关概念总结(逐渐更新)

    引言 本文主要总结了与物联网协议栈相关的概念 1 网络带宽 Network Bandwidth 网络带宽是指在单位时间 一般指的是1秒钟 内能传输的数据量 基本单位 bits per second 简写为bps 带宽的单位有 bps Kbp
  • 智能车图像处理12-进阶篇4--环岛辅助判断条件

    前言 希望大家多多点赞评论收藏哦 不懂的地方评论区留言就好 这篇文章主要讲述智能车图像处理中环岛辅助判断相关内容 一 图解分析 思路讲解 环岛辅助条件用于决定是否进入环岛判断函数 下面的辅助条件主要有两个方面 1 环岛所在边在赛道上必须有两
  • 学习笔记:Linux文件权限

    一般情况下 系统里的文件夹都是755权限 允许所有用户进入文件夹 一般情况下 root用户创建的文件夹权限是755 创建的文件权限是644 一般情况下 普通用户创建的文件夹权限是775 创建的文件权限是664 目录权限 可执行的操作 r l
  • 放苹果-递归

    include
  • java基础(二)循环语句及字符串的处理

    public class Test02 public static void main String args TODO 自动生成的方法存根 int sum 0 for int i 1 i lt 100 i 从1打印到100 System
  • 【leetcode】----102二叉树的层序遍历

    102二叉树的层序遍历 给你一个二叉树 请你返回其按 层序遍历 得到的节点值 即逐层地 从左到右访问所有节点 示例 二叉树 3 9 20 null null 15 7 3 9 20 15 7 返回其层次遍历结果 3 9 20 15 7 BF
  • C#与C++交互系列:C#调用C++的三种方式

    参考 https zhuanlan zhihu com p 30746354 内容 目前 Net平台中托管环境调用非托管环境有三种方法 P Invoke 针对原生c方法调用 C Interop 针对托管C C CLI 使用的方法 COM I
  • Java的学习路线(非常完整)

    Java 是一种跨平台的 面向对象的高级编程语言 主要用来进行网站后台开发 也就是服务器端开发 或者动态网站开发 Java 是全球最受欢迎的编程语言之一 在世界编程语言排行榜 TIOBE 中 Java 一直霸占着前三名 有好多年甚至都是第一
  • KDD2023丨预训练论文合集

    ACM SIGKDD 国际数据挖掘与知识发现大会 简称KDD 会议始于1989年 是数据挖掘领域历史最悠久 规模最大的国际顶级学术会议 也是首个引入大数据 数据科学 预测分析 众包等概念的会议 每年吸引了大量数据挖掘 机器学习 大数据和人工
  • Error attempting to get column ‘create_time‘ from result set. Cause: java.sql.SQLFeatureNotSupporte

    错误 org springframework dao InvalidDataAccessApiUsageException Error attempting to get column create time from result set
  • 使用arthas在线诊断flink的那些事

    最近在使用arthas诊断工具 诊断java服务的一些问题 突然想到能不能使用arthas诊断flink的jobManager和taskManager呢 答案是可以的 采用javaagent 在flink启动jobmanager和taskM