系统监控(ps、htop等)、网络监控系列(jnettop、nmap、netstat等)、日志监控、系统工具

本文详细介绍htop命令的使用方法,包括安装步骤、界面解读、快捷键功能及设置选项。此外,还列举了80个Linux监控工具,涵盖命令行、网络、系统、日志等多个方面。



Linux 80个监控工具全集

Linux 运维工程师必备的 80 个监控工具全集:https://zhuanlan.zhihu.com/p/30444390

随着互联网行业的不断发展,各种监控工具多得不可胜数。这里列出网上最全的监控工具。让你可以拥有超过80种方式来管理你的机器。

在本文中,我们主要包括以下方面:

  • 命令行工具
  • 网络相关内容
  • 系统相关的监控工具
  • 日志监控工具
  • 基础设施监控工具

监控和调试性能问题是一个艰巨的任务,但用对了正确的工具有时也是很容易的。下面是一些你可能听说过的工具,也有可能没有听说过——何不赶快开始试试?

八大系统监控工具

top

这是一个被预装在许多 UNIX 系统中的小工具。当你想要查看在系统中运行的进程或线程时:top 是一个很好的工具。你可以对这些进程以不同的方式进行排序,默认是以 CPU 进行排序的。

htop

htop 官网:http://htop.sourceforge.net/
Linux top 命令的用法详细详解:https://www.cnblogs.com/zhoug2020/p/6336453.html
htop 使用详解:https://www.cnblogs.com/programmer-tlh/p/11726016.html

使用 yum 无法直接安装 htop,需要先安装 epel-release

yum -y install  epel-release
yum -y install htop

htop 实质上是 top 的一个增强版本。它更容易对进程排序。它看起来上更容易理解,并且已经内建了许多通用操作。它也是完全交互式的。

 htop 类似于 top 命令,是 Linux 系统的一个互动的进程查看命令,可以查看系统上运行的所有进程,以及进程执行时的完整命令行。还可以在垂直和水平方向上滚动。以及不用输入进程的 PID 就可以对进程进行相关的操作 (killing, renicing)。htop 与 Linux 传统的 top 相比,htop 更加人性化,它可让用户交互式操作,支持颜色主题,并支持鼠标操作。

使用命令:apt-get install htop 来安装 htop。

htop --help
-C --no-color               使用一个单色的配色方案(设置界面为无颜色)
-d --delay=DELAY            设置延迟更新时间,单位秒
-h --help                   帮助
-s --sort-key=COLUMN      指定 COLUMN 进行排序。( --sort-key=help 查看可用的COLUMN)
-t --tree                   显示树形
-u --user=USERNAME          只显示指定用户的进程
-p --pid=PID,[,PID,PID...]  只显示指定的pid进程,多个pid用逗号分隔
-v --version                版本

直接执行 htop ,结果如图:


可以看到总共分四个区域:

  • 第一区域:CPU、内存、Swap的使用情况;
  • 第二区域:任务、线程、平均负载及系统运行时间的信息。平均负载部分提供了三个数字,这仅仅表示的是过去的5分钟、10分钟和15分钟系统的平均负载而已,在单核的系统中平均负载为1表示的是百分之百的 CPU 利用率。最后,运行时间 (uptime)标示的数字是从系统启动起到当前的运行总时间。
  • 第三区域:当前系统中的所有进程。各列说明:
    PID:进程标志号,是非零正整数
    USER:进程所有者的用户名
    PR:进程的优先级别
    NI:进程的优先级别数值
    VIRT:进程占用的虚拟内存值
    RES:进程占用的物理内存值
    SHR:进程使用的共享内存值
    S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
    %CPU:该进程占用的CPU使用率
    %MEM:该进程占用的物理内存和总内存的百分比
    TIME+:该进程启动后占用的总的CPU时间
    COMMAND:进程启动的启动命令名称
  • 第四区域:当前界面中F1-F10功能键中定义的快捷功能。即 底部菜单栏。

F1 ~ F10 对应的字母 快捷键

快捷键功能键描述中文说明
h, ?F1Invoke htop Help查看 htop 帮助
SF2Htop Setup Menuhtop 设定
/F3Search for a Process输入 进程名 进行搜索
\F4Incremental process filtering过滤 进程
tF5Tree View显示 树形 结构
<, >F6Sort by a column选择 排序 方式
[F7Nice - (change priority)可减少nice值,这样就可以提高对应进程的优先级
]F8Nice + (change priority)可增加nice值,这样就可以降低对应进程的优先级
kF9Kill a Process可对进程传递信号
qF10Quit htop结束 htop

F1 帮助

显示帮助:鼠标点击 Help 或者 按F1 显示 自带帮助

常用命令:
            shift + m : 按照内存大小排序。
            shift + h  : 收缩线程。
                        : 退出

上下键 或 PgUP,PgDn : 选定想要的进程,
左右键 或 Home,End  : 移动字段,当然也可以直接用鼠标选定进程;
Space    标记/取消标记一个进程(类似 windows 按着 Ctrl 多选一样 )。命令可以作用于多个进程,例如 "kill",将应用于所有已标记的进程
U        取消所有选中的进程
s        选择某一进程,按 s: 用 strace 追踪进程的系统调用。(s:显示光标所在进程执行的系统调用;)
l        显示进程打开的文件: 如果安装了 lsof,按此键可以显示进程所打开的文件
I        倒转排序顺序,如果排序是正序的,则反转成倒序的,反之亦然
+, -     When in tree view mode, expand or collapse subtree. 
         When a subtree is collapsed a "+" sign shows to the left of the process name.
a        (在有多处理器的机器上)    设置 CPU affinity: 标记一个进程允许使用哪些CPU
u        显示特定用户进程
M        按照 内存使用百分比 排序, 对应 MEM%列;
P        按照  CPU使用百分比 排序,对应 CPU%列;
T        按照 进程运行的时间 排序,对应TIME+列;
       跟踪进程: 如果排序顺序引起选定的进程在列表上到处移动,让选定条跟随该进程。
          这对监视一个进程非常有用:通过这种方式,你可以让一个进程在屏幕上一直可见。使用方向键会停止该功能。
