有把程序内部状态实时映射到表的实现思路吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
zmqiang

有把程序内部状态实时映射到表的实现思路吗?

  •  
  •   zmqiang Nov 10, 2022 2134 views
    This topic created in 1263 days ago, the information mentioned may be changed or developed.

    MySQL 里的INFORMATION_SCHEMA内存表,可以将 MySQL 运行时信息以表的形式展示出来,并且可以随着数据的变化动态更新,可以通过标准的 SQL 进行查询

    于是在想如果可以把程序内部的一些状态也直接映射到类似的这样的表里,肯定比日志好用,查起来也方便。但是搜了一圈,可能是关键词没找对,没有看到类似的技术文章。所以有类似实现的思路吗?还是说有更好的办法来暴露和查询程序的内部状态?

    10 replies    2022-11-11 10:11:35 +08:00
    Pantheoon
        1
    Pantheoon  
       Nov 10, 2022
    如果你想做的是监控的话,很多工具可以做到
    sujin190
        2
    sujin190  
       Nov 10, 2022
    状态报告啊,其实他不是个表,只是接受用表的接口查询吧,实时的状态报告肯定是要融入到程序各处逻辑的,那么性能是个优先考虑项,最终需要读取时怎么把这些数据收集过滤显示或者接口 sql 查询就是另外一回事了
    zmqiang
        3
    zmqiang  
    OP
       Nov 10, 2022
    @sujin190 就是想了解下,现在有没有类似的库或者组件,可以实现把自建程序的内部状态,以可供 SQL 查询的形式展示出来
    zmqiang
        4
    zmqiang  
    OP
       Nov 10, 2022
    @Pantheoon 监控是有,我的想法是能不能暴露出可供 SQL 查询的形式,统一查询入口
    lmshl
        5
    lmshl  
       Nov 10, 2022
    以 Jaba 为例,过去这玩意儿叫:JFR - Java Flight Recorder
    现在通用了,叫 Prometheus exporter
    tf2
        6
    tf2  
       Nov 10, 2022
    linux 有这招啊。你向一个进程脑门拍一个 SIGABRT 信号,它就吐一个 core dump 文件出来,文件内容就是程序内部状态,整整齐齐的啥都有。
    sujin190
        7
    sujin190  
       Nov 10, 2022
    @zmqiang #3 如果是这样的话不就是监控系统么,Prometheus 也支持用类似 sql 查询,influxdb 官方也有一套监控系统,数据保存在 influxdb 里,也支持 sql 查询,组件的话估计不好找,其实就是个可组件使用的内存数据库,比较能适配又不影响你自己程序运行可行性太小了
    masterclock
        8
    masterclock  
       Nov 10, 2022
    tracing ?
    有各种各样的工具采集、存储、查询、展示数据,如 Prometheus 一系
    采集的话,有推的有拉的,有基于 log 的不基于 log 的,Linux 下还有基于 BPF/eBPF 采集应用信息的
    linuxyz
        9
    linuxyz  
       Nov 11, 2022
    如果你用 Linux, 可以看看 /sys 或者 /proc 就是直接把 kernel 的状态映射到文件系统的方式访问。 如果是你自己开发的程序可以用 fuse 也可以很方便的把 app 的状态映射到 文件系统上。

    早年间的 SNMP MIB Table 就直接提供了类似表的功能,只是访问和操作需要通过 SNMP 协议。 应用程序需要相应的实现接口。
    zmqiang
        10
    zmqiang  
    OP
       Nov 11, 2022
    @linuxyz 对的,我想的就是类似的东西。现在的监控大多自有的组件进行收集、存储和查询,没有利用到现有的基础组件。你提到的这个 fuse 我了解看看
    About     Help     Advertise     Blog     API     FAQ     Solana     1071 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 23:25 PVG 07:25 LAX 16:25 JFK 19:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86