linux怎么监控网络运行情况,第1张

介绍Linux环境下网络工具的使用,netstat从内部查看网络的状况,显示网络连接、路由表、接口等信息,我们使用netstat –lntup,l是监听,n是用数字格式显示,如用ip地址、端口号都用数字表示,t是tcp信息,u是udp信息,p是端口。

端口扫描工具nmap,是一款黑客使用的工具,建议大家不要用来扫描公网ip,以避免有法律纠纷争议,我们用nmap常用参数nmap –sT 172111来扫描内网一台服务器,该台服务器开放的端口有22、23、443

我们还可以对操作系统信息进行扫描,用命令nmap –sS -O 172111来扫描该台设备的版本信息进行扫描,通过扫描不仅知道端口开放的情况,也知道扫描的设备是什么型号。

我们介绍tcpdump的使用,从管理的网络里面获取流量,对获取的包进行分析,我们通过命令tcpdump -i eth0 对网卡eth0的流量进行抓取,参数-i是接口的意思。当前我们获取了信息包括CDP的一些信息,可以通过cdp信息查看到核心交换机的信息,还可以看到一些生成树的信息。

下面我们介绍一款在Linux环境下更为直观的抓包软件wireshark,首先需要对该软件进行安装,我们通过yum install wireshark安装软件,按照系统提示一步步安装,直至安装全部完成。

我们同时还可以安装图形化的wireshark软件,通过命令yum list wire看可以显示可以安装的首字母是wire所有软件,这里的是通配符,匹配任意字符,这里的wireshark-gnomex86_64是图形化的软件,我们通过yum install wireshark-gnomex86_64,安装成功后的使用在windows下面使用是相同的,可以选择一块网卡进行抓包并对抓的包进行过滤分析。

看看下面这个脚本(注意要用英文的标点符号):

#!/bin/bash

partion_list=( 'df -h | awk ‘NF>3&&NR>1{sub(/%/,””,$(NF-1));print $NF,$(NF-1)}’' )

critical=90

notification_email()

{

emailuser='user@qqcom' “发送邮件地址”

emailpasswd='password' “成功开启POP3/SMTP服务,在第三方客户端登录时,密码框请输入的授权码”

emailsmtp='smtpqqcom'

sendto='user2@qqcom' “接收邮箱地址”

title='Disk Space Alarm' “邮件标题”

/usr/local/bin/sendEmail -f $emailuser -t $sendto -s $emailsmtp -u $title -xu $emailuser -xp $emailpasswd -m $emailmessage

}

crit_info=””