K        显示/隐藏内核线程
H        显示/隐藏用户线程
#        快速定位光标到PID所指定的进程上。
Ctrl + L            刷新
Numbers        输入PID,光标将移动到相应的进程上(直接输入数字,查找对应的PID进程

F2 设置

鼠标点击 Setup 或者按下 F2 之后进入 htop 设定的页面。使用箭头键选择和更改特定的设置。

Setup 选项下的:

  • 1. Meters:设定顶端的显示信息,分为左右两侧,Left column 表示左侧的显示的信息,Right column表示右侧显示的信息,如果要新加选项,可以选择Available meters添加,F5新增到上方左侧,F6新增到上方右侧。Left column和Right column下面的选项,可以选定信息的显示方式,有LED、Bar(进度条)、Text(文本模式),可以根据个人喜好进行设置
  • 2.  Display options:选择要显示的内容,按空格 x 表示显示,选择完后,按F10保存
  • 3. Colors:设定界面以什么颜色来显示,个人认为用处不大,各人喜好不同
  • 4. Colums:作用是增加或取消要显示的各项内容,选择后F7(向上移动)、F8(向下移动)、F9(取消显示、F10(保存更改))此处增加了PPID、PGRP,根据各人需求,显示那些信息。

Meters 页面设定了顶端的一些信息显示,顶端的显示又分为左右两侧,到底能显示些什么可以在最右侧那栏新增,要新增到上方左侧(F5)或是右侧(F6)都可以,这就是个人设定的范围了。这里多加了一个时钟。

我们也可以自定义进程区域中的显示内容:

F3 - F10

  • 搜索 进程:鼠标点击Search 或者按下F3 或者输入"/", 输入进程名进行搜索,例如搜索ssh
  • 过滤器:按下F4,进入过滤器,相当于关键字搜索,不区分大小写,例如过滤dev。
  • search 和 filter 的区别 :search 会将光标定位到符合条件的进程上,通过 F3 键进行逐个查找;而 filter 会直接将符合条件的进程筛选出来。search 和 filter 都使用 ESC 键来取消功能。
  • 显示树形结构:输入 "t" 或 按下 F5,显示树形结构,意思跟 pstree 差不多,能看到所有程序树状执行的结构,这对于系统管理来说相当方便,理清程序是如何产生的,当然树状结构的浏览也可以依照其他数据来排序。退出树状视图模式,请再一次按下 F5 键。 
  • 选择排序方式:按下 F6 就可以选择依照什么来排序,最常排序的内容就是 cpu 和 memory
  • F7、F8分别对应 nice- 和 nice+:F7 表示减小 nice值(增大优先级),F8增大nice值(减小优先级),选择某一进程,按F7或F8来增大或减小nice值,nice值范围为-20-19
  • F9 对应 kill 给进程发信号,选好信号,然后按下 enter 键,选中的信号就会发送到此进程。
  • F10:退出htop。
  • 空格键:用于标记选中的进程,用于实现对多个进程同时操作;要标注某个进程条目,需要做的就是选中此条目,然后按下空格键。
  • 显示某个用户的进程:在左侧选择用户:输入"u",在左侧选择用户

Alias top:也许你用惯了 top,也可以用 top 来打开 htop。

编辑/root/.bashrc文件,添加如下代码:
if [ -f /usr/local/bin/htop ]; then
    alias top=’/usr/local/bin/htop’
fi
source /root/.bashrc

atop

atop 和 top,htop 非常相似,它也能监控所有进程,但不同于 top 和 htop 的是,它可以按日记录进程的日志供以后分析。它也能显示所有进程的资源消耗。它还会高亮显示已经达到临界负载的资源。

apachetop

apachetop 会监控 apache 网络服务器的整体性能。它主要是基于 mytop。它会显示当前的读取进程、写入进程的数量以及请求进程的总数。

ftptop

ftptop 给你提供了当前所有连接到 ftp 服务器的基本信息,如会话总数,正在上传和下载的客户端数量以及客户端是谁。

mytop

mytop 是一个很简洁的工具,用于监控 mysql 的线程和性能。它能让你实时查看数据库以及正在处理哪些查询。

powertop

powertop 可以帮助你诊断与电量消耗和电源管理相关的问题。它也可以帮你进行电源管理设置,以实现对你服务器最有效的配置。你可以使用 tab 键切换选项卡。

iotop

iotop 用于检查 I/O 的使用情况,并为你提供了一个类似 top 的界面来显示。它按列显示读和写的速率,每行代表一个进程。当发生交换或 I/O 等待时,它会显示进程消耗时间的百分比。

与网络相关的监控

ntopng

ntopng 是 ntop 的升级版,它提供了一个能通过浏览器进行网络监控的图形用户界面。它还有其他用途,如:地理定位主机,显示网络流量和 ip 流量分布并能进行分析。

iftop

iftop 类似于 top,但它主要不是检查 cpu 的使用率而是监听所选择网络接口的流量,并以表格的形式显示当前的使用量。像“为什么我的网速这么慢呢?!”这样的问题它可以直接回答。

jnettop

jnettop 以相同的方式来监测网络流量但比 iftop 更形象。它还支持自定义的文本输出,并能以友好的交互方式来深度分析日志。

bandwidthd

BandwidthD 可以跟踪 TCP/IP 网络子网的使用情况,并能在浏览器中通过 png 图片形象化地构建一个 HTML 页面。它有一个数据库系统,支持搜索、过滤,多传感器和自定义报表。

EtherApe

EtherApe 以图形化显示网络流量,可以支持更多的节点。它可以捕获实时流量信息,也可以从 tcpdump 进行读取。也可以使用 pcap 格式的网络过滤器来显示特定信息。

ethtool

ethtool 用于显示和修改网络接口控制器的一些参数。它也可以用来诊断以太网设备,并获得更多的统计数据。

NetHogs

NetHogs 打破了网络流量按协议或子网进行统计的惯例,它以进程来分组。所以,当网络流量猛增时,你可以使用 NetHogs 查看是由哪个进程造成的。

iptraf

iptraf 收集的各种指标,如 TCP 连接数据包和字节数,端口统计和活动指标,TCP/UDP 通信故障,站内数据包和字节数。

ngrep

ngrep 就是网络层的 grep。它使用 pcap ,允许通过指定扩展正则表达式或十六进制表达式来匹配数据包。

MRTG

MRTG 最初被开发来监控路由器的流量,但现在它也能够监控网络相关的东西。它每五分钟收集一次,然后产生一个 HTML 页面。它还具有发送邮件报警的能力。

bmon

bmon 能监控并帮助你调试网络。它能捕获网络相关的统计数据,并以友好的方式进行展示。你还可以与 bmon 通过脚本进行交互。

traceroute

traceroute 是一个内置工具,能显示路由和测量数据包在网络中的延迟。

IPTState

IPTState 可以让你观察流量是如何通过 iptables,并通过你指定的条件来进行排序。该工具还允许你从 iptables 的表中删除状态信息。

darkstat

darkstat 能捕获网络流量并计算使用情况的统计数据。该报告保存在一个简单的 HTTP 服务器中,它为你提供了一个非常棒的图形用户界面。

vnStat

vnStat 是一个网络流量监控工具,它的数据统计是由内核进行提供的,其消耗的系统资源非常少。系统重新启动后,它收集的数据仍然存在。有艺术感的系统管理员可以使用它的颜色选项。

netstat (windows、linux)

netstat 用于显示与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况。如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用 Netstat 查一查为什么会出现这些情况了。常用命令:netstat -alpe,netstat -anp

网络连接状态 共有 12 中可能的状态,前面11种是按照 TCP 连接建立的三次握手和 TCP 连接断开的四次挥手过程来描述的。

  • 1)、LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN.    /* The socket is listening for incoming connections. 侦听来自远方TCP端口的连接请求 */
  • 2)、SYN_SENT:客户端通过应用程序调用connect进行active open.于是客户端tcp发送一个SYN以请求建立一个连接.之后状态置为SYN_SENT.    /*The socket is actively attempting to establish a connection. 在发送连接请求后等待匹配的连接请求 */
  • 3)、SYN_RECV:服务端应发出ACK确认客户端的 SYN,同时自己向客户端发送一个SYN. 之后状态置为SYN_RECV    /* A connection request has been received from the network. 在收到和发送一个连接请求后等待对连接请求的确认 */
  • 4)、ESTABLISHED: 代表一个打开的连接,双方可以进行或已经在数据交互了。    /* The socket has an established connection. 代表一个打开的连接,数据可以传送给用户 */
  • 5)、FIN_WAIT1:主动关闭(active close)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态.   /* The socket is closed, and the connection is shutting down. 等待远程TCP的连接中断请求,或先前的连接中断请求的确认 */
  • 6)、CLOSE_WAIT:被动关闭(passive close)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT.   /* The remote end has shut down, waiting for the socket to close. 等待从本地用户发来的连接中断请求 */
  • 7)、FIN_WAIT2:主动关闭端接到ACK后,就进入了 FIN-WAIT-2 .    /* Connection is closed, and the socket is waiting for a shutdown from the remote end. 从远程TCP等待连接中断请求 */
  • 8)、LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程序将调用CLOSE关闭连接。这导致它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK .    /* The remote end has shut down, and the socket is closed. Waiting for acknowledgement. 等待原来发向远程TCP的连接中断请求的确认 */
  • 9)、TIME_WAIT:在主动关闭端接收到FIN后,TCP 就发送ACK包,并进入TIME-WAIT状态。    /* The socket is waiting after close to handle packets still in the network.等待足够的时间以确保远程TCP接收到连接中断请求的确认 */
  • 10)、CLOSING: 比较少见.   /* Both sockets are shut down but we still don’t have all our data sent. 等待远程TCP对连接中断的确认 */
  • 11)、CLOSED: 被动关闭端在接受到ACK包后,就进入了closed的状态。连接结束.    /* The socket is not being used. 没有任何连接状态 */
  • 12)、UNKNOWN: 未知的Socket状态。    /* The state of the socket is unknown. */

