几个常用的linux性能监控命令

几个常用的linux性能监控命令,第1张

1. sar

每两秒刷新一次, 总共5次

[root@dbhost01 ~]# sar 2 5

Linux 2.6.32-504.el6.x86_64 (dbhost01) 03/30/2018 _x86_64_ (4 CPU)

02:53:15 PM CPU %user %nice %system %iowait%steal %idle

02:53:17 PM all 0.66 0.00 1.72 0.66 0.00 96.96

02:53:19 PM all 1.34 0.00 3.35 0.80 0.00 94.51

02:53:21 PM all 0.79 0.00 1.59 1.45 0.00 96.17

02:53:23 PM all 0.40 0.00 2.00 0.80 0.00 96.80

02:53:25 PM all 0.66 0.00 1.85 0.79 0.00 96.70

Average:all 0.77 0.00 2.10 0.90 0.00 96.23

2. top

top -a 按照内存降序

[root@dbhost01 ~]# top -a

top - 15:00:54 up 6:04, 1 user, load average: 0.31, 0.19, 0.11

Tasks: 306 total, 1 running, 305 sleeping, 0 stopped, 0 zombie

Cpu(s): 7.8%us, 2.4%sy, 0.0%ni, 88.9%id, 0.8%wa, 0.0%hi, 0.1%si, 0.0%st

Mem: 4048972k total, 3848576k used, 200396k free, 134844k buffers

Swap: 4194300k total, 1788k used, 4192512k free, 1835360k cached

3. vmstat

vmstat用于显示虚拟内存,内核线程,磁盘,系统进程, CPU活动等统计信息。

需要安装sysstat工具。

[root@dbhost01 ~]# vmstat

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r b swpd free buff cache si sobibo in cs us sy id wa st

2 0 1788 202508 135064 1835920003226 96 276 1 2 95 1 0

[root@dbhost01 ~]#

[root@dbhost01 ~]# vmstat 2 5

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r b swpd free buff cache si sobibo in cs us sy id wa st

0 0 1788 202336 135068 1836000003226 97 276 1 2 95 1 0

0 0 1788 202624 135068 1836000002529 4012 6682 0 1 98 1 0

0 0 1788 202624 135072 1836004005787 4003 6685 0 1 98 1 0

1 0 1788 202508 135072 1836004005733 4402 7353 1 1 98 0 0

0 0 1788 202540 135076 1836004003347 4002 6674 0 1 98 1 0

4. lsof(list open files)

[root@dbhost01 ~]# lsof | grep 1521

certmonge 2348 root 16r FIFO0,8 0t0 15212 pipe

certmonge 2348 root 18r FIFO0,8 0t0 15218 pipe

gipcd.bin 2754 grid 109u unix 0xffff880139152180 0t0 36936 socket

5. tcpdump

tcpdump -i eth1

15:24:28.777779 IP dbhost01.ssh >192.168.2.82.50990: Flags [P.], seq 393080:393596, ack 105, win 148, options [nop,nop,TS val 22996360 ecr 2443327], length 516

15:24:28.777809 IP dbhost01.ssh >192.168.2.82.50990: Flags [P.], seq 393080:393596, ack 105, win 148, options [nop,nop,TS val 22996360 ecr 2443327], length 516

15:24:28.778976 IP dbhost01.ssh >192.168.2.82.50990: Flags [P.], seq 393596:393968, ack 105, win 148, options [nop,nop,TS val 22996361 ecr 2443327], length 372

15:24:28.779011 IP dbhost01.ssh >192.168.2.82.50990: Flags [P.], seq 393596:393968, ack 105, win 148, options [nop,nop,TS val 22996361 ecr 2443327], length 372

15:24:28.779013 IP 192.168.2.82.50990 >dbhost01.ssh: Flags [.], ack 393968, win 16652, options [nop,nop,TS val 2443327 ecr 22996360], length 0

15:24:28.779481 IP dbhost02-priv.23602 >dbhost01-priv.24271: UDP, length 556

