1.查询有没有装sysstat包
[root@station109 ~]# rpm -ql sysstat| grep /bin
/usr/bin/cifsiostat
/usr/bin/iostat
/usr/bin/mpstat
/usr/bin/pidstat
/usr/bin/sadf
/usr/bin/sar
软件包中含有6个命令
iostat:查询本地or远程 磁盘存储IO,cpu
[root@station109 ~]# iostat
Linux 2.6.32-131.0.15.el6.x86_64 (station109.kaixin.com) 2011年11月01日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
15.93 1.82 11.75 1.78 0.00 68.73
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 4.10 133.09 58.54 3773549 1659648
avg-cpu:
%user:用户所占cpu的百分比
%nice:优先级别所占cpu的百分比
%system:系统所占cpu的百分比
%iowait:平均每次设备I/O操作的等待时间 (毫秒)所占cpu的百分比。即 delta(ruse+wuse)/delta(rio+wio)
%steal:(一般情况不用看)
%idle:cpu空闲百分比
Device:磁盘
tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。
Blk_read/s:该设备每秒的读次数
Blk_wrtn/s:该设备每秒的写次数
Blk_read:该设备读入的文件个数
Blk_wrtn:该设备写入的文件个数
选项:
[root@station109 ~]# iostat --help
用法: iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]
选项:
[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ]
[ <设备> [...] | ALL ] [ -p [ <设备> [,...] | ALL ] ]
详细选项说明查看帮助文档:man iostat
2.cpu:
[root@station109 ~]# top
top - 17:13:56 up 8:16, 3 users, load average: 0.01, 0.09, 0.12 代表平均每分钟,每五分钟,每十分钟cpu的负载情况
Tasks: 164 total, 2 running, 161 sleeping, 0 stopped, 1 zombie
Cpu(s): 15.7%us, 8.3%sy, 0.7%ni, 75.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1528280k total, 1428552k used, 99728k free, 18672k buffers
Swap: 4192924k total, 53696k used, 4139228k free, 290828k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3019 root 20 0 942m 145m 24m S 6.0 9.8 26:55.53 firefox
5471 root 20 0 1063m 63m 17m S 6.0 4.3 61:58.33 plugin-containe
1553 root 20 0 181m 43m 8832 S 4.3 2.9 11:04.38 Xorg
2218 root 20 0 792m 38m 15m S 4.0 2.6 1:08.71 konsole
5721 root 20 0 1444m 299m 220m S 3.3 20.1 15:11.34 VirtualBox
1269 root 20 0 2856 236 180 S 1.0 0.0 2:47.10 lldpad
282 root 20 0 0 0 0 S 0.3 0.0 0:21.71 scsi_eh_1
4866 root 20 0 763m 7112 3376 S 0.3 0.5 0:50.64 VBoxSVC
11714 root 20 0 17080 1284 940 R 0.3 0.1 0:00.05 top
1 root 20 0 19328 1196 996 S 0.0 0.1 0:00.63 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
top:查看cpu,内存,进程所占内存and cpu的使用情况
buffers:内存
cached:缓存
查看cpu平均负载(等待的进程的个数)
[root@station109 ~]# cat /proc/loadavg
0.18 0.17 0.15 1/423 11730
查看cpu的信息:
[root@station109 ~]# cat /proc/cpuinfo | grep CPU
model name : Intel(R) Celeron(R) CPU 540 @ 1.86GHz
3.假若装系统的时候忘了建立交换分区,如何搭建一个交换分区
先创建一个文件:dd if=/dev/zero of=1.img bs=1M count=500 #新建了一个500M的文件
格式化文件为swap:mkswap filename
[root@station109 ~]# mkswap 1.img
mkswap: 1.img: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=bf9f79bc-2626-4272-b6b6-8a738cf21ee4
vi /etc/fstab
1.img /swap swap defaults 0 0
实现swap并发
vi /etc/fstab:defaults,pri=1
UUID=f2dd9b85-c98e-4f95-a296-71559fdceda5 swap swap defaults,pri=1 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
1.img /swap swap defaults,pri=1 0 0
查询新建的swap分区情况:
[root@station ~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda2 partition 511992 0 1
/root/1.img file 511992 0 1
交换分区的变化:
[root@station ~]# free
total used free shared buffers cached
Mem: 818316 584544 233772 0 9500 531080
-/+ buffers/cache: 43964 774352
Swap: 1023984 0 1023984
4.网络查询
查询udp端口:netstat -nul
[root@station ~]# netstat -nul
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 0.0.0.0:47843 0.0.0.0:*
udp 0 0 0.0.0.0:36196 0.0.0.0:*
udp 0 0 0.0.0.0:875 0.0.0.0:*
udp 0 0 0.0.0.0:111 0.0.0.0:*
查询tcp端口:netstat -ntl
[root@station ~]# netstat -ntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:54002 0.0.0.0:* LISTEN 监听中
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:44027 0.0.0.0:* LISTEN
5.sar命令
[root@station109 ~]# sar
Linux 2.6.32-131.0.15.el6.x86_64 (station109.kaixin.com) 2011年11月01日 _x86_64_ (1 CPU)
08时58分01秒 LINUX RESTART
09时00分01秒 CPU %user %nice %system %iowait %steal %idle
09时10分01秒 all 1.83 0.00 1.61 2.23 0.00 94.33
09时20分01秒 all 1.24 0.00 1.16 1.94 0.00 95.66
09时30分01秒 all 1.08 0.00 0.97 1.51 0.00 96.44
09时40分01秒 all 1.08 0.12 1.43 6.53 0.00 90.84
09时50分01秒 all 1.01 0.00 1.21 2.60 0.00 95.18
sar -n ALL 1 10
[root@station109 ~]# sar -n
用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
选项:
[ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -m ] [ -p ] [ -q ] [ -r ] [ -R ]
[ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I { <中断> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -n { <关键词> [,...] | ALL } ]
[ -o [ <文件名> ] | -f [ <文件名> ] ]
[ -i <时间间隔> ] [ -s [ <时:分:秒> ] ] [ -e [ <时:分:秒> ] ]
sar -u 1 10 <- cpu <- top
sar -r 1 10 <- memory, swap 使用动态信息
sar -b 1 10 <- 块设备 i/o <- (iostat -p /dev/sda 1 10)
6.编译:iptraf-3.0.1-13.el6.x86_64
7.vmstat
[root@station ~]# vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 233400 9572 531228 0 0 3 145 39 22 0 3 97 0 0
0 0 0 233392 9572 531252 0 0 0 0 17 11 0 0 100 0 0
0 0 0 233392 9572 531252 0 0 0 0 14 7 0 0 100 0 0
0 0 0 233392 9572 531252 0 0 0 0 18 9 0 0 100 0 0
r b:r和b的值不是0,就表示出现等待
r:ram 内存
b:block设备
vmstat, iostat, mpstat 用法差不多
/usr/bin/pidstat (rhel6) 提供
\=> 把最 process 显示
\-> pidstat -d 1 100
8.rhel5.5中没有pidstat的命令,升级systat
sysstat-9.0 编译
./configure --enable-smp-race --enable-yesterday --enable-install-isag --enable-clean-sa-dir --enable-install-cron
使用 pidstat -d -u -r -p 6202 1 100
9.sar 日志文件
chkconfig sysstat on
sar -u -f /var/log/sa/sa31 -s 10:00:00 -e 12:00:00
10.mpstat <- 进程状态 , cpu 信息
[root@station109 ~]# mpstat
Linux 2.6.32-131.0.15.el6.x86_64 (station109.kaixin.com) 2011年11月01日 _x86_64_ (1 CPU)
18时55分00秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
18时55分00秒 all 15.06 1.82 11.20 2.08 0.09 0.03 0.00 0.00 69.71
11.pmap, pgrep, ldd, strace , logger
[root@station109 ~]# lsof -i:3307
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 10953 mysql 14u IPv4 151457 0t0 TCP *:opsession-prxy (LISTEN)
[root@station109 ~]# pmap 10953 查看进程10953的分配
10953: /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/database --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld/mysql58-error.log --pid-file=/var/run/mysqld/mysql58.pid --socket=/var/run/mysqld/mysql58.socket --port=3307
0000000000400000 8592K r-x-- /usr/local/mysql/bin/mysqld
0000000000e63000 660K rw--- /usr/local/mysql/bin/mysqld
0000000000f08000 172K rw--- [ anon ]
00000000017c5000 10076K rw--- [ anon ]
0000003368200000 128K r-x-- /lib64/ld-2.12.so
000000336841f000 4K r---- /lib64/ld-2.12.so
e2fsck <- 磁盘故障修改 , 可能失败
\-> 文件 碎片 -> 分区 /lost+found/ mklost+found 新建丢失的目录
badblocks
12.服务管理
[root@station109 ~]# ntsysv
auditd - 使用 SElinux , 分析故障 <- 进程, 用户
\-> 登录信息 (本地, 远程, ftp, mail sshd)
avahi-daemon haldaemon <- x window 相关
crond ->时间任务
iscsi <- iscis 客户端 链接网络存储
mdmonitor <- (SOFT RAID) 磁盘健康监控 监控数据源 <- 启动后自动监控
\-> 创建按 raid 必须生成配置文件 /etc/mdadm.conf
smartd \-> 磁盘必须支持 smart ctl 功能
\--> smartctl -a /dev/sda --> WHEN_FAILED
\-> /etc/smartd.conf
\-> DEVICESCAN -H -m root@localhost
\-> /dev/sda -a -d sat -m root@localhost <- SATA
multipathd <- (存储)多路径工具
network <-网络服务
ntpd <- 时间同步服务器
\-> yum install -y ntp
\-> /etc/ntp.conf
<- 把默认 server redhat1, redhat2 注释
#server 0.rhel.pool.ntp.org
#server 1.rhel.pool.ntp.org
#server 2.rhel.pool.ntp.org
加上restrict 10.1.1.109 nomodify notrap
加上server stdtime.gov.hk
在同一个网段若是已经有一台时间同步服务器,还想做一台时间同步服务器的话,就要在
vi /etc/ntp/step-tickers
加上10.1.1.1(已有时间同步服务器的IP)
restrict 10.1.1.10 nomodify notrap
server stdtime.gov.hk <- 假如 连接 相同网时 <- server 10.1.1.1
\-> /etc/ntp/step-tickers
10.1.1.1
ntpdate <- ntp 客户端 <- 集群环境推荐 死循环同步时间(若是集群环境,用死循环来同步服务器)
\-> /etc/ntp/step-tickers
10.1.1.1
时间同步的脚本:
#!/bin/bash
while ((a=1))
do
ntpdate 10.1.1.1
sleep 2
done
psacct <- 记录用户命令服务 <- 记录命令不完成
rpcbind <-
rsyslog <- 系统日志
sendmail <-邮件服务
sshd <-远程登录服务
sysstat <-服务器性能数据收集
13.命令日志 snoopy
安装snoopy-1.8.0.tar.gz
./configure && make && make install && make enable
\-> 命令执行前装载 snoopy.so 库
\-> /etc/ld.so.preload
\-> /usr/local/lib/snoopy.so <- 把用户命令详细记录 /var/log/secure
日志截断 -> 数据保存
[root@station109 ~]# tail -f /var/log/secure
Nov 1 21:40:01 station109 snoopy[3707]: [uid:0 sid:3707 tty: cwd:/usr/lib64/sa filename:/usr/lib64/sa/sadc]: /usr/lib64/sa/sadc -F -L -S DISK 1 1 -
Nov 1 21:41:24 station109 snoopy[3710]: [uid:81 sid:1322 tty: cwd:/ filename:/lib64/dbus-1/dbus-daemon-launch-helper]: /lib64/dbus-1/dbus-daemon-launch-helper org.freedesktop.PackageKit
Nov 1 21:41:24 station109 snoopy[3710]: [uid:0 sid:1322 tty: cwd:/ filename:/usr/sbin/packagekitd]: /usr/sbin/packagekitd
Nov 1 21:57:46 station109 snoopy[3820]: [uid:0 sid:2293 tty:/dev/pts/0 cwd:/root filename:/usr/bin/vim]: vim /usr/local/lib/snoopy.so
Nov 1 21:58:20 station109 snoopy[3821]: [uid:0 sid:2293 tty:/dev/pts/0 cwd:/root filename:/bin/cat]: cat /var/log/secure
Nov 1 21:58:52 station109 snoopy[3822]: [uid:0 sid:2293 tty:/dev/pts/0 cwd:/root filename:/usr/bin/tail]: tail -f /var/log/secure
方案2 针对 bash-4.0 以上版本 需要重新编译 bash 实现
http://zcentric.com/2010/03/09/bash-command-logger-with-curl-support/comment-page-1/
上网查看
14.日志管理
/var/log
boot.log <-启动日志信息
cron <-时间任务日志
dmesg <-硬件日志
httpd/ <-apache服务日志
lastlog <- 命令 last 才能够阅读 (last, lastlog)
maillog <-邮件日志
messages <-系统日志
mysqld/ <-数据库日志
sa/ <-cpu内存日志
secure <-用户命令日志
xferlog <- ftp日志
Xorg.0.log <-硬件,图形工具日志
rhel5 --> syslog 日志服务
\-> /etc/syslog.conf
rhel6 --> rsyslog 日志服务
\--> /etc/rsyslog.conf
自定义日志
iptables -t filter -A INPUT -p tcp --dport80 -m state --state NEW -j LOG --log-level=info --log-prefix=' www_service '
vi /etc/rsyslog.conf
kern.* /proc/kenerl
15.远程日志记录
rhel5
client <-客户端
vi /etc/syslog.conf
kern.* @server_ip_addr 定义软程日志管理的地址
service
vi /etc/sysconfig/syslog
SYSLOGD_OPTIONS="-r -m 0" <- -r = remote
vi /etc/syslog.conf
kern.* /var/log/messages 定义日志文件
client -> server -> restart service 客户端和服务器端都需重启服务
rhel6
client
vi /etc/rsyslog.conf
kern.* @server_ip_addr:PORT
service
vi /etc/rsyslog.conf
$ModLoad imudp.so 加载两个模块
$UDPServerRun 514
kern.* /var/log/messages
client -> server -> restart service 客户端和服务器端都需重启服务
使用 iptables -j LOG 测试
本文出自 “Shang-shopping” 博客,谢绝转载!