Aeron:Aeron Agent

Aeron Agent 是一个 Java 代理,用于提供 Aeron、Aeron Archive 和 Aeron Cluster 中发生的运行时低级日志信息。这些日志语句包括从高级管理员事件到大容量数据帧事件。

在调试 Archive 和 Cluster 问题时,Aeron Agent 的日志数据尤其有用。

一、Available logging options

Environment VariableOptions
aeron.event.log以逗号分隔的 DriverEventCodes 列表,或 admin 表示所有管理事件,或 all 表示所有事件(Comma separated list of DriverEventCodes, or admin for all admin events, or all for everything)
aeron.event.archive.log以逗号分隔的 ArchiveEventCodes 列表,或all表示所有事件(Comma separated list of ArchiveEventCodes, or all for everything)
aeron.event.cluster.log以逗号分隔的ClusterEventCodes列表,或all表示所有事件(Comma separated list of ClusterEventCodes, or all for everything)

 此外,您还可以通过为 aeron.event.log.filename 赋值,将输出记录到文件中,而不是默认的 std out。

二、Attaching to a process on start(启动时附加到进程)

正如 Aeron Cookbook 示例中的启动脚本所示,在启动时将 Aeron Agent 附加到进程非常简单:

java --add-opens java.base/sun.nio.ch=ALL-UNNAMED \
-javaagent:/root/aeron/aeron-agent-1.42.0.jar \
-Djava.net.preferIPv4Stack=true \
-Daeron.event.log=admin \
-Daeron.event.archive.log=all \
-jar /root/jar/archive-backup-0.1-SNAPSHOT-all.jar

See GitHub for the full sample.

三、Dynamic Logging Agent

使用 Aeron 1.33.0+ 中添加的Dynamic Logging Agent,可以轻松地将代理附加到运行中的进程。

Steps:

  1. 在启动需要检测的 Aeron 进程之前,必须通过环境变量或 -D 参数(如 -Daeron.event.log=admin)让 aeron 代理知道要捕获什么,从而定义需要捕获的事件。有关可用选项,请参见上文。(Before launching the Aeron process you want instrumented, you must define the events you are interested in capturing by letting aeron agent know what to capture either via environment variables or via -D arguments, such as -Daeron.event.log=admin. See above for the available options.)
  2. 在要检测的进程已经运行的情况下,获取 PID(With the process to instrument already running, get the PID)
  3. 使用启动(start)命令启动 io.aeron.agent.DynamicLoggingAgent。(Launch the io.aeron.agent.DynamicLoggingAgent with the start command.)

 Sample command line

To start logging in a process with PID 42945:

java -cp /path-to/aeron-all-1.42.0.jar io.aeron.agent.DynamicLoggingAgent /path-to/aeron-agent-1.42.0.jar 42945 start

四、Sample output

最左侧 [ and ] 中的值是事件的时间戳,定义为当前时间戳(纳秒)除以 1,000,000,000。这意味着小数点前的值是以秒为单位的,因此从初始行项目 [76948.355606523] log started 2021-04-17 14:26:41.710-0400可以推算出 [76958.678426732] 处的事件发生在 14:26:41.710 + 10.323s = 14:26:52.033 左右。10.323s76948.35576958.678 之间的差值。数据源是 System.nanoTime(),它与wall time无关,只能用于相对时间。

这是一个集群节点(RFQ 示例)的示例片段,aeron.event.log 设置为all