15:24:28.779585 IP dbhost01-priv.24271 >dbhost02-priv.23602: UDP, length 80

15:24:28.779909 IP dbhost01-priv.24271 >dbhost02-priv.23602: UDP, length 80

15:24:28.780584 IP dbhost01.ssh >192.168.2.82.50990: Flags [P.], seq 393968:394724, ack 105, win 148, options [nop,nop,TS val 22996362 ecr 2443327], length 756

15:24:28.780590 IP dbhost01.ssh >192.168.2.82.50990: Flags [P.], seq 393968:394724, ack 105, win 148, options [nop,nop,TS val 22996362 ecr 2443327], length 756

15:24:28.780820 IP dbhost01-priv.24271 >dbhost02-priv.23602: UDP, length 556

15:24:28.782232 IP dbhost01.ssh >192.168.2.82.50990: Flags [P.], seq 394724:395176, ack 105, win 148, options [nop,nop,TS val 22996364 ecr 2443327], length 452

15:24:28.782235 IP dbhost01.ssh >192.168.2.82.50990: Flags [P.], seq 394724:395176, ack 105, win 148, options [nop,nop,TS val 22996364 ecr 2443327], length 452

6.netstat

[root@dbhost01 ~]# netstat -a | grep oracle

unix 2 [ ACC ] STREAM LISTENING 31861 /var/tmp/.oracle/ora_gipc_sdbhost01gridmyracdb-clusterCRFM_SIPC

unix 2 [ ACC ] STREAM LISTENING 33820 /var/tmp/.oracle/sdbhost01DBG_LOGD

unix 2 [ ACC ] STREAM LISTENING 41177 /var/tmp/.oracle/sdbhost01DBG_EVMD

unix 2 [ ACC ] STREAM LISTENING 65106 /var/tmp/.oracle/sAevm

unix 2 [ ACC ] STREAM LISTENING 65108 /var/tmp/.oracle/sSYSTEM.evm.acceptor.auth

7. htop

需要安装

8. iostat

Total DISK READ: 91.48 K/s | Total DISK WRITE: 45.27 K/s

TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND

4071 be/4 oracle 30.18 K/s0.00 B/s 0.00 % 4.69 % ora_lmon_orcl1

4117 be/4 oracle 60.36 K/s 15.09 K/s 0.00 % 3.69 % ora_ckpt_orcl1

2989 rt/4 grid 965.71 B/s0.00 B/s 0.00 % 2.13 % ocssd.bin

4099 be/4 oracle 0.00 B/s 30.18 K/s 0.00 % 0.07 % ora_ckpt_test

2987 rt/4 grid0.00 B/s 482.86 B/s 0.00 % 0.03 % ocssd.bin

2979 rt/3 root0.00 B/s3.77 K/s 0.00 % 0.00 % ologgerd -M -d /g01/grid/app/11.2.0/grid/crf/db/dbhost01

2980 rt/3 root0.00 B/s 15.09 K/s 0.00 % 0.00 % ologgerd -M -d /g01/grid/app/11.2.0/grid/crf/db/dbhost01

