【专题】Linux 监控调优

2010-04-21 topic monitor

系统监控

记录与监控相关的内容。

Network

  • 网络配置 常见的如主机名、网卡、路由等的配置。
  • 状态查看 主要是网络状态查看,例如正在监听的端口信息。

其它

  • tcprstat 可以用来统计服务端的数据处理时间,包括了最大最小值等统计信息。
  • collectd 一个 C 语言编写的多线程监控采集程序,同时可以参考 源码解析
  • dstat 一个使用 Python 编写的跨平台监控工具,包含系统监控,还可以通过插件扩展。
  • sysbench 不错的压测工具,通常用于数据库,不过也有系统性能压测。
  • prometheus 当前最常用的监控系统,包含了存储,还有 Grafana 展示等。
  • statsd 十分简单的监控协议,默认通过 JavaScript 实现,不过当前有很多其它语言实现。
  • netlink 类似于 TCP/IP 的内核通讯机制,用于在内核态和用户态之间传递数据。
  • zabbix 历史悠久、成熟的开源监控系统,提供了灵活的 API 接口。
  • 系统配置 常见的相关配置,例如 swap、sysctl 等。

性能调优

可以使用 CPU 性能计数器、tracepoints、kprobes、uprobes 对程序的各个指标进行统计。

  • Perf 随 Linux 内核一同发布的性能诊断工具,也包括如何查看火焰图。
  • Trace 通常是由 Linux 内核提供的基本能力,同样支持用户面的配置。
  • PTrace 内核提供的系统调用,允许一个用户态进程检查、修改另一个进程的内存和寄存器。
  • FlameGraph 可视化工具,用于将 perf 的输出以火焰图的形式展示出来。
  • Systemtap 介绍内核神器 Systemtap 的使用方式,包括了如何使用最新的安全特性。

参考

  • ktap 比较老的 Scripting Dynamic Tracing Tool 实现,最近的更新在 2013 年。
  • perf Linux 自带的性能分析工具,在 Brendan Perf 中相关的示例。
  • LTTng 是 Linux 的跟踪框架,支持内核以及用户态的事件。
  • pprof 用于将 gperftools 所产生的内容转化成便于人可以阅读的格式,比如 pdf、svg、text 等。
  • graphviz 提供图形渲染接口,例如 pprof 可以通过该工具转换为 svg、pdf 等格式,对调用关系更便于查看。
  • Bredan Gregg 动态跟踪领域及其重要的作者,文章内包括了 perf、bpf 等内容介绍。

eBPF

在 1992 年,Steven McCanne 和 Van Jacobson 在 BSD Unix 中引入了 Berkeley Packet Filter, BPF 用来在内核态过滤报文,从而减少内核态到用户态复制报文的数量, Linux 在 1997 年,也就是 2.1.75 将该功能引入。

最开始的 BPF 只用于网络包的过滤,不过,而当前除了包过滤,还支持监控调优等等。

  • 功能简介 从 BPF 扩展实现 RISC 虚机,提供包过滤、耗时统计、热点分析等功能。
  • BCC 工具使用 一个使用 Python 编写的工具,使得 eBPF 的使用更加简单有效。

参考

  • Awesome eBPF 在 GitHub 中整理的一些与 eBPF 相关的资料。

参考

一些比较经典的参考文档,其实很多的性能监控会和调优绑定到一块。

APM

  • 有两个比较简单的实现 AppDashUpTrace ,可以作为后续参考。