Linux运维不可不知的性能监控和调试工具

Linux运维不可不知的性能监控和调试工具

1 nagios

Nagios是一个开源监控解决方案,我觉得他可以监控一切 ,可以看一下我以前的文章:NAGIOS

2 ps #用来查看程序的运行情况

ps -ef |grep svr.py|grep -v grep |awk ‘{print $2}‘ #查看svr.py的进程pid号
14554

[email protected]:~> ps -e -o pid,args --forest #层次结构中的进程ID

3 free
#查看系统的物理(RAM)和交换内存的信息

[email protected]:~> free -mto #MB值显示,显示总计
total used free shared buffers cached
Mem: 3196 2947 249 0 264 1436
Swap: 2053 88 1965
Total: 5250 3035 2215
4 top
#显示所有正在运行的进程的信息,类似于windows的资源管理器 详细的清参看:
关于top命令的研究5 pmap #显示一个给定的进程的内存映射

[email protected]:~> pmap 14443
14443: bash
START SIZE RSS PSS DIRTY SWAP PERM MAPPING
08048000 580K 476K 74K 0K 0K r-xp /bin/bash
080d9000 4K 4K 4K 4K 0K r--p /bin/bash
080da000 8K 8K 8K 8K 0K rw-p /bin/bash
080dc000 1076K 976K 976K 976K 0K rw-p [heap]
b744c000 8K 8K 8K 8K 0K rw-p [anon]
b744e000 252K 32K 6K 0K 0K r--p
/usr/lib/locale/zh_CN.utf8/LC_CTYPE
b748d000 1344K 24K 2K 0K 0K r--p
/usr/lib/locale/zh_CN.utf8/LC_COLLATE

6 nestat
#显示各种网络相关信息,如网络连接,路由表,接口统计等,这个很常用,比如判断某程序的端口是否在监听

[email protected]:~> sudo /bin/netstat -ap |grep ssh #-a 表示所有端口
-p显示pid
root‘s password:
tcp 0 0 linux-b8lh.site:59073 mta1:61002 ESTABLISHED
29323/ssh
tcp 0 0 linux-b8lh.site:35252 10.14.22.26:61300 ESTABLISHED
11986/ssh
tcp 0 0 linux-b8lh.site:57146 mta1:61002 ESTABLISHED
9138/ssh
tcp 0 0 linux-b8lh.site:32997 10.14.22.26:61300 ESTABLISHED
15122/ssh
tcp 0 0 linux-b8lh.site:45807 10.14.22.26:61300 ESTABLISHED
29240/ssh
tcp 0 0 linux-b8lh.site:35865 mta1:61002 ESTABLISHED
28751/ssh
unix 2 [ ACC ] STREAM LISTENING 13182 2929/gnome-keyring-
/tmp/keyring-TMukPL/ssh
unix 3 [ ] STREAM CONNECTED 607118 29323/ssh
unix 3 [ ] STREAM CONNECTED 607117 29326/sshfs
unix 3 [ ] STREAM CONNECTED 608427 29240/ssh
unix 3 [ ] STREAM CONNECTED 608426 29244/sshfs

[email protected]:~>
sudo /bin/netstat -tunlp|grep name #我常用的命令

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program
name
tcp 0 0 172.16.180.1:53 0.0.0.0:* LISTEN 5160/named
tcp 0 0 172.16.110.1:53 0.0.0.0:* LISTEN 5160/named
tcp 0 0 192.168.8.46:53 0.0.0.0:* LISTEN 5160/named
tcp 0 0 127.0.0.2:53 0.0.0.0:* LISTEN 5160/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 5160/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 5160/named
udp 0 0 172.16.180.1:53 0.0.0.0:* 5160/named
udp 0 0 172.16.110.1:53 0.0.0.0:* 5160/named
udp 0 0 192.168.8.46:53 0.0.0.0:* 5160/named
udp 0 0 127.0.0.2:53 0.0.0.0:* 5160/named
udp 0 0 127.0.0.1:53 0.0.0.0:*

[email protected]:~> netstat -r #显示路由信息类似于‘route
-n‘的输出
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
172.16.180.0 * 255.255.255.0 U 0 0 0 vmnet8
172.16.110.0 * 255.255.255.0 U 0 0 0 vmnet1
192.168.8.0 * 255.255.255.0 U 0 0 0 eth3
link-local * 255.255.0.0 U 0 0 0 eth3
loopback * 255.0.0.0 U 0 0 0 lo
default 192.168.8.254 0.0.0.0 UG 0 0 0 eth3
7 IPTraf

[email protected]:~> sudo zypper install iptraf

网络流量实时监控工具,可以监控所有的流量,IP流量,按协议分的流量,还可以设置过滤器等

启动需要root权限,一个图形化的工具,可以抓包,报告网卡流量情况,网卡数据包个数等,我也比较喜欢它来判断一些网络问题