9. iftop(流量监控工具)

 除了SSH端口转发外,另一个办法就是SSH反向隧道。SSH反向隧道这个概念其实很简单。为此,你需要在限制性家用网络外面有另一个主机,即所谓的“中继主机”(relay host),你可以从所在地方通过SSH连接到该主机。你可以使用带公共IP地址的虚拟专用服务器(VPS)实例来建立中继主机。然后要做的就是建立一条持久性SSH隧道,从你家用网络的服务器通向公共中继主机。有了这条隧道,你就可以从中继主机“连回”到家用服务器(这就是为什么它叫“反向”隧道)。无论你人在什么地方,或者你家用网络中的NAT或防火墙限制多严格,只要你可以连接到中继主机,就可以连接到家用服务器。\x0d\x0a在Linux上建立SSH反向隧道\x0d\x0a不妨看看我们如何可以建立并使用一条SSH反向隧道。我们假设下列设置。我们将建立一条从家用服务器(homeserver)到中继服务器(relayserver)的SSH反向隧道,那样我们就可以从另一台名为clientcomputer的计算机,通过中继服务器以SSH的方式连接到家用服务器。中继服务器的公共IP地址是1.1.1.1。\x0d\x0a在家用服务器上,打开通向中继服务器的SSH连接,如下所示。\x0d\x0ahomeserver~$ ssh -fN -R 10022:localhost:22 relayserver_user@1.1.1.1\x0d\x0a这里的端口10022是你可以选择的任何随意的端口号。只要确保该端口没有被中继服务器上的其他程序所使用就行。\x0d\x0a“-R 10022:localhost:22”选项定义了反向隧道。它通过中继服务器的端口1022,将流量转发到家用服务器的端口22。\x0d\x0a若使用“-fN”选项,一旦你成功验证了身份、登录到SSH服务器,SSH就会径直进入后台。如果你不想在远程SSH服务器上执行任何命令,只想转发端口,就像在本文的示例中,这个选项很有用。\x0d\x0a运行上述命令后,你将直接回到家用服务器的命令提示符。\x0d\x0a登录进入到中继服务器,核实127.0.0.1:10022绑定到sshd。如果是这样,那意味着反向隧道已正确建立起来。\x0d\x0arelayserver~$ sudo netstat -nap | grep 10022\x0d\x0atcp 0 0 127.0.0.1:10022 0.0.0.0:* LISTEN 8493/sshd\x0d\x0a现在可以从其他任何计算机(比如clientcomputer),登录进入到中继服务器。然后访问家用服务器,如下所示。\x0d\x0arelayserver~$ ssh -p 10022 homeserver_user@localhost\x0d\x0a需要注意的一个地方就是,你为localhost输入的SSH登录信息/密码应该适用于家用服务器,而不是适用于中继服务器,因为你是通过隧道的本地端点登录进入到家用服务器。所以别为中继服务器输入登录信息/密码。成功登录后,你就接入到了家用服务器。\x0d\x0a通过SSH反向隧道,直接连接到NAT后面的服务器\x0d\x0a虽然上述方法让你可以连接到NAT后面的家用服务器,但是你需要登录两次,先登录到中继服务器,然后登录到家用服务器。这是由于中继服务器上SSH隧道的端点绑定到回送地址(127.0.0.1)。\x0d\x0a但实际上,只要单次登录到中继服务器,就可以直接连接到NAT后面的家用服务器。为此,你需要让中继服务器上的sshd不仅可以从回送地址转发端口,还可以从外部主机转发端口。这可以通过在中继服务器上运行的sshd里面指定GatewayPorts选项来实现。\x0d\x0a打开中继服务器的/etc/ssh/sshd_conf,添加下面这一行。\x0d\x0arelayserver~$ vi /etc/ssh/sshd_conf\x0d\x0aGatewayPorts clientspecified\x0d\x0a重启sshd。\x0d\x0a基于Debian的系统:\x0d\x0arelayserver~$ sudo /etc/init.d/ssh restart\x0d\x0a基于红帽的系统:\x0d\x0arelayserver~$ sudo systemctl restart sshd\x0d\x0a现在不妨从家用服务器开始建立SSH反向隧道,如下所示。\x0d\x0ahomeserver~$ ssh -fN -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1\x0d\x0a登录进入到中继服务器,用netstat命令核实SSH反向隧道已成功建立起来。\x0d\x0arelayserver~$ sudo netstat -nap | grep 10022\x0d\x0atcp 0 0 1.1.1.1:10022 0.0.0.0:* LISTEN 1538/sshd: dev\x0d\x0a不像之前的情况,隧道的端点现在是1.1.1.1:10022(中继服务器的公共IP地址),而不是127.0.0.1:10022。这意味着,可以从外部主机连接到隧道端点。\x0d\x0a现在可以从其他任何计算机(比如clientcomputer),输入下列命令,访问NAT后面的家用服务器。\x0d\x0aclientcomputer~$ ssh -p 10022 homeserver_user@1.1.1.1\x0d\x0a在上述命令中,虽然1.1.1.1是中继服务器的公共IP地址,但homeserver_user必须是与家用服务器关联的用户帐户。这是由于,你实际登录进入的主机是家用服务器,而不是中继服务器。后者只是将你的SSH流量中继转发到家用服务器而已。\x0d\x0a在Linux上建立持久性SSH反向隧道\x0d\x0a想必你已明白了如何建立一条SSH反向隧道,现在不妨让隧道具有“持久性”,那样隧道随时建立并运行起来(无论面对什么样的情况:暂时网络拥塞、SSH超时还是中继主机重启等)。毕竟,要是隧道没有始终建立起来,你也就无法可靠地连接到家用服务器。\x0d\x0a为了建立持久性隧道,我要使用一款名为autossh的工具。顾名思义,万一SSH会话由于任何原因而断开,这个程序让你可以自动重启SSH会话。所以,让SSH反向隧道保持持久连接很有用。\x0d\x0a第一步,不妨建立无需密码的SSH登录机制,从家用服务器登录到中继服务器。那样一来,autossh就能重启断开的SSH反向隧道,不需要用户干预。\x0d\x0a下一步,将autossh安装到发起隧道的家用服务器上。\x0d\x0a从家用服务器运行带下列变量的autossh,从而建立一条通向中继服务器的持久性SSH隧道。\x0d\x0ahomeserver~$ autossh -M 10900 -fN -o "PubkeyAuthentication=yes" -o "StrictHostKeyChecking=false" -o "PasswordAuthentication=no" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1\x0d\x0a“-M 10900”选项指定了中继服务器上的一个监控端口,将用来交换测试数据,以监控SSH会话。该端口不应该被中继服务器上的任何程序所使用。\x0d\x0a“-fN”选项传递给ssh命令,让SSH隧道可以在后台运行。\x0d\x0a“-o XXXX”选项指令ssh执行下列 *** 作:\x0d\x0a•使用密钥验证,而不是密码验证。\x0d\x0a•自动接受(未知的)SSH主机密钥。\x0d\x0a•每60秒就交换持久连接(keep-alive)消息。\x0d\x0a•最多发送3个持久连接消息,而不接受任何响应。\x0d\x0a与SSH反向隧道有关的其余选项仍与之前一样。\x0d\x0a如果你希望SSH隧道一启动就自动建立起来,可以在/etc/rc.local中添加上述的autossh命令。

