V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
guanzhangzhang
V2EX  ›  Linux

有没有轻量级别的单机 Linux 监控

  •  
  •   guanzhangzhang ·
    zhangguanzhang · 236 天前 · 4035 次点击
    这是一个创建于 236 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有没有 daemon 类轻量监控:

    • 必须 golang 开发的,不依赖 cgo
    • 单机实体 os 上使用,不需要啥 agent 和 server 架构,不需要支持监控容器
    • daemon 能收集 cpu ,mem ,iops ,盘读写,网卡带宽等之类的监控指标
    • 不依赖任何中间件,例如简单的 rrd 本地环形文件存储啥的,来支持历史监控数据存储,也就是一个二进制文件(daemon 和 cli)+配置文件就能快速部署起来
    • 查看历史监控不需要重依赖 web ,可以 cli 啥的查看历史监控信息,比如简单的查看 3d 内

    最后一条不满足也行,有的话我可以改改

    第 1 条附言  ·  236 天前
    😭好多回复为什么不看看要求
    不是常规 cpu 架构,不是常规系统,客户没有公网,没有内网包管理仓库,所以要求 golang 一个二进制,golang 天然支持交叉编译
    更别说监控全家桶了(标题都说明轻量了,要求也列了不要什么监控 agent 和 server )
    第 2 条附言  ·  232 天前
    伙计们,找到了个 https://github.com/amuluze/amprobe
    43 条回复    2024-05-12 22:01:27 +08:00
    xxiaowangwang
        1
    xxiaowangwang  
       236 天前
    啊,馆长
    libook
        2
    libook  
       236 天前 via Android   ❤️ 1
    不知道为什么必须是 go 。

    如果是轻量级的话,可以看看 netdata ,我软路由上用的这个。
    libook
        3
    libook  
       236 天前 via Android
    纯 go 的话有个 Prometheus 方案,但需要额外一台机器部署 Prometheus 数据库,适合汇总监控很多服务器的情况
    RedisMasterNode
        4
    RedisMasterNode  
       236 天前
    为啥不在机器上跑一下 Prometheus + Node Exporter 呢...并且运行起来的 Prometheus 未来也可以帮忙监控其他的机器。
    mayli
        5
    mayli  
       236 天前
    collected?
    maughan
        6
    maughan  
       236 天前
    easeprobe 试下
    terrancesiu
        7
    terrancesiu  
       236 天前
    netdata 呢
    rrfeng
        8
    rrfeng  
       236 天前
    要求这么多,自己写一个吧。
    guanzhangzhang
        9
    guanzhangzhang  
    OP
       236 天前
    @terrancesiu netdata 不是 golang
    guanzhangzhang
        10
    guanzhangzhang  
    OP
       236 天前
    @libook #3 看看第二点,我只监控基础信息历史
    guanzhangzhang
        11
    guanzhangzhang  
    OP
       236 天前
    @RedisMasterNode 因为理想是美好的,比如为啥我不能买彩票中 500w
    hingle
        12
    hingle  
       236 天前   ❤️ 5
    我感觉 OP 只是想抄个现成的代码。
    RedisMasterNode
        13
    RedisMasterNode  
       236 天前
    @guanzhangzhang 。。。回了一堆废话
    tool2dx
        14
    tool2dx  
       236 天前
    linux 大部分监控数据都在/proc 目录下。

    你 cli 直接挂一个 ssh 中间层,实时取服务器数据呗,都不需要上什么 daemon 。
    cdlnls
        15
    cdlnls  
       236 天前 via Android
    我觉得你可以了解一下 sar ,一般系统软件仓库里面都有,有些还自带了。
    guanzhangzhang
        16
    guanzhangzhang  
    OP
       236 天前
    @mayli 不是 golang 开发的
    guanzhangzhang
        17
    guanzhangzhang  
    OP
       236 天前
    @cdlnls 如果没网呢系统还不自带,没内网仓库呢,os 还不是常规 os 呢
    guanzhangzhang
        18
    guanzhangzhang  
    OP
       236 天前
    @tool2dx 单机,必须 golang 实现的,且支持历史数据
    guanzhangzhang
        19
    guanzhangzhang  
    OP
       236 天前
    @RedisMasterNode #13 因为 cpu 架构不是 amd64 和 arm64 呢
    DIMOJANG
        20
    DIMOJANG  
       236 天前
    guanzhangzhang
        21
    guanzhangzhang  
    OP
       236 天前
    @DIMOJANG 好兄弟,看看标题的要求,轻量😯
    guanzhangzhang
        22
    guanzhangzhang  
    OP
       236 天前
    @maughan 这个看了下,是探针请求,不是偏向历史+基础信息的监控实现
    xw
        23
    xw  
       236 天前 via iPhone
    不大懂..,可以看看 nmon 是否符合
    Immunize
        24
    Immunize  
       236 天前
    要不自己写一个?随手就能找到一个第三方库 https://github.com/mackerelio/go-osstat ,搞个 ticker 定时读取序列化写入到文件里呗。
    F7TsdQL45E0jmoiG
        25
    F7TsdQL45E0jmoiG  
       236 天前
    这要求,也别 go 啦,shell 脚本就行
    dhb233
        26
    dhb233  
       236 天前
    没人提 open-falcon 吗?除了最后一个不满足,别的应该都可以。当然了,这个不是为监控单机的,但是可以把几个组件都部署到一个机器上。
    用的是 go ,代码比较简单,不满足的也很容易自己改
    defunct9
        27
    defunct9  
       236 天前
    自己写个得了。这鬼需求
    main1234
        28
    main1234  
       236 天前
    atop 系统命令就解决了
    wujianhua22
        29
    wujianhua22  
       236 天前
    需求都上了,还想要别人给你写吗?
    ZXiangQAQ
        30
    ZXiangQAQ  
       236 天前
    直接起一个 node_exporter 不就行了,各种指标都能收集,至于展示,如果不想额外部署 prometheus ,自己写个查询 cli 去查想要的数据不就行了,反正 node_exporter 是标准 http ,自己解一下找找想要的 key[label]
    guanzhangzhang
        31
    guanzhangzhang  
    OP
       236 天前
    @ZXiangQAQ 😏裸 exporter 不支持历史存储
    guanzhangzhang
        32
    guanzhangzhang  
    OP
       236 天前
    @main1234 好兄弟,看看第一条附言
    frencis107
        33
    frencis107  
       235 天前
    Prometheus 也不算重呀,该满足的条件都能满足......不满意你还是自己写一个吧
    frencis107
        34
    frencis107  
       235 天前
    @guanzhangzhang Prometheus 和 node_exporter 放一台不就行了,指定地址 127.0.0.1......
    t2musiccn
        35
    t2musiccn  
       235 天前
    当初学 golang 的时候写过一个单机的监控,循环将负载情况存入文本文件内:
    用了一个包 shirou/gopsutil
    lsk569937453
        36
    lsk569937453  
       235 天前
    昨天手撸了一个,100 行代码而已。目前卡在了 cli 查看历史监控这里,数据已经存储在 sqlite ,查询的时候不知道用什么展示好点。
    guanzhangzhang
        37
    guanzhangzhang  
    OP
       235 天前
    @lsk569937453 一般是 tui 框架展示会好些 https://github.com/pesos/grofer?tab=readme-ov-file#examples 这个的 tui 类似可以看看
    lsk569937453
        38
    lsk569937453  
       235 天前
    @guanzhangzhang 这 terminal ui 库学起来头疼,算了。
    youyoumarco
        39
    youyoumarco  
       235 天前
    自己写吧,改着也方便
    ZXiangQAQ
        40
    ZXiangQAQ  
       235 天前
    @guanzhangzhang 那没办法了,如果存历史数据,那就得上时序数据库,然后还要从数据查,不如直接 prometheus 了,毕竟 prometheus 本质就是一个时序数据库,有非常好用的 PromQL ,只是额外多了些能自动拉数据的功能
    chengxiao
        41
    chengxiao  
       235 天前
    https://github.com/rapidloop/rtop
    之前项目里用过这个,但是好久不更新了,有些需要改点自己写,开箱即用可能满足不了
    ansemz
        42
    ansemz  
       235 天前
    sar 就可以了吧。
    guanzhangzhang
        43
    guanzhangzhang  
    OP
       232 天前
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1357 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:20 · PVG 01:20 · LAX 09:20 · JFK 12:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.