TCP 标志位

  • SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。
  • ACK: (确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据。
  • FIN: (结束标志,FINish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据。

TCP 3 次握手,4 次挥手。 TCP状态转换图详解:https://www.pianshen.com/article/6579280764/

 TCP三路握手过程的状态变迁:

  1. CLOSED:起始点,在超时或者连接关闭时候进入此状态,这并不是一个真正的状态,而是这个状态图的假想起点和终点。
  2. LISTEN:服务器端等待连接的状态。服务器经过 socket,bind,listen 函数之后进入此状态,开始监听客户端发过来的连接请求。此称为应用程序被动打开(等到客户端连接请求)。
  3. SYN_SENT:第一次握手发生阶段,客户端发起连接。客户端调用 connect,发送 SYN 给服务器端,然后进入 SYN_SENT 状态,等待服务器端确认(三次握手中的第二个报文)。如果服务器端不能连接,则直接进入CLOSED状态。
  4. SYN_RCVD:第二次握手发生阶段,跟 3 对应,这里是服务器端接收到了客户端的 SYN,此时服务器由 LISTEN 进入 SYN_RCVD状态,同时服务器端回应一个 ACK,然后再发送一个 SYN 即 SYN+ACK 给客户端。状态图中还描绘了这样一种情况,当客户端在发送 SYN 的同时也收到服务器端的 SYN请求,即两个同时发起连接请求,那么客户端就会从 SYN_SENT 转换到 SYN_REVD 状态。
  5. ESTABLISHED:第三次握手发生阶段,客户端接收到服务器端的 ACK 包(ACK,SYN)之后,也会发送一个 ACK 确认包,客户端进入 ESTABLISHED 状态,表明客户端这边已经准备好,但TCP 需要两端都准备好才可以进行数据传输。服务器端收到客户端的 ACK 之后会从 SYN_RCVD 状态转移到 ESTABLISHED 状态,表明服务器端也准备好进行数据传输了。这样客户端和服务器端都是 ESTABLISHED 状态,就可以进行后面的数据传输了。所以 ESTABLISHED 也可以说是一个数据传送状态。

上面就是 TCP 三次握手过程的状态变迁。从报文的角度看状态变迁:SYN_SENT 状态表示已经客户端已经发送了 SYN 报文,SYN_RCVD 状态表示服务器端已经接收到了 SYN 报文。

下面看看TCP四次挥手过程的状态变迁:

  1. FIN_WAIT_1:第一次挥手。主动关闭的一方(执行主动关闭的一方既可以是客户端,也可以是服务器端,这里以客户端执行主动关闭为例),终止连接时,发送 FIN 给对方,然后等待对方返回 ACK 。调用 close() 第一次挥手就进入此状态。
  2. CLOSE_WAIT:接收到FIN 之后,被动关闭的一方进入此状态。具体动作是接收到 FIN,同时发送 ACK。之所以叫 CLOSE_WAIT 可以理解为被动关闭的一方此时正在等待上层应用程序发出关闭连接指令。前面已经说过,TCP关闭是全双工过程,这里客户端执行了主动关闭,被动方服务器端接收到FIN 后也需要调用 close 关闭,这个 CLOSE_WAIT 就是处于这个状态,等待发送 FIN,发送了FIN 则进入 LAST_ACK 状态。
  3. FIN_WAIT_2:主动端(这里是客户端)先执行主动关闭发送FIN,然后接收到被动方返回的 ACK 后进入此状态。
  4. LAST_ACK:被动方(服务器端)发起关闭请求,由状态2 进入此状态,具体动作是发送 FIN给对方,同时在接收到ACK 时进入CLOSED状态。
  5. CLOSING:两边同时发起关闭请求时(即主动方发送FIN,等待被动方返回ACK,同时被动方也发送了FIN,主动方接收到了FIN之后,发送ACK给被动方),主动方会由FIN_WAIT_1 进入此状态,等待被动方返回ACK。
  6. TIME_WAIT:从状态变迁图会看到,四次挥手操作最后都会经过这样一个状态然后进入CLOSED状态。共有三个状态会进入该状态
  • 由CLOSING进入:同时发起关闭情况下,当主动端接收到ACK后,进入此状态,实际上这里的同时是这样的情况:客户端发起关闭请求,发送FIN之后等待服务器端回应ACK,但此时服务器端同时也发起关闭请求,也发送了FIN,并且被客户端先于ACK接收到。
  • 由FIN_WAIT_1进入:发起关闭后,发送了FIN,等待ACK的时候,正好被动方(服务器端)也发起关闭请求,发送了FIN,这时客户端接收到了先前ACK,也收到了对方的FIN,然后发送ACK(对对方FIN的回应),与CLOSING进入的状态不同的是接收到FIN和ACK的先后顺序。
  • 由FIN_WAIT_2进入:这是不同时的情况,主动方在完成自身发起的主动关闭请求后,接收到了对方发送过来的FIN,然后回应 ACK。

下面来看看这个看似有点多余的TIME_WAIT状态:从上面进入TIME_WAIT状态的三个状态动作来看(可以直接看状态变迁图)都是主动方最后回应一个ACK(CLOSING实际上前面的那个FIN_WAIT_1状态就已经回应了ACK)。

先考虑这样的一个情况,假如这个最后回应的ACK丢失了,也就是服务器端接收不到这个ACK,那么服务器将继续发送它最终的那个FIN,因此客户端必须维护状态信息(TIME_WAIT)允许它重发最后的那个ACK。如果没有这个TIME_WAIT状态,客户端处于CLOSED状态(开头就说了CLOSED状态实际并不存在,是我们为了方便描述假想的),那么客户端将响应RST,服务器端收到后会将该RST分节解释成一个错误,也就不能实现最后的全双工关闭了(可能是主动方单方的关闭)。所以要实现TCP全双工连接的正常终止(两方都关闭连接),必须处理终止过程中四个分节任何一个分节的丢失情况,那么主动关闭连接的主动端必须维持TIME_WAIT状态,最后一个回应ACK的是主动执行关闭的那端。从变迁图可以看出,如果没有TIME_WAIT状态,我们将没有任何机制来保证最后一个ACK能够正常到达。前面的FIN,ACK正常到达均有相应的状态对应。

还有这样一种情况,如果目前的通信双方都已经调用了 close(),都到达了CLOSED状态,没有TIME_WAIT状态时,会出现这样一种情况,现在有一个新的连接被建立起来,使用的IP地址和端口和这个先前到达了CLOSED状态的完全相同,假定原先的连接中还有数据报残存在网络之中,这样新的连接建立以后传输的数据极有可能就是原先的连接的数据报,为了防止这一点,TCP不允许从处于TIME_WAIT状态的socket 建立一个连接。处于TIME_WAIT状态的 socket 在等待了两倍的MSL时间之后,将会转变为CLOSED状态。这里TIME_WAIT状态持续的时间是2MSL(MSL是任何IP数据报能够在因特网中存活的最长时间),足以让这两个方向上的数据包被丢弃(最长是2MSL)。通过实施这个规则,我们就能保证每成功建立一个TCP连接时,来自该连接先前化身的老的重复分组都已经在网络中消逝了。

  综上来看:TIME_WAIT存在的两个理由就是

  1. 可靠地实现TCP全双工连接的终止;
  2. 允许老的重复分节(数据报)在网络中消逝。

参考资料《UNIX环境高级编程》《TCP/IP 卷1》

TCP 状态转移过程图

Windows 下 netstat 参数

你需要木马及其端口列表的话,去国内的 H站找找,或者baidu,google吧 

-a 和 -n 是最常用的命令,如果要显示一些协议的更详细信息,就要用 -p 这个参数

netstat -p tcp

netstat -r  是用来显示路由表信息

linux 下 netstat 参数。提示:LISTEN 和 LISTENING 的状态只有用 -a 或者 -l 才能看到

root@kali:~# netstat -h
usage: netstat [-vWeenNcCF] [<Af>] -r         netstat {-V|--version|-h|--help}
       netstat [-vWnNcaeol] [<Socket> ...]
       netstat { [-vWeenNac] -i | [-cnNe] -M | -s [-6tuw] }

        -r, --route              显示路由表.显示核心路由表,类似 route -e。
        -i, --interfaces         显示网卡接口。即显示所有网络接口的信息。
        -g, --groups             显示多播组成员。显示多重广播功能群组组员名单。
        -s, --statistics         显示网络统计数据 (like SNMP)。 按各个协议进行统计。
        -M, --masquerade         display masqueraded connections。显示伪装的网络连线。

        -v, --verbose            详细信息
        -W, --wide               不截断IP地址
        -n, --numeric            不解析主机名。即使用数字形式的 IP 地址。禁止域名解析 
        --numeric-hosts          不解析主机名
        --numeric-ports          不解析端口名
        --numeric-users          不解析用户名
        -N, --symbolic           解析硬件名。显示网络硬件外围设备的符号连接名称。
        -e, --extend             显示网络其他更多相关信息。显示扩展信息。
        -p, --programs           显示正在使用Socket的程序PID和程序名称。
        -o, --timers             display timers。显示计时器。
        -c, --continuous         列出所有连接。每隔1秒就重新显示一遍,直到用户中断它。

        -l, --listening          显示服务器处于监听中的套接字。
        -a, --all                显示所有套接字 (默认: connected)。包括正在监听的。
        -F, --fib                display Forwarding Information Base (default)。显示FIB。
        -C, --cache              display routing cache instead of FIB。显示路由器缓存信息。
        -Z, --context            display SELinux security context for sockets

  <Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}
           {-x|--unix} --ax25 --ipx --netrom
  <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: inet  
      -A<网络类型> 或 --<网络类型>     列出该网络类型连线中的相关地址。
  下面列出了可用的 address families (支持路由的):
    inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) x25 (CCITT X.25)