在内网通过域名绑定服务器,外网SSH访问连接时,通过域名的访问,实现访问内网LINUX。具体的实现过程如下:明确LINUX服务器内网访问地址端口,确保LINUX服务器正常开启SSH服务,在内网SSH可以正常访问连接。被访问端的Linux主机上使用nat123动态域名解析Linux版本。在被访问端的Linux服务器安装nat123客户端,并登录使用它。登录网页,左侧用户中心,添加域名解析,选择动态域名解析并添加确认。选择动态域名解析记录,使用二级域名,或自己的域名。鼠标放在输入框有向导提示。如不理解负载均衡,不要勾选多点登录。新添加动态解析后,等待几分钟生效。解析生效后,动态解析域名与本地公网IP是保持对应的。可以通过ping下域名核实,返回结果IP地址为本地公网IP地址时,表示动态解析生效正常。路由器端口映射,路由映射SSH访问22端口。因为公网IP是在路由器上的,外网访问时,需要经过路由,需要在路由器上做端口映射,将内网LINUX服务器访问22端口打通。路由器端口映射位置:转发规则/虚拟服务器/添加允许外网访问端口和协议。我的LINUX服务器SSH服务端口是默认的22,我内网对应LINUX服务器主机的内网IP地址是192.168.1.29。外网访问时,使用动态解析域名。在外网使用SSH访问内网LINUX服务器时,使用动态解析域名进行连接访问。域名是不变的,可以上网即可访问,再也不担心动态公网IP变化的问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7309663.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存