系统优化sysstat工具的使用

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” 博客,谢绝转载!

你可能感兴趣的:(职场,休闲)