root@kali:~#

-t 或 --tcp          显示TCP协议的连接情况
-u 或 --udp          显示UDP协议的连接情况。
-v 或 --verbose      显示指令执行过程。即显示正在进行的工作。
-V 或 --version      显示版本信息。
-w 或 --raw          显示RAW传输协议的连线状况。
-x 或 --unix         此参数的效果和指定 "-A unix" 参数相同。
--ip 或 --inet        此参数的效果和指定 "-A inet" 参数相同。

统计机器中网络连接各个状态个数。
        命令:netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

把状态全都取出来后使用 uniq -c 统计后再进行排序。
        命令:netstat -nat |awk '{print $6}'|sort|uniq -c

查看连接某服务端口最多的的IP地址。
        命令:netstat -nat | grep "192.168.120.20:16067" |awk '{print $5}'|awk -F: '{print $4}'|sort|uniq -c|sort -nr|head -20

找出 ssh 程序运行的端口。
        命令:netstat -ap | grep ssh

在 netstat 输出中显示 PID 和进程名称。
        命令:netstat -pt

找出运行在指定端口的进程。然后再通过 ps 命令就可以找到具体的应用程序了。
        命令:netstat -anpt | grep ':16064'    

其他组合:-tan、-uan、-tnl、-unl、-tunlp、-tal

 netstat 支持用于显示活动或被动套接字的选项集。选项  -t、-u、-w 和 -x 分别表示 TCP、UDP、RAW 和 UNIX套接字连接。如果你另外还提供了一个 -a 标记,还会显示出等待连接(也就是说处于监听模式)的套接字。这样就可以得到一份当前运行于系统中的所有服务清单。 