[76948.355606523] log started 2021-04-17 14:26:41.710-0400
[76958.678426732] DRIVER: FRAME_IN [52/52]: 127.0.0.1:55443 SETUP 00000000 len 40 2073747220:101:905418016 905418016 @0 16777216 MTU 1408 TTL 0
[76958.685011759] DRIVER: CMD_OUT_AVAILABLE_IMAGE [147/147]: 2073747220:101 [57:48] [49] /var/folders/aeron-driver/images/49.logbuffer 127.0.0.1:55443
[76958.685099301] DRIVER: FRAME_OUT [48/48]: 127.0.0.1:55443 SM 00000000 len 36 2073747220:101:905418016 @0 131072 -4489607960779398291
[76958.686931252] DRIVER: FRAME_IN [44/44]: 127.0.0.1:55443 DATA 11000000 len 0 2073747220:101:905418016 @0
[76958.687164768] DRIVER: FRAME_IN [140/140]: 127.0.0.1:55443 DATA 11000000 len 98 2073747220:101:905418016 @0
[76958.694589747] DRIVER: CMD_IN_ADD_PUBLICATION [58/58]: 102 [7:50] aeron:udp?endpoint=localhost:57377
[76958.69499685] DRIVER: SEND_CHANNEL_CREATION [92/92]: UdpChannel - localData: 0.0.0.0/0.0.0.0:0, remoteData: localhost/127.0.0.1:57377, ttl: 0
[76958.697468817] DRIVER: CMD_OUT_PUBLICATION_READY [138/138]: -74825448:102 75 65 [50 50] /var/folders/aeron-driver/publications/50.logbuffer
[76958.697569264] DRIVER: FRAME_OUT [52/52]: 127.0.0.1:57377 SETUP 00000000 len 40 -74825448:102:728163187 728163187 @0 16777216 MTU 1408 TTL 0
[76958.758041065] DRIVER: FRAME_IN [48/48]: 127.0.0.1:57377 SM 00000000 len 36 -74825448:102:728163187 @0 131072 -985368778043801883
[76958.758666168] DRIVER: FRAME_OUT [44/44]: 127.0.0.1:57377 DATA 11000000 len 0 -74825448:102:728163187 @0
[76958.7652581] DRIVER: FRAME_OUT [108/108]: 127.0.0.1:57377 DATA 11000000 len 80 -74825448:102:728163187 @0
[76958.765445077] DRIVER: CMD_IN_ADD_PUBLICATION [58/58]: 102 [21:51] aeron:udp?endpoint=localhost:57377
[76958.765583608] DRIVER: CMD_OUT_PUBLICATION_READY [138/138]: -74825448:102 75 65 [51 50] /var/folders/aeron-driver/publications/50.logbuffer
[76958.773609799] DRIVER: FRAME_IN [108/108]: 127.0.0.1:55443 DATA 11000000 len 90 2073747220:101:905418016 @128
[76958.77373172] DRIVER: FRAME_IN [140/140]: 127.0.0.1:55443 DATA 11000000 len 102 2073747220:101:905418016 @224
[76958.775272352] DRIVER: FRAME_OUT [140/140]: 127.0.0.1:57377 DATA 11000000 len 118 -74825448:102:728163187 @96
[76958.777991182] DRIVER: FRAME_IN [108/108]: 127.0.0.1:55443 DATA 11000000 len 92 2073747220:101:905418016 @352
[76958.780923987] DRIVER: FRAME_OUT [140/140]: 127.0.0.1:57377 DATA 11000000 len 100 -74825448:102:728163187 @224
[76958.783483437] DRIVER: FRAME_IN [108/108]: 127.0.0.1:55443 DATA 11000000 len 88 2073747220:101:905418016 @448
[76958.786164552] DRIVER: FRAME_OUT [140/140]: 127.0.0.1:57377 DATA 11000000 len 104 -74825448:102:728163187 @352
[76958.788915601] DRIVER: FRAME_IN [76/76]: 127.0.0.1:55443 DATA 11000000 len 56 2073747220:101:905418016 @544
[76958.789200034] DRIVER: CMD_IN_REMOVE_PUBLICATION [24/24]: 50 [7:52]
[76958.789237205] DRIVER: CMD_OUT_ON_OPERATION_SUCCESS [8/8]: 52
[76958.790866084] DRIVER: CMD_IN_REMOVE_PUBLICATION [24/24]: 51 [21:53]
[76958.790904905] DRIVER: CMD_OUT_ON_OPERATION_SUCCESS [8/8]: 53
[76958.875888058] DRIVER: FRAME_OUT [48/48]: 127.0.0.1:55443 SM 00000000 len 36 2073747220:101:905418016 @0 131072 -4489607960779398291
[76958.886665327] DRIVER: FRAME_OUT [44/44]: 127.0.0.1:57377 DATA 11100000 len 0 -74825448:102:728163187 @480
[76958.987313678] DRIVER: FRAME_OUT [44/44]: 127.0.0.1:57377 DATA 11100000 len 0 -74825448:102:728163187 @480
[76959.076562784] DRIVER: FRAME_OUT [48/48]: 127.0.0.1:55443 SM 00000000 len 36 2073747220:101:905418016 @0 131072 -4489607960779398291
[76959.088009394] DRIVER: FRAME_OUT [44/44]: 127.0.0.1:57377 DATA 11100000 len 0 -74825448:102:728163187 @480
[76959.188642945] DRIVER: FRAME_OUT [44/44]: 127.0.0.1:57377 DATA 11100000 len 0 -74825448:102:728163187 @480

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地无法连接linux上的MariaDB数据库

问题:本地用DBeaver无法连接服务器上的MariaDB数据库 ? 测试1:在cmd中ping 服务器IP,看是否能ping通,能ping通,没有问题 测试2:在cmd中telnet 服务器IP 端口,看是否能访问&#xf…

常见的Redis使用问题及解决方案

目录 1. 缓存穿透 1.1 解决方案 2. 缓存击穿 2.1 解决方案 3. 缓存雪崩 3.1 概念图及问题描述 ​编辑3.2 解决方案 4. 分布式锁 4.1 概念 4.2 基于redis来实现分布式锁 4.3 用idea来操作一遍redis分布式锁 4.4 分布式上锁的情况下,锁释放了服务器b中的锁…

多态深度剖析

前言 继承是多态的基础, 如果对于继承的知识还不够了解, 可以去阅读上一篇文章 继承深度剖析 基本概念与定义 概念: 通俗来说,就是多种形态。具体点就是去完成某个行为, 当不同的对象去完成时会产生出不同的状…

如何完美解决 Xshell 使用 SSH 连接 Linux 服务器报错:找不到匹配的 host key 算法