8 htop

[email protected]:~> sudo zypper install htop

彩色字体的top ,支持鼠标点击,对cpu使用情况。内存使用情况,当前负载情况等都直接显示,替代了top

9 dstat

[email protected]:~> sudo zypper install dstat

#彩色字体的vmstat

[email protected]:~> dstat -a
----total-cpu-usage---- -dsk/total- -net/total- ---paging--
---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int
csw
25 2 72 0 0 0| 43k 75k| 0 0 | 107B 839B|2066 7231
25 2 72 0 0 0| 0 40k|1328B 0 | 0 0 |2029 6175
27 2 70 1 0 0| 0 20k|2245B 1231B| 0 0 |2191 6545
28 1 70 0 0 0| 0 0 |1610B 0 | 0 0 |2243 6815
25 2 72 0 0 0| 0 104k|1224B 0 | 0 0 |2075 6610

10 Strace #i like it
用于调试和故障排除Linux环境下的可执行文件的执行。 它显示了系统调用的进程所使用的过程中收到的信号,常用 *2
不会这个基本不要作运维了

#strace + 可执行程序

注:想要特定一个系统调用 使用‘-e’

11 lsof
#卸载移动存储时经常提示device busy,也可能误删了一个正在打开的文件,lsof(list open
files)是一个列出当前系统打开文件的工具.应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个
列表有助于系统监测以及排错

[email protected]:~> lsof -a -u dongwm -d txt
#查看所属root用户进程所打开的文件类型为txt的文件
[email protected]:~> lsof /home
#在卸载文件系统时,如果该文件系统中有任何打开的文件,操作通常将会失败。那么通过lsof可以找出那些进程在使用当前要卸载的文件系统

WebQQ\xe5 24090 dongwm 2u REG 8,7 7247256 12320783
/home/dongwm/.xsession-errors
notificat 27261 dongwm mem REG 8,7 1512 12982245
/home/dongwm/.local/share/mime/mime.cache
bluefish 29204 dongwm cwd DIR 8,7 12288 12320769
/home/dongwm
bluefish 29204 dongwm DEL REG 8,7 12321855
/home/dongwm/.local/share/gvfs-metadata/home-4be5293d.log
bluefish 29204 dongwm DEL REG 8,7 12320866
/home/dongwm/.local/share/gvfs-metadata/home


复文件:当系统中的某个文件被意外地删除了,只要这个时候系统中还有进程正在访问该文件,那么我们就可以通过lsof从/proc目录下恢复该文件的内
容。思路就是lsof|grep 这个删除了的文件,如果输出了项,记住pid 和第4列的“数字+字母”其中的数字,然后, cat
/proc/那个pid/fd/那个数字 > 删掉的文件 就恢复了

12 w
#查看当前登录系统的用户

13 uptime
#查看当前负载的命令

[email protected]:~> uptime
17:52 已启动1 天 8:41,6 个用户,平均负载:0.42, 0.26, 0.24
14 vnstat
#用来统计网络流量

[email protected]:~> sudo zypper install vnstat

vnstati -i eth0 – -months – -output /dir/month.png
#每月的流量统计图,做成定时任务+html显示就更OK了

[email protected]:~> sudo vnstat-create-db eth0
root‘s password:
Error: Unable to read database "/var/lib/vnstat/eth0".
Info: -> A new database has been created.
[email protected]:~> vnstat --top10 #创建数据库信息,查看流量前10

15 ss #socket流量状态情况,
我喜欢

[email protected]:~> sudo /usr/sbin/ss -o state established
#查看建立连接的socket
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 0 192.168.8.46:59073 60.2.235.195:61002
timer:(keepalive,60min,0)
0 0 192.168.8.46:52996 112.95.243.28:http
0 0 192.168.8.46:51066 128.121.22.144:http
0 0 192.168.8.46:38547 112.95.240.222:http
0 0 192.168.8.46:49295 74.125.71.154:http
0 0 192.168.8.46:46500 10.14.22.26:61300
timer:(keepalive,48min,0)

[email protected]:~> sudo /usr/sbin/ss -l #显示所有的监听套接字
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 3 172.16.180.1:domain *:*
0 3 172.16.110.1:domain *:*
0 3 192.168.8.46:domain *:*
0 3 127.0.0.2:domain *:*
0 3 127.0.0.1:domain *:*
0 128 127.0.0.1:ipp *:*
0 128 ::1:ipp :::*
0 128 127.0.0.1:953 *:*
0 50 *:mysql *:*
0 128 :::sunrpc :::*
0 128 *:sunrpc *:*
0 128 :::http

[email protected]:~> sudo /usr/sbin/ss -s
#显示根据类型划分的总数值统计
Total: 719 (kernel 769)
TCP: 62 (estab 5, closed 16, orphaned 4, synrecv 0, timewait 2/0),
ports 42