netstat -i 的输出结果是这样的: 

  • MTU 和 Met 字段表示的是接口的MTU和度量值值;
  • RX和TX这两列表示的是已经准确无误地收发了多少数据包( RX - OK / TX -
  • OK)、产生了多少错误(RX-ERR/TX-ERR)、丢弃了多少包(RX-DRP/TX-DRP),由于误差而遗失了多少包(RX-OVR/TX-OVR);
  • 最后一列展示的是为这个接口设置的标记,在利用 ifconfig 显示接口配置时,这些标记都采用一个字母。它们的说明如下: 
    ■ B 已经设置了一个广播地址。 
    ■ L 该接口是一个回送设备。 
    ■ M 接收所有数据包(混乱模式)。 
    ■ N 避免跟踪。 
    ■ O 在该接口上,禁用A R P。 
    ■ P 这是一个点到点链接。 
    ■ R 接口正在运行。 
    ■ U 接口处于“活动”状态。 ◆ 显示路由表 

netstat -r 显示内核路由表,就像我们利用 route 命令一样。产生的输出如下: 

netstat 输出结果中,第二列展示的是路由条目所指的网关,如果没有使用网关,就会出现一个星号(*)或者0.0.0.0;第三列展示路由的概述,在
为具体的I P地址找出最恰当的路由时,内核将查看路由表内的所有条目,在对找到的路由与目标路由比较之前,将对IP地址和genmask进行按位“与”计算;第四列显示了不同的标记,这些标记的说明如下: 

■ G 路由将采用网关。 
■ U 准备使用的接口处于“活动”状态。 
■ H 通过该路由,只能抵达一台主机。 
■ D 如果路由表的条目是由ICMP重定向消息生成的,就会设置这个标记。 
■ M 如果路由表条目已被ICMP重定向消息修改,就会设置这个标记。 

netstat 输出结果的 Iface 显示该连接所用的物理网卡,如eth0表示用第一张,eth1表示用第二张。

 -n 参数 对比

无参数使用 netstat

[root@localhost ~]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0    268 192.168.120.204:ssh         10.2.0.68:62420             ESTABLISHED 
udp        0      0 192.168.120.204:4371        10.58.119.119:domain        ESTABLISHED 
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ]         DGRAM                    1491   @/org/kernel/udev/udevd
unix  4      [ ]         DGRAM                    7337   /dev/log
unix  2      [ ]         DGRAM                    708823 
unix  2      [ ]         DGRAM                    7539   
unix  3      [ ]         STREAM     CONNECTED     7287   
unix  3      [ ]         STREAM     CONNECTED     7286   
[root@localhost ~]#

netstat 的输出结果说明

从整体上看,netstat 的输出结果可以分为两个部分:

  • 一个是 Active Internet connections,称为 有源TCP连接,其中 "Recv-Q" 和 "Send-Q" 指的是 接收队列发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
  • 另一个是 Active UNIX domain sockets,称为 有源Unix域套接口 ( 和 网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。        
            Proto 显示连接使用的协议,
            RefCnt 表示连接到本套接口上的进程号,
            Types 显示套接口的类型,
            State 显示套接口当前的状态,
            Path表示连接到套接口的其它进程使用的路径名。

套接口类型:

-t :TCP
-u :UDP
-raw :RAW类型
--unix :UNIX域类型
--ax25 :AX25类型
--ipx :ipx类型
--netrom :netrom类型

状态说明:

LISTEN:      侦听来自远方的TCP端口的连接请求
SYN-SENT:    再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)
ESTABLISHED: 代表一个打开的连接
FIN-WAIT-1:  等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:  从远程TCP等待连接中断请求
CLOSE-WAIT:  等待从本地用户发来的连接中断请求
CLOSING:     等待远程TCP对连接中断的确认
LAST-ACK:    等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)
TIME-WAIT:   等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:      没有任何连接状态