🛠️ 如何完美解决 Xshell 使用 SSH 连接 Linux 服务器报错:找不到匹配的 host key 算法 摘要: 本文将带领大家深入学习如何解决 Xshell 使用 SSH 连接 Linux 服务器时报错“找不到匹配的 host key 算法”的问题。通过详细的操作步骤和代码案…

Shopee虾皮API:获取商家店铺商品列表

一、平台介绍 Shopee,作为东南亚及中国台湾地区领先的电商平台,为卖家提供了一个便捷、高效的销售渠道。作为卖家,能够将自己的商品展示在Shopee平台上,并通过平台的流量和工具,将商品销售给更多的潜在买家。 为了帮…

系统架构设计师 - 操作系统(2)

操作系统 操作系统(5-6分)文件管理绝对路径与相对路径 ★索引文件 ★★★位示图 ★ 存储管理段页式存储 ★★★页式存储段式存储段页式存储(了解) 页面置换算法 ★ 微内核操作系统嵌入式操作系统 ★★★ 大家好呀!我是…

数据库课设-中小企业工资管理系统

一、效果展示 二、后端代码 import string import random from flask import Flask, render_template, request, jsonify, redirect, session import pymysql from flask_cors import CORS import time import schedule from datetime import datetime import threading from …

HK1-BOX X3刷UBUNTU 24.04,并开启WIFI

端午刚好有点时间,顺便把改完散热的HK1-BOX刷了个最新OC版的UBUNTU 24,这里记录下操作的步骤: 准备材料 HK1-BOX S905X3:注意X4的不行固件没匹配的。建议先改完散热,不然作为7X24小时的机器长时间高温还是很伤硬件的…

Web前端项目-拼图游戏【附源码】

拼图游戏 拼图游戏是一种经典的益智游戏,通过HTML、CSS和JavaScript等前端技术的综合运用来实现;拼图游戏可以锻炼玩家的观察能力、空间认知能力和逻辑思维能力。游戏开始时,一张图片会被切割成多个小块,并以随机顺序排列在游戏区…

CMOS图像传感器——列噪声(CFPN)去除

目前CMOS 图像传感器系统中列共用结构应用最为广泛,在该结构中,虽然像素曝光均匀,但是由于列输出系统处理属性的变动,对于不同列,像素的输出是不均匀的。因此,基于列的CMOS 图像传感器表现出垂直条纹固定模式噪声(CFPN),从而降低了图像的质量。由于人眼 的关系,CFPN …

「布道师系列文章」宝兰德徐清康解析 Kafka 和 AutoMQ 的监控

作者|北京宝兰德公司解决方案总监徐清康 01 前言 当我们使用一个软件的时候,经常都会问这个软件怎么监控、监控他的哪些指标?Kafka 的监控挺长时间都是一个老大难的问题,社区在监控方面一直没有投入太大的精力。如果要实现一…

kotlin 中的字符串

一、字符类访问 1、字符串的访问跟js一样,可以使用索引来访问或者直接循环。 fun main() {val a: String "2024"// 方式一:for (item in a) {println(item) // 输出每一个字符}// 方式二:println("${a[0]}, ${a[1]}, ${a[2…

IAP固件升级进阶(Qt上位机)

前言 时隔近一年,再次接触IAP固件升级,这次修改了以前的一些bug,同时新增一些实用性的功能。 有纰漏请指出,转载请说明。 学习交流请发邮件 1280253714qq.com。 上位机界面 视频演示 当Up对iap固件升级的机制有了更深的理解后…

【C++】类和对象的引入

文章目录 前言一、类的定义二、类的访问控制与封装三、类的作用域四、类的实例化五、类的存储方式及大小计算六、隐藏的this指针 前言 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 C是基于面向对象的&…

算法题解记录29+++全排列(百日筑基)

一、题目描述 题目难度:中等 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示…

iCopy for Mac 剪切板 粘贴工具 历史记录 安装(保姆级教程,新手小白轻松上手)

Mac分享吧 文章目录 效果可留存文本、图片、文件等复制历史记录也可根据关键字进行历史记录检索点击一下,可复制双击两下,复制内容,并将信息粘贴至鼠标指针处 一、准备工作二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹…

Audio2Face相关建模BS绑定对应表

文章说明 相信大家都可以在网上看到52点位的ARKit绑定对照表,但英伟达旗下Audio2Face这款软件出来的数据应该如何映射到BS上边,都比较迷茫。 所以对于Unity方面的46点位在建模时的对照图,我这边总结了一下。发出来供大家参考,如果…

简易版 | 代码生成器(包含插件)

一、代码生成器 先导入依赖 <!-- Mybatis-Plus --> <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.6</version> </dependency><!-- 代码生成器 --…

Cisco Packet Tracer实验(五)不同vlan间的通信简单配置

1&#xff0e;单臂路由(图) 环境&#xff1a;一台路由器&#xff0c;一台二层交换机&#xff0c;两台pc机 单臂路由&#xff08;Single Arm Routing&#xff09;是指在网络架构中&#xff0c;只有一个物理接口&#xff08;单臂&#xff09;连接到路由器三层交换机&#xff0c;而…