for (( i=0;i<${#partition_list[@]};i+=2 ))

do

if [ “${partition_list[ ((i+1)) ]}” -lt “$critical” ];then

echo “ok! ${partition_list[i]} used ${partition_list[ ((i+1)) ]}%”

else

if [ “${partition_list[ ((i+1)) ]}” -gt “$critical” ];then

crit_info=$crit_info”Warning!!! ${partition_list[i]}

used ${partition_list[ ((i+1) ] }%\n”

fi

fi

done

if [ “$crit_info” != ”” ];then

echo -e $crit_info | notification_email

fi

上面脚本的功能是监控每个磁盘分区,当磁盘分区使用空间超过90%时,就通过sendEmail来发送邮件告警。sendEmail是个开源工具,可以从http://caspiandotconfnet/menu/Software/SendEmail/sendEmail-v156targz下载;

解压后把sendEmail拷贝到/usr/local/bin下即可。

  1uptime

  该命令直观的显示了服务器在过去15分钟,5分钟,1分钟内的平均负载

  2vmstat

  每隔2秒输出vmstat的信息,共输出10次。

类别

procs

swap

io

system

cpu

r:正在运行的进程数目

si:

换入到内存的容量

bi:

读入块数目

in:

中断数目

us:用户

b:阻塞的进程数目

so:

换出内存的容量

bo:

写到块数目

cs:

上下文切换数目

sy:系统

id:空闲

wa:等待io完成的cpu

  3iostat

  每隔2秒输出iostat信息,共输出3次

tps

blk_read/s

blk_wrtn/s

blk_read

blk_wrtn

发送磁盘的I/O请求数

每秒读取的block数量

每秒写的block数量

读入block的总数

写入block的总数

  备注:该命令包含了cpu信息和磁盘IO信息,这里简单介绍下有关磁盘IO的几个参数。需要注意的是,第一次blk_read和blk_wrtn是统计的历史总数,后面是每一秒的变化数。

  4top

  top

-d

10

每10秒钟查看下信息。

  包含了load信息,系统运行时间信息,cpu信息,进程信息等。

  5free

-m

  total:内存总量,

  used:表示总计分配给缓存(包含buffers

与cache

)使用的数量,但其中可能部分缓存并未实际使用

  free:未分配的内存

  buffers:系统分配但未被使用的buffers

数量

  cached:系统分配但未被使用的cache

数量

  ======buffers/cache行=====

  used:Mem行中的used

-

buffers-cached,实际使用的内存总量

  free:

未被使用的buffers

与cache

和未被分配的内存之和,这就是系统当前实际可用内存。

  6sar

  通过sar命令可以查看服务器的各个硬件的实时运转情况。由于显示的一些参数含义与其它命令类似,这里就不一一详细介绍,只重点介绍

  几个参数。

  (1)sar

-d

显示磁盘实时信息

  (2)sar

-b

查看I/O和传送速率的统计信息

  (3)sar

-u

显示cpu实时信息

  (4)sar

-q

查看平均负载

  (5)sar

-r

查看内存使用情况

  (6)sar

-n

DEV

查看网卡流量情况

  rxpck/s:每秒钟接收的数据包

  txpck/s:每秒钟发送的数据包

  rxbyt/s:每秒钟接收的字节数

  txbyt/s:每秒钟发送的字节数

  rxcmp/s:每秒钟接收的压缩数据包

  txcmp/s:每秒钟发送的压缩数据包

  rxmcst/s:每秒钟接收的多播数据包

Monit是什么?

Monit是

一个跨平台的用来监控Unix/linux系统(比如Linux、BSD、OSX、Solaris)的工具。Monit特别易于安装,而且非常轻量级(只

有500KB大小),并且不依赖任何第三方程序、插件或者库。然而,Monit可以胜任全面监控、进程状态监控、文件系统变动监控、邮件通知和对核心服务

的自定义动作等场景。易于安装、轻量级的实现以及强大的功能,让Monit成为一个理想的后备监控工具。

已经在一些机器使用Monit几年了,而且我对它的可靠性非常满意。甚至作为全面的监控系统,对任何Linux系统管理员来说Monit也是非常有用和强

大的。在这篇教程中,我会展示如何在一个本地服务器部署Monit(作为后备监控系统)来监控常见的服务。在部署过程中,我只会展示我们用到的部分。

在Linux安装Monit

Monit已经被包含在多数Linux发行版的软件仓库中了。

Debian、Ubuntu或者Linux Mint:

$ sudo aptitude install monit

Fedora或者CentOS/RHEL:

在CentOS/RHEL中,你必须首先启用EPEL或者Repoforge软件仓库

# yum install monit

Monit

自带一个文档完善的配置文件,其中包含了很多例子。主配置文件在/etc/monitconf(Fedora/CentOS/RHEL

中),或者/etc/monit/monitrc(Debian/Ubuntu/Mint

中)。Monit配置文件有两部分:“Global”(全局)和“Services”(服务)。

Global Configuration: Web Status Page (全局配置:Web状态页面)

Monit可以使用邮件服务来发送通知,也可以使用HTTP/HTTPS页面来展示。我们先使用如下配置的web状态页面吧:

Monit监听1966端口。

对web状态页面的访问是通过SSL加密的。

使用monituser/romania作为用户名/口令登录。

只允许通过localhost、myhostmydomainro和在局域网内部(19216800/16)访问。

Monit使用pem格式的SSL证书。

之后的步骤,我会使用一个基于Red Hat的系统。在基于Debian的系统中的步骤也是类似的。

首先,在/var/cert生成一个自签名的证书(monitpem):

# mkdir /var/certs # cd /etc/pki/tls/certs # /make-dummy-cert monitpem # cp monitpem /var/certs # chmod 0400 /var/certs/monitpem

现在将下列代码片段放到Monit的主配置文件中。你可以创建一个空配置文件,或者基于自带的配置文件修改。

set httpd port 1966 and SSL ENABLE PEMFILE /var/certs/monitpem allow monituser:romania allow localhost allow 19216800/16 allow myhostmydomainro

Global Configuration: Email Notification (全局配置:邮件通知)

然后,我们来设置Monit的邮件通知。我们至少需要一个可用的SMTP服务器来让Monit发送邮件。这样就可以(按照你的实际情况修改):

邮件服务器的机器名:smtpmonitro

Monit使用的发件人:monit@monitro

邮件的收件人:guletz@monitro

邮件服务器使用的SMTP端口:587(默认是25)

有了以上信息,邮件通知就可以这样配置:

set mailserver smtpmonitro port 587 set mail-format { from: monit@monitro subject: $SERVICE $EVENT at $DATE on $HOST message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION Yours sincerely, Monit } set alert guletz@monitro

就像你看到的,Monit会提供几个内部变量($DATE、$EVENT、$HOST等),你可以按照你的需求自定义邮件内容。如果你想要从Monit所在机器发送邮件,就需要一个已经安装的与sendmail兼容的程序(如postfix或者ssmtp)。

Global Configuration: Monit Daemon (全局配置:Monit守护进程)

接下来就该配置Monit守护进程了。可以将其设置成这样:

在120秒后进行第一次检测。

每3分钟检测一次服务。

使用syslog来记录日志。

如下代码段可以满足上述需求。

set daemon 120 with start delay 240 set logfile syslog facility log_daemon

我们必须定义“idfile”,Monit守护进程的一个独一无二的ID文件;以及“eventqueue”,当monit的邮件因为SMTP或者网络故障发不出去,邮件会暂存在这里;以及确保/var/monit路径是存在的。然后使用下边的配置就可以了。

set idfile /var/monit/id set eventqueue basedir /var/monit

测试全局配置

现在“Global”部分就完成了。Monit配置文件看起来像这样:

# Global Section # status webpage and acl's set httpd port 1966 and SSL ENABLE PEMFILE /var/certs/monitpem allow monituser:romania allow localhost allow 19216800/16 allow myhostmydomainro # mail-server set mailserver smtpmonitro port 587 # email-format set mail-format { from: monit@monitro subject: $SERVICE $EVENT at $DATE on $HOST message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION Yours sincerely, Monit } set alert guletz@monitro # delay checks set daemon 120 with start delay 240 set logfile syslog facility log_daemon # idfile and mail queue path set idfile /var/monit/id set eventqueue basedir /var/monit

现在是时候验证我们的工作了,你可以通过运行如下命令来验证存在的配置文件(/etc/monitconf):

# monit -t Control file syntax OK

如果monit提示任何错误,请再检查下配置文件。幸运的是,错误/警告信息是可以帮助你发现问题的,比如:

monit: Cannot stat the SSL server PEM file '/var/certs/monitpem' -- No such file or directory /etc/monit/monitrc:10: Warning: hostname did not resolve 'smtpmonitro'

一旦你确认配置文件没问题了,可以启动monit守护进程,然后等2到3分钟:

# service monit start

如果你使用的是systemd,运行:

# systemctl start monit

现在打开一个浏览器窗口,然后访问https://<monit_host>:1966。将<monit_host>替换成Monit所在机器的机器名或者IP地址。

如果你使用的是自签名的SSL证书,你会在浏览器中看到一个警告信息。继续访问即可。

你完成登录后,就会看到这个页面。

在这个教程的其余部分,我们演示监控一个本地服务器和常见服务的方法。你会在官方wiki页面看到很多有用的例子。其中的多数是可以直接复制粘贴的!

Service Configuration: CPU/Memory Monitoring (服务配置:CPU、内存监控)

我们先来监控本地服务器的CPU、内存占用。复制如下代码段到配置文件中。

check system localhost if loadavg (1min) > 10 then alert if loadavg (5min) > 6 then alert if memory usage > 75% then alert if cpu usage (user) > 70% then alert if cpu usage (system) > 60% then alert if cpu usage (wait) > 75% then alert

你可以很容易理解上边的配置。最上边的check是指每个监控周期(全局配置里设置的120秒)都对本机进行下面的操作。如果满足了任何条件,monit守护进程就会使用邮件发送一条报警。

如果某个监控项不需要每个周期都检查,可以使用如下格式,它会每240秒检查一次平均负载。

if loadavg (1min) > 10 for 2 cycles then alert

Service Configuration: SSH Service Monitoring (服务配置:SSH服务监控)

先检查我们的sshd是否安装在/usr/sbin/sshd:

check file sshd_bin with path /usr/sbin/sshd

我们还想检查sshd的启动脚本是否存在:

check file sshd_init with path /etc/initd/sshd

最后,我们还想检查sshd守护进程是否存活,并且在监听22端口:

check process sshd with pidfile /var/run/sshdpid start program "/etc/initd/sshd start" stop program "/etc/initd/sshd stop" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout

们可以这样解释上述配置:我们检查是否存在名为sshd的进程,并且有一个保存其pid的文件存在(/var/run/sshdpid)。如果任何一个

不存在,我们就使用启动脚本重启sshd。我们检查是否有进程在监听22端口,并且使用的是SSH协议。如果没有,我们还是重启sshd。如果在最近的5

个监控周期(5x120秒)至少重启5次了,sshd就被认为是不能用的,我们就不再检查了。

Service Configuration: SMTP Service Monitoring (服务配置:SMTP服务监控)

现在我们来设置一个检查远程SMTP服务器(如192168111102)的监控。假定SMTP服务器运行着SMTP、IMAP、SSH服务。

check host MAIL with address 192168111102 if failed icmp type echo within 10 cycles then alert if failed port 25 protocol smtp then alert else if recovered then exec "/scripts/mail-script" if failed port 22 protocol ssh then alert if failed port 143 protocol imap then alert

们检查远程主机是否响应ICMP协议。如果我们在10个周期内没有收到ICMP回应,就发送一条报警。如果监测到25端口上的SMTP协议是异常的,就发

送一条报警。如果在一次监测失败后又监测成功了,就运行一个脚本(/scripts/mail-script)。如果检查22端口上的SSH或者143端

口上的IMAP协议不正常,同样发送报警。

 公司使用的服务器是linux的操作系统,之前很长一段时间监控系统参数都是使用top等linux命令来监控

  这样做的好处

  1可以非常容易的监控的系统的状态

  2实时性非常强

  不足之处

  1不能和loadrunner其他的图表进行合并,造成了很难在事后分析出系统的问题

  2监控系统的数据无法直接保存,供下次参考使用

  最近终于说服了公司的sa,让我能在性能测试环境做必要的设置,因为之前sa一直认为我要做的事情会对系统的安全性造成影响。

  现在我来介绍一下如何在linux设置来完成loadrunner对服务器性能的监控

  A验证服务器上是否配置了rstatd守护程序

  1 rup 127001

  2find / -name rpcrstatd

  3/usr/sbin/rpcinfo -p

  B下载rpcrstatd

  http://sourceforgenet/projects/rstatd

  C打开端口映射

  1执行 setup命令

  这时会弹出一个类似图形化的界面,光标移动到System services,回车。在新界面中找到portmap项,空格选中。然后选择OK,再选择quit。

  2/etc/rcd/initd/portmap start //启动portmap

  D编译安装rstatd

  /configure

  make all-am

  make install-am

  E起rstatd服务

  /usr/local/sbin/rpcrstatd

  F安装xinetd服务

  yum install xinetdi386

  /sbin/service xinetd restart

  好了,liunx中的设置基本上都已经设置完了,接下来只要到loadrunner中加上对相应服务的监控就可以了

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » linux怎么监控网络运行情况

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情