列出所有端口。命令:netstat -a

[root@localhost ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 localhost:smux              *:*                         LISTEN      
tcp        0      0 *:svn                       *:*                         LISTEN      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0    284 192.168.120.204:ssh         10.2.0.68:62420             ESTABLISHED 
udp        0      0 localhost:syslog            *:*                                     
udp        0      0 *:snmp                      *:*                                     
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     708833 /tmp/ssh-yKnDB15725/agent.15725
unix  2      [ ACC ]     STREAM     LISTENING     7296   /var/run/audispd_events
unix  2      [ ]         DGRAM                    1491   @/org/kernel/udev/udevd
unix  4      [ ]         DGRAM                    7337   /dev/log
unix  2      [ ]         DGRAM                    708823 
unix  2      [ ]         DGRAM                    7539   
unix  3      [ ]         STREAM     CONNECTED     7287   
unix  3      [ ]         STREAM     CONNECTED     7286   
[root@localhost ~]# 

netstat 示例

netstat -a     列出所有端口
netstat -n     显示所有已建立的有效连接 ( 用点分四段式的形式显示ip )。
netstat -at    列出 所有 TCP 端口
netstat -au    列出 所有 UDP 端口
netstat -nu    列出 所有 UDP 端口
netstat -apu   显示UDP端口号的使用情况。
netstat -ax    列出 所有 UNIX 端口
netstat -g     显示组播组的关系。

netstat -l    显示监听端口。即 显示监听的套接字。
netstat -lt   显示监听的 TCP 端口
netstat -lu   显示监听的 UDP 端口
netstat -lx   显示监听的 UNIX 端口

netstat -s    显示所有端口的协议统计信息
netstat -st   或者  -su    显示 TCP 或者 UDP 端口统计信息
netstat -p    -p 开关可以与其他开关一起使用,就可以添加 “PID/进程名称” 到netstat的输出中
netstat -pt   
netstat -an   以数字形式显示(不使用主机名)
netstat -a --numeric-ports
netstat -a --numeric-hosts
netstat -a --numeric-users

netstat -c     每隔一秒输出网络信息
netstat --verbose    显示系统不支持的地址族
netstat -r     显示核心路由信息
netstat -rn    显示数字格式,不查询主机名

netstat -ap | grep ssh    找出程序运行端口
netstat -an | grep ':80'    找出运行在指定端口的进程
netstat -i      显示网络接口列表。即 显示网卡列表。
netstat -ie     显示详细信息。跟 ifconfig 很像。

netstat -ntl    用来查看linux的端口使用情况
netstat -natp
netstat -ntlp
netstat -anp | grep 3306
netstat -an
netstat -ae |grep mysql

netstat -e     显示关于以太网的统计数据。  
netstat -i -e  显示主机上每个网络接口的配置和状态
netstat -lp    标识正在监听的网络服务
netstat -rn    检查路由表
 
Linux查看端口及服务 
  # netstat -tulpn 
  或者是
  # netstat -npl


查看TIME_WAIT连接数
netstat -ae|grep "TIME_WAIT" |wc -l     
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}' 

查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
 
netstat + awk 查询连接数两种方法,意义相同
1:netstat -pnt | awk '/^tcp/{print $5}' | cut -d: -f 1 | sort -n |uniq -c
2:netstat -pnt | awk '/^tcp/{s=split($5,N,":");A[N[s-1]]++} END{ for (k in A) print k,A[k]}'

系统连接状态篇:

1.查看TCP连接状态
    netstat -tnl | grep 443    查看443端口是否被占用。
    netstat -pnl | grep 443    可显示出占用本机443端口的进程PID。
    
    netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn
    netstat -n | awk ‘/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}’ 
    或
    netstat -n | awk ‘/^tcp/ {++state[$NF]}; END {for(key in state) print key,”\t”,state[key]}’
    netstat -n | awk ‘/^tcp/ {++arr[$NF]};END {for(k in arr) print k,”\t”,arr[k]}’
    netstat -n |awk ‘/^tcp/ {print $NF}’|sort|uniq -c|sort -rn
    netstat -ant | awk ‘{print $NF}’ | grep -v ‘[a-z]‘ | sort | uniq -c

2.查找请求数请20个IP(常用于查找攻来源):
    netstat -anlp|grep 80|grep tcp|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -nr|head -n20
    netstat -ant |awk ‘/:80/{split($5,ip,”:”);++A[ip[1]]}END{for(i in A) print A[i],i}’ |sort -rn|head -n20

3.用tcpdump嗅探80端口的访问看看谁最高
    tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr |head -20

4.查找较多time_wait连接
    netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20

5.找查较多的SYN连接
    netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more

6.根据端口列进程
    netstat -ntlp | grep 80 | awk ‘{print $7}’ | cut -d/ -f1

网站日志分析篇1(Apache)

1.获得访问前10位的ip地址
    cat access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -10
    cat access.log|awk ‘{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}’

2.访问次数最多的文件或页面,取前20
    cat access.log|awk ‘{print $11}’|sort|uniq -c|sort -nr|head -20