Transport Total IP IPv6
* 769 - -
RAW 1 1 0
UDP 12 10 2
TCP 46 43 3
INET 59 54 5
FRAG 0 0 0

时间: 2024-08-08 00:35:10

Linux运维不可不知的性能监控和调试工具的相关文章

【sehll学习】linux运维一个简单shell脚本监控系统内存

学习shell脚本入门后,慢慢要尝试编写一些脚本练练手,在这先简单的学习写个系统内存的监控. 1.首先先要确定一下截取一下需要关注的内存使用值,可使用free 命令来操作 free -m 显示 一般在监控内存是我们都是截取 第三行(-/+ buffers/cache)的值.确定后可以使用管道线和grep命令来获取这个的值. free -m | grep - | awk  '{print $4}' 获取到他的值为  858 当中 grep -  就是匹配一下要选取的内容,不太熟悉的可以学习一下gr

Linux运维之Shell编程------(一)监控MySQL错误码及主从复制同步异常

Linux运维之Shell编程 一.监控MySQL错误码及主从复制同步异常 题目:监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员.提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:阶段1:开发一个守护进程脚本每30秒实现检测一次.阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误.阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分) 阶段2: #!/bin/bash#CONTACT='[email prote

linux运维升级路线

运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化.如:今年大数据,人工智能比较火--(相对表示就是 Python 比较火) 之前写过运维基础篇,发现对很多人收益挺大,接下来也写下关于这4年多的运维实践经验,从事了2年多游戏运维,1年多安全运维,1年大数据运维,相关行业信息不能算非常精通,但是熟悉和熟练还是相对可以的. 初级篇 linux运维人员常用工具拓扑详见: 1.rsync工具 很多地方经常会用到rsync工具,实施几台服务器的

Linux运维(十)-2016-12-9整理

也有段时间没有整理面试题目了,这几天呢,完成了2场实习生和1场校招,十分郁闷,为什么金融运维一点都不关注技术,在乎我的学校成绩,我尼玛想说,学校那么水的课程能说明什么,跟技术有一丁丁点关系吗?我学业成绩不好,就能否定我的专业岗位基础不行吗?唉,劳资想说,你如果质疑我的能力,你就问我,劳资要是被你虐倒是我算我输,学艺不精我就服,看过去有球用. 这辈子职业生涯都不想进外包和IDC这两种类型的公司,就是TM打杂的,薪资还低,关键是不厚道,比如垃圾胜蓝.这回校招那家是我之前就提到的那家,大多数人对我是认

Linux运维常用命令

Linux运维常用的150个命令 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息. cd 全拼change directory,功能是从当前工作目录切换到指定的工作目录. cp 全拼copy,其功能为复制文件或目录. find 查找的意思,用于查找目录及目录下的文件. mkdir 全拼mak

51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程(高俊峰)

51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程 第一课 Linux运维经验分享与思路 1.一般把主机名,写到hosts下    127.0.0.1    hostname,因为很多应用要解析到本地.oracle没有这个解析可能启动不了. 2.注释掉UUID以及MAC地址,需要绑定网卡的时候,这个可能会有影响. 3.磁盘满了无法启动,  var下木有空间,无法创创建PID等文件,导致文件无法启动,按e   进入single  然后b  重启进入单用户模式. 4.ssh登陆系

如何迅速掌握并提高linux运维技能

之前曾经写过一篇如何学习Linux的文章,得到了很多反馈,大家都在分享自己的学习经验和体会,并且也提出了不少意见和建议.学习这个事情其实是说起来容易,做起来就很难,虽然给大家提高了很多学习linux的思路和方法,但是很多时候,学习的过程是个锻炼和总结的过程,需要自己去体会和领悟,而这个领悟跟钻研的深度有关,所以,对linux技术点钻研较深的朋友,可能收获的知识就多一些,提高也就快一些,而相反,不太喜欢钻研的朋友们,技能提高就稍微慢一点,因此,我们说虽然有了统一的学习方法,但是由于每个人的领悟力不

Linux运维常用知识(4)

linux命令无效-bash: ls: command not found 一次重启后开机,基本所有的命令都不可用,只有少数的命令可用 [[email protected] ~]# ll -bash: ls: command not found [[email protected] ~]# pwd /root [[email protected] ~]# shutdown -r now -bash: shutdown: command not found [[email protected] ~

Linux运维 第三阶段 (十七) memcached

一.相关概念: memcached.org(live journal站点贡献的),很多流行站点都在用,如wikipedia.twitter.youtube.mixi等,memcached是非常流行的缓存服务,众多的应用程序开发基本都支持memcached缓存(C有C库,C++有C++库,php有php库,开发时都可直接调用memcached功能,若某个应用程序开发时不用memcached,它就不能往memcached中缓存数据,缓存数据与否取决于app自身,由app决定缓不缓存用不用它) mem