Linux服务器的网络监控

时间:2024-05-19 22:36:51

转载请注明,来自:http://blog.****.net/skyman_2001

一、监控命令:netstat

常用参数说明:
-a :列出所有的连接状态,包括 tcp/udp/unix socket 等;
-t :仅列出 TCP 封包的连接;
-u :仅列出 UDP 封包的连接;
-l :仅列出有在 Listen (监听) 的服务的网络状态;
-p :列出 PID 与 Program名;
-c :设置几秒钟后刷新一次,比如 -c 5 每5秒刷新1次

使用举例:
1. 统计服务器监听指定(比如:8888)端口的ip地址的连接数:

netstat -nat|grep ":8888"|awk '/^tcp/{++S[$4]} END {for(a in S) print a,S[a]}'

若要排序,后面加上:| sort| uniq -c|sort -n

2.统计客户端连接指定(比如:8888)端口的ip地址的连接数,并显示ip地址的地理位置:

netstat -nat|grep ":8888"|awk '/^tcp/{++S[$5]} END {for(a in S) print a,S[a]}'|nali

说明:这里nali是显示ip地址的地理位置的小工具,比如nali IP地址,就会显示出该ip地址的地理位置。

3. 统计tcp连接各状态的数目:

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,"\t",S[a]}'

4. 更详细的统计tcp连接各状态的数目(包括包括ip地址数目和总共连接数目):
netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %s\n", a, S[a]);++I}printf("%-20s %s\n","TOTAL_IP",I);for(a in s) printf("%-20s %s\n", a, s[a]);printf("%-20s %s\n","TOTAL_LINK",N);}'

5.查看所有8888端口的连接数:
netstat -nat|grep -i ":8888"|wc -l

6. 统计所有网络连接数:

netstat -nat|wc -l

7.对连接的IP按连接数量进行排序:

netstat -nat | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

8.查看8888端口连接数最多的20个IP:

netstat -nat|grep 8888|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20

9. 查看排列最多TIME_WAIT连接的20个IP:

netstat -nat|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

二、TCP状态转换图

摘自:http://www.1398.net/blog/user1/cloudy/archives/2007/682.html

Linux服务器的网络监控


Linux服务器的网络监控

关于TIME_WAIT和CLOSE_WAIT的详细对比,请猛击:http://blog.zhuzhaoyuan.com/2009/03/a-word-on-time_wait-and-close_wait/

三、内核调优

可以通过调节linux网络相关的内核参数来优化linux的网络性能,内核参数配置文件为:/etc/sysctl.conf

可以用sysctl命令来查看当前的内核参数设置:

sysctl -a 显示所有的参数配置

sysctlnet.ipv4.ip_forward 显示net.ipv4.ip_forward 的值(同时显示key,即:net.ipv4.ip_forward = *)

sysctl -n net.ipv4.ip_forward显示net.ipv4.ip_forward 的值(但不显示key,直接显示值)

详细的用法参见:http://hi.baidu.com/michaelhan/blog/item/b2784b7b45538ef10bd1872b.html