3.列出传输最大的几个exe文件(分析下载站的时候常用)
    cat access.log |awk ‘($7~/\.exe/){print $10 ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -20

4.列出输出大于200000byte(约200kb)的exe文件以及对应文件发生次数
    cat access.log |awk ‘($10 > 200000 && $7~/\.exe/){print $7}’|sort -n|uniq -c|sort -nr|head -100

5.如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面
    cat access.log |awk ‘($7~/\.php/){print $NF ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -100

6.列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
    cat access.log |awk ‘($NF > 60 && $7~/\.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100

7.列出传输时间超过 30 秒的文件
    cat access.log |awk ‘($NF > 30){print $7}’|sort -n|uniq -c|sort -nr|head -20

8.统计网站流量(G)
    cat access.log |awk ‘{sum+=$10} END {print sum/1024/1024/1024}’

9.统计404的连接
    awk ‘($9 ~/404/)’ access.log | awk ‘{print $9,$7}’ | sort

10. 统计http status.
    cat access.log |awk ‘{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}'
    cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn

10.蜘蛛分析
    查看是哪些蜘蛛在抓取内容。
    /usr/sbin/tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | grep -i -E 'bot|crawler|slurp|spider'

网站日分析2 (Squid篇 )

2.按域统计流量
zcat squid_access.log.tar.gz| awk '{print $10,$7}' |awk 'BEGIN{FS="[ /]"}{trfc[$4]+=$1}END{for(domain in trfc){printf "%s\t%d\n",domain,trfc[domain]}}'

效率更高的perl版本请到此下载:http://docs.linuxtone.org/soft/tools/tr.pl

数据库篇
1.查看数据库执行的sql
/usr/sbin/tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | egrep -i 'SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL'

系统Debug分析篇

1.调试命令
strace -p pid

2.跟踪指定进程的PID
gdb -p pid

详细访问linuxtone.org

ss

比起 netstat,使用 ss 更好。ss 命令能够显示的信息比 netstat 更多,也更快。如果你想查看统计结果的总信息,你可以使用命令 ss -s。

nmap

Nmap 可以扫描你服务器开放的端口并且可以检测正在使用哪个操作系统。但你也可以将其用于 SQL 注入漏洞、网络发现和渗透测试相关的其他用途。

MTR

MTR 将 traceroute 和 ping 的功能结合到了一个网络诊断工具上。当使用该工具时,它会限制单个数据包的跳数,然后监视它们的到期时到达的位置。然后每秒进行重复。

Tcpdump

Tcpdump 将按照你在命令行中指定的表达式输出匹配捕获到的数据包的信息。你还可以将此数据保存并进一步分析。

Justniffer

Justniffer 是 tcp 数据包嗅探器。使用此嗅探器你可以选择收集低级别的数据还是高级别的数据。它也可以让你以自定义方式生成日志。比如模仿 Apache 的访问日志。

与系统有关的监控

nmom

nmon 将数据输出到屏幕上的,或将其保存在一个以逗号分隔的文件中。你可以查看 CPU,内存,网络,文件系统,前列 进程。数据也可以被添加到 RRD 数据库中用于进一步分析。

Conky

Conky 能监视很多的操作系统数据。它支持 IMAP 和 POP3, 甚至许多流行的音乐播放器!出于方便不同的人,你可以使用自己的 Lua 脚本或程序来进行扩展。

Glances

使用 Glances 监控你的系统,其旨在使用最小的空间为你呈现最多的信息。它可以在客户端/服务器端模式下运行,也有远程监控的能力。它也有一个 Web 界面。

Saidar

Saidar 是一个非常小的工具,为你提供有关系统资源的基础信息。它将系统资源在全屏进行显示。重点是 saidar 会尽可能的简化。

RRDtool

RRDtool 是用来处理 RRD 数据库的工具。RRDtool 旨在处理时间序列数据,如 CPU 负载,温度等。该工具提供了一种方法来提取 RRD 数据并以图形界面显示。

monit

如果出现故障时,monit 有发送警报以及重新启动服务的功能。它可以对各种数据进行检查,你可以为 monit 写一个脚本,它有一个 Web 用户界面来分担你眼睛的压力。

Linux process explorer

Linux process explorer 是类似 OSX 或 Windows 的活动监视器。它比 top 或 ps 的使用范围更广。你可以查看每个进程的内存消耗以及 CPU 的使用情况。

df

df 是 disk free 的缩写,它是所有 UNIX 系统预装的程序,用来显示用户有访问权限的文件系统的可用磁盘空间。

discus

discus 类似于 df,它的目的是通过使用更吸引人的特性,如颜色,图形和数字来对 df 进行改进。

xosview

xosview 是一款经典的系统监控工具,它给你提供包括 IRQ 在内的各个不同部分的简单总览。

Dstat

dstat 旨在替代 vmstat,iostat,netstat 和 ifstat。它可以让你查实时查看所有的系统资源。这些数据可以导出为 CSV。最重要的是 dstat 允许使用插件,因此其可以扩展到更多领域。

Net-SNMP

SNMP 即“简单网络管理协议”,Net-SNMP 工具套件使用该协议可帮助你收集服务器的准确信息。

incron

incron 允许你监控一个目录树,然后对这些变化采取措施。如果你想在目录‘a’中出现新文件时,将其复制到目录‘b’,这正是 incron 能做的。

monitorix

Monitorix 是轻量级的系统监控工具。它可以帮助你监控单独一台机器,并为你提供丰富的指标。它也有一个内置的 HTTP 服务器,来查看图表和所有指标的报告。

vmstat

vmstat(virtual memory statistics)是一个小型内置工具,能监控和显示机器的内存。

uptime

这个小程序能快速显示你机器运行了多久,目前有多少用户登录和系统过去1分钟,5分钟和15分钟的平均负载。

mpstat

mpstat 是一个内置的工具,能监视 cpu 的使用情况。最常见的使用方法是 mpstat -P ALL,它给你提供 cpu 的使用情况。你也可以间歇性地更新 cpu 的使用情况。

pmap

pmap 是一个内置的工具,报告一个进程的内存映射。你可以使用这个命令来找出导致内存瓶颈的原因。

ps

该命令将给你当前所有进程的概述。你可以使用 ps -A 命令查看所有进程。

sar

sar 是 sysstat 包的一部分,可以帮助你收集、报告和保存不同系统的指标。使用不同的参数,它会给你提供 CPU、 内存和 I/O 使用情况及其他东西。

collectl

类似于 sar,collectl 收集你机器的性能指标。默认情况下,显示 cpu、网络和磁盘统计数据,但它实际收集了很多信息。与 sar 不同的是,collectl 能够处理比秒更小的单位,它可以被直接送入绘图工具并且 collectl 的监控过程更广泛。

iostat

iostat 也是 sysstat 包的一部分。此命令用于监控系统的输入/输出。其报告可以用来进行系统调优,以更好地调节你机器上硬盘的输入/输出负载。

free

这是一个内置的命令,用于显示你机器上可用的内存大小以及已使用的内存大小。它还可以显示某时刻内核所使用的缓冲区大小。

/proc 文件系统

proc 文件系统可以让你查看内核的统计信息。从这些统计数据可以得到你机器上不同硬件设备的详细信息。看看这个 proc 文件统计的完整列表[42]。

GKrellm

GKrellm 是一个图形应用程序,用来监控你硬件的状态信息,像CPU,内存,硬盘,网络接口以及其他的。它也可以监视并启动你所选择的邮件阅读器。

Gnome 系统监控器

Gnome 系统监控器是一个基本的系统监控工具,其能通过一个树状结构来查看进程的依赖关系,能杀死进程及调整进程优先级,还能以图表形式显示所有服务器的指标。

日志监控工具

GoAccess

GoAccess 是一个实时的网络日志分析器,它能分析 apache, nginx 和 amazon cloudfront 的访问日志。它也可以将数据输出成 HTML,JSON 或 CSV 格式。它会给你一个基本的统计信息、访问量、404 页面,访客位置和其他东西。

Logwatch

Logwatch 是一个日志分析系统。它通过分析系统的日志,并为你所指定的部分创建一个分析报告。它每天给你一个报告,以便让你花费更少的时间来分析日志。

Swatch

像 Logwatch 一样,Swatch 也监控你的日志,但不是给你一个报告,它会匹配你定义的正则表达式,当匹配到后会通过邮件或控制台通知你。它可用于检测入侵者。

MultiTail

MultiTail 可帮助你在多个窗口之下监控日志文件。你可以将这些日志文件合并到一个窗口。它可以通过正则表达式的帮助,使用不同的颜色来显示日志文件以方便你阅读。

系统工具

acct or psacct

acct 也称 psacct(取决于如果你使用 apt-get 还是 yum)可以监控所有用户执行的命令,包括 CPU 时间和内存占用。一旦安装完成后你可以使用命令 sa 来查看统计。

whowatch

类似 acct,这个工具监控系统上所有的用户,并允许你实时查看他们正在执行的命令及运行的进程。它将所有进程以树状结构输出,这样你就可以清楚地看到到底发生了什么。

strace

strace 被用于诊断、调试和监控程序之间的相互调用过程。最常见的做法是用 strace 打印系统调用的程序列表,其可以看出程序是否像预期那样被执行了。

DTrace

DTrace 可以说是 strace 的大哥。它动态地跟踪与检测代码实时运行的指令。它允许你深入分析其性能和诊断故障。但是,它并不简单,关于这个话题有1200本书之多。

Webmin

Webmin 是一个基于 Web 的系统管理工具。它不需要手动编辑 UNIX 配置文件,可以让你远程管理系统。它有一对监控模块用于连接它。

Stat

Stat 是一个内置的工具,用于显示文件和文件系统的状态信息。它会显示文件何时被修改、访问或更改。

ifconfig

ifconfig 是一个内置的工具,用于配置网络接口。大多数网络监控工具背后都使用 ifconfig 将网卡设置成混乱模式来捕获所有的数据包。你可以手动执行 ifconfig eth0 promisc 进入混乱模式,使用 ifconfig eth0 -promisc 返回正常模式。

ulimit

ulimit 是一个内置的工具,可监控系统资源,并可以限制任何监控资源不得超标。比如做一个 fork 炸弹,如果使用 ulimit 正确配置了将完全不受影响。

CPULimit

CPULimit 是一个小工具,用于监控并限制进程对 CPU 的使用率。其特别可以用于将批处理作业对 CPU 的使用率保持在一定范围。

lshw

lshw 是一个小的内置工具,能提取关于本机硬件配置的详细信息。它可以输出 CPU 版本和主板配置。

w (who)

w 是一个内置命令,用于显示当前登录用户的信息及他们所运行的进程。

lsof

lsof 是一个内置的工具,用于查看对应进程打开的文件。这里的文件不仅仅指常见的普通文件。在Linux系统中有一种说法叫“万物皆文件”,其实网络中建立的连接也可以叫作文件,因此 lsof 命令也可以用于与 netstat 命令相同的操作。

基础架构监控工具

Server Density

我们的 服务器监控工具[56] 它有一个 web 界面,使你可以进行报警设置并可以通过图表来查看所有系统的网络指标。你还可以设置监控的网站,无论是否在线。Server Density 允许你设置用户的权限,你可以根据我们的插件或 api 来扩展你的监控。该服务已经支持 Nagios 的插件了。

OpenNMS

OpenNMS 主要有四个功能区:事件管理和通知;发现和配置;服务监控和数据收集。其设计为可被在多种网络环境中定制。

SysUsage

SysUsage 通过 Sar 和其他系统命令持续监控你的系统。一旦达到阈值它也可以进行报警通知。SysUsage 本身也可以收集所有的统计信息并存储在一个地方。它有一个 Web 界面可以让你查看所有的统计数据。

brainypdm

brainypdm 是一个数据管理和监控工具,它能收集来自 nagios 或其它常规来源的数据并以图表显示。它是跨平台的,其基于 Web 并可自定义图形。

PCP

PCP 可以收集来自多个主机的指标,并且效率很高。它也有一个插件框架,所以你可以让它收集对你很重要的指标。你可以通过任何一个 Web 界面或 GUI 访问图形数据。它比较适合大型监控系统。

KDE 系统守护

这个工具既是一个系统监控器也是一个任务管理器。你可以通过工作表来查看多台机器的服务指标,如果需要杀死一个进程或者你需要启动一个进程,它可以在 KDE 系统守护中来完成。

Munin

Munin 既是一个网络也是系统监控工具,当一个指标超出给定的阈值时它会提供报警机制。它运用 RRDtool 创建图表,并且它也有 Web 界面来显示这些图表。它更强调的是即插即用的功能并且有许多可用的插件。

Nagios

Nagios 是系统和网络监控工具,可帮助你监控多台服务器。当发生错误时它也有报警功能。它的平台也有很多的插件。

Zenoss

Zenoss 提供了一个 Web 界面,使你可以监控所有的系统及网络指标。此外,它能自动发现网络资源和修改网络配置。并且会提醒你采取行动,它也支持 Nagios 的插件。

Cacti

(和上一个一样!) Cacti 是一个网络图形解决方案,其使用 RRDtool 进行数据存储。它允许用户在预定的时间间隔进行投票服务并将结果以图形显示。Cacti 可以通过 shell 脚本扩展来监控你所选择的来源。

Zabbix

Zabbix 是一个开源的基础设施监控解决方案。它使用了许多数据库来存放监控统计信息。其核心是用 C 语言编写,并在前端中使用 PHP。如果你不喜欢安装代理端,Zabbix 可能是一个最好选择。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值