容器内的Linux诊断工具0x.tools

原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。

Linux上有大量的问题诊断工具,如perf、bcc等,但这些诊断工具,虽然功能强大,但却需要很高的权限才可以使用。

而0x.tools这个工具提供了一个很好的思路,通过采样 /proc目录来诊断问题,对被测量程序几乎无性能影响,且只要与目标进程拥有同等级的权限,即可正常使用。

不要小看这个权限区别,在互联网大厂,开发同学一般只能获取到一个受限于容器内的shell环境,想要获取机器的root权限几乎是不可能的。

下载源码
$ git clone https://github.com/tanelpoder/0xtools.git

安装编译器
$ yum install -y make gcc

编译并安装程序
$ make && make install

实际上0x.tools里的工具大多数是脚本,如psn工具是python脚本,因此直接将代码clone下来,然后执行 bin/psn也是可以的。

psn工具

psn工具用来观测系统中当前活跃的线程正在做什么,如线程在做什么系统调用、写什么文件、阻塞在哪个内核函数下?

[tanel@linux01 ~]$ psn

Linux Process Snapper v0.18 by Tanel Poder [https://0x.tools]
Sampling /proc/stat for 5 seconds... finished.

=== Active Threads ================================================

 samples | avg_threads | comm             | state
    2027 |      506.75 | (kworker/*:*)   | Disk (Uninterruptible) | [kernel_thread] |
    1963 |      490.75 | (oracle_*_l)    | Disk (Uninterruptible) | pread64         | /data/oracle/LIN*C/soe_bigfile.dbf
      87 |       21.75 | (oracle_*_l)    | Running (ON CPU)       | [running]       |
      13 |        3.25 | (kworker/*:*)   | Running (ON CPU)       | [running]       |
       4 |        1.00 | (oracle_*_l)    | Running (ON CPU)       | read            | socket:[*]
       2 |        0.50 | (collectl)      | Running (ON CPU)       | [running]       |
       1 |        0.25 | (java)          | Running (ON CPU)       | futex           |
       1 |        0.25 | (ora_ckpt_xe)   | Disk (Uninterruptible) | pread64         | /data/oracle/XE/control*.ctl
       1 |        0.25 | (ora_m*_linprd) | Running (ON CPU)       | [running]       |
       1 |        0.25 | (ora_m*_lintes) | Running (ON CPU)       | [running]       |

通过 -G可以指定需要查看的列,syscall表示线程正在执行的系统调用,filenamesum表示正在读写的文件,一般来说,线程处于D状态时在做文件io操作,如果D状态线程频繁出现,那么我们肯定想知道线程正在读写哪个文件。

`bash
[tanel@linux01 ~]$ sudo psn -p -G syscall,wchan,kstack

Linux Process Snapper v0.18 by Tanel Poder [https://0x.tools]
Sampling /proc/wchan, stack, syscall, stat for 5 seconds… finished.

=== Active Threads =======================================================================================================================================================================================================================================================================================================================================================================================

samples | avg_threads | comm | state | syscall | wchan | kstack

Original: https://www.cnblogs.com/codelogs/p/16242999.html
Author: 扣钉日记
Title: 容器内的Linux诊断工具0x.tools

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/714951/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 3、Swift协程详解:调用协程

    我们现在已经知道怎么定义异步函数了,也可以很轻松的转换将现有的异步回调 API 转成异步函数。那下一个问题就是,既然普通函数不能调用异步函数,那定义好的这些异步函数该从哪儿开始调用…

    技术杂谈 2023年6月1日
    086
  • module federation

    webpack 5的新特性:module federation,微前端的一种形式。 参考:https://juejin.cn/post/7117055274682155038 Or…

    技术杂谈 2023年5月31日
    087
  • 日常踩坑_jpa的踩坑心得

    背景提要 使用jpa的出现了很多问题1、使用between做日期范围查询时报错2、使用@Query注解写原生sql时报错3、使用@where注解自动在sql后添加条件时查不出东西4…

    技术杂谈 2023年7月25日
    070
  • Prometheus由于时间不同步导致数据不显示

    原文链接:Prometheus由于时间不同步导致数据不显示 问题 部署 prometheus 后,访问前端界面发现: 这是由于你windows机器与部署prometheus服务器的…

    技术杂谈 2023年7月25日
    079
  • SSA:终于知道编译器偷摸做了哪些事

    你好,我是轩脉刃。 在golang中,我们可以使用 go tool compile -S main.go 工具将一个go程序直接转换为汇编代码。但是你会发现,最终编译出来的汇编代码…

    技术杂谈 2023年6月1日
    065
  • NTP校时服务器在计算机局域网内搭建工作

    NTP校时服务器在计算机局域网内搭建工作 NTP校时服务器在计算机局域网内搭建工作 NTP校时服务器在计算机局域网内搭建工作 京准电子科技官微——ahjzsz 我们都知道,对于监控…

    技术杂谈 2023年6月21日
    0108
  • P2P在NAT和STUN

    转自:https://blog.csdn.net/a1989a132/article/details/17139003 本文主要讨论关于P2P通信的一些常见问题和解决方案。主要内容…

    技术杂谈 2023年6月1日
    092
  • [转帖]颠覆摩尔定律!“小芯片”未来5年市场规模将达58亿美元

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年5月30日
    0100
  • Kubernetes服务发现之Service详解

    一、引子 Kubernetes Pod 是有生命周期的,它们可以被创建,也可以被销毁,然后一旦被销毁生命就永远结束。通过 ReplicationController 能够动态地创建…

    技术杂谈 2023年7月11日
    071
  • SpringBoot日志框架

    概述 项目中日志系统是必不可少的的。 目前比较流行的日志框架有 log4j、 logback等 。可能大家还不知道,这两个框架的作者是同一个人, Logback旨在作为流行的 lo…

    技术杂谈 2023年6月21日
    095
  • Vuex 简单使用

    官网:https://vuex.vuejs.org/zh/ 参考文章:https://www.cnblogs.com/chinabin1993/p/9848720.html Vue…

    技术杂谈 2023年7月25日
    070
  • C++质数判断算法的时间测试

    测试标准 同时,使用两类情况进行测试: 质数判断算法 很显然,判断n是不是质数,最简单的只要暴力从2到n过一遍就可以了 template bool isPrime(IntT n) …

    技术杂谈 2023年7月24日
    053
  • 从一条数据说起——InnoDB行存储数据结构

    本篇博客参考掘金小册——MySQL 是怎样运行的:从根儿上理解 MySQL 先给大家讲一个故事,我刚参加工作,在一个小作坊里面当【码畜】(尽管现在也是),有一天老板从我背后走过,说…

    技术杂谈 2023年7月25日
    071
  • Visual Studio 2022

    感谢您下载 Visual Studio – Visual Studio (microsoft.com) Original: https://www.cnblogs.co…

    技术杂谈 2023年5月31日
    0110
  • 那些舍不得删除的 MP3–批量修改mp3的ID3tag

    整理电脑时发现很多mp3。那是大约2001年至2009年之间。那个时候大家听歌,还是习惯从网上下载mp3。虽然现在听歌比从前方便多了,简单到只需在APP中输入歌名,但用播放器听mp…

    技术杂谈 2023年6月21日
    067
  • elasticsearch-sql-for-druid

    elasticsearh-sql 6.7.1 版本对新版本druid 1.2.5+版本支持 介绍 elasticsearh-sql 6.7.1 版本对新版本druid 1.2.5+…

    技术杂谈 2023年7月24日
    062
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球