5.1~5.9 监控 Linux 系统状态

  • 监控 CPU 的命令

  • w 查看系统负载

[root@arslinux-01 ~]# w
20:13:49 up 1 min,  1 user,  load average: 1.26, 0.80, 0.31
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.194.1    20:13    5.00s  0.09s  0.01s w

1分钟内,5分钟内,15分钟内

负载值:平均时间内,有多少个活动的进程。数字越大越忙。

正在使用 CPU 或等待 CPU 都属于活动的进程,无论在排队还是正在使用都属于活动进程

  • uptime 查看系统负载

[root@arslinux-01 ~]# uptime
20:25:29 up 2 min,  1 user,  load average: 0.82, 0.67, 0.27
  • top 动态查看系统状态

可以让进程按从高到低顺序自动排列,默认按 CPU 使用率排列,同样可以显示系统负载

[root@arslinux-01 ~]# top
top - 20:28:40 up 5 min,  1 user,  load average: 0.05, 0.37, 0.23
Tasks: 142 total,   2 running, 140 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995896 total,   257656 free,   569336 used,   168904 buff/cache
KiB Swap:  1999868 total,  1999868 free,        0 used.   254360 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
25 root      20   0       0      0      0 S  0.3  0.0   0:00.76 kworker/0:1
2947 root      20   0       0      0      0 S  0.3  0.0   0:00.05 xfsaild/sda3
1 root      20   0  125448   3896   2568 S  0.0  0.4   0:02.93 systemd
2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd
3 root      20   0       0      0      0 S  0.0  0.0   0:00.29 ksoftirqd/0
4 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0
5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
9 root      20   0       0      0      0 R  0.0  0.0   0:01.32 rcu_sched
10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain
11 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 watchdog/0
13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
15 root      20   0       0      0      0 S  0.0  0.0   0:00.00 khungtaskd

CPU 使用率 = 100% - id值

RES 进程占用物理内存的大小

top 命令不仅要关注 Tasks 、%CPU 列,同样要关注下方 %CPU、%MEM、RES 列

-- 每 3 秒刷新一次

-- 按 M 键更改未按内存使用率大小排列

-- 按数字 1 可以查看所有 CPU 的使用率详情(多核)

[root@arslinux-01 ~]# top
top - 20:33:42 up 10 min,  1 user,  load average: 0.00, 0.14, 0.17
Tasks: 142 total,   1 running, 141 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.7 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995896 total,   255580 free,   571348 used,   168968 buff/cache
KiB Swap:  1999868 total,  1999868 free,        0 used.   252320 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
7479 mysql     20   0 1302780 454812   6204 S  0.3 45.7   0:05.31 mysqld
7148 root      20   0  573920  17084   6008 S  0.0  1.7   0:00.57 tuned
5983 polkitd   20   0  612228  14172   4680 S  0.0  1.4   0:00.10 polkitd
5974 root      20   0  474244   8900   6660 S  0.0  0.9   0:00.40 NetworkManager
6000 root      20   0  301040   6480   5108 S  0.0  0.7   0:01.36 vmtoolsd
5995 root      20   0   99668   6104   4496 S  0.0  0.6   0:00.05 VGAuthService
7687 root      20   0  158864   5548   4212 S  0.0  0.6   0:00.19 sshd
7273 root      20   0  229608   4976   1232 S  0.0  0.5   0:00.25 php-fpm
7319 php-fpm   20   0  229548   4752   1008 S  0.0  0.5   0:00.00 php-fpm
7320 php-fpm   20   0  229548   4752   1008 S  0.0  0.5   0:00.00 php-fpm
7282 php-fpm   20   0  229548   4748   1008 S  0.0  0.5   0:00.00 php-fpm
7283 php-fpm   20   0  229548   4748   1008 S  0.0  0.5   0:00.00 php-fpm
7284 php-fpm   20   0  229548   4748   1008 S  0.0  0.5   0:00.00 php-fpm
7286 php-fpm   20   0  229548   4748   1008 S  0.0  0.5   0:00.00 php-fpm
7289 php-fpm   20   0  229548   4748   1008 S  0.0  0.5   0:00.00 php-fpm
7291 php-fpm   20   0  229548   4748   1008 S  0.0  0.5   0:00.00 php-fpm

按 q 退出

  • top -bn1静态显示所有进程情况,也是按 CPU 百分比排序

[root@arslinux-01 ~]# top -bn1
top - 20:36:02 up 12 min,  1 user,  load average: 0.00, 0.09, 0.15
Tasks: 142 total,   1 running, 141 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.9 us,  5.9 sy,  0.0 ni, 88.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995896 total,   256044 free,   570848 used,   169004 buff/cache
KiB Swap:  1999868 total,  1999868 free,        0 used.   252804 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
7745 root      20   0  161880   2164   1552 R  6.2  0.2   0:00.02 top
1 root      20   0  125448   3896   2568 S  0.0  0.4   0:02.94 systemd
2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd
3 root      20   0       0      0      0 S  0.0  0.0   0:00.36 ksoftirqd/0
5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
9 root      20   0       0      0      0 S  0.0  0.0   0:01.45 rcu_sched
10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain
11 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 watchdog/0
13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
15 root      20   0       0      0      0 S  0.0  0.0   0:00.00 khungtaskd

(内容过多不全显示)

-- 静态显示进程信息方便与在脚本里使用


  • cat /proc/cpuinfo 查看机器有几个CPU

[root@arslinux-01 ~]# cat /proc/cpuinfo
processor: 0
vendor_id: GenuineIntel
cpu family: 6
model: 78
model name: Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
stepping: 3
microcode: 0xc6
cpu MHz: 2399.999
cache size: 3072 KB
physical id: 0
siblings: 1
core id: 0
cpu cores: 1
apicid: 0
initial apicid: 0
fpu: yes
fpu_exception: yes
cpuid level: 22
wp: yes
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch epb ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp spec_ctrl intel_stibp
bogomips: 4799.99
clflush size: 64
cache_alignment: 64
address sizes: 42 bits physical, 48 bits virtual
power management:
  • lscpu查看CPU的信息

[root@arslinux-01 ~]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
座:                 1
NUMA 节点:         1
厂商 ID:           GenuineIntel
CPU 系列:          6
型号:              78
型号名称:        Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
步进:              3
CPU MHz:             2399.999
CPU max MHz:           0.0000
CPU min MHz:           0.0000
BogoMIPS:            4799.99
超管理器厂商:  VMware
虚拟化类型:     完全
L1d 缓存:          32K
L1i 缓存:          32K
L2 缓存:           256K
L3 缓存:           3072K
NUMA 节点0 CPU:    0
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch epb ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp spec_ctrl intel_stibp


  • 监控内存的命令

  • free 查看内存和 swap 使用情况(默认以 kb 为单位)

[root@arslinux-01 ~]# free
total        used        free      shared  buff/cache   available
Mem:         995896      570492      256152        7864      169252      253164
Swap:       1999868           0     1999868
  • free -m 按 M 为单位查看系统内存相关信息

[root@arslinux-01 ~]# free -m
total        used        free      shared  buff/cache   available
Mem:            972         557         250           7         165         247
Swap:          1952           0        1952
  • free -h 自动以单位显示内存信息

[root@arslinux-01 ~]# free -h
total        used        free      shared  buff/cache   available
Mem:           972M        557M        250M        7.7M        165M        247M
Swap:          1.9G          0B        1.9G
  • free -b 以 B 为单位显示内存信息

[root@arslinux-01 ~]# free -b
total        used        free      shared  buff/cache   available
Mem:     1019797504   584146944   262340608     8052736   173309952   259309568
Swap:    2047864832           0  2047864832

只需关注 available,available = free + buff/cache未使用的部分

内存不够用时,swap 会将内存里的内容交换到磁盘分区里

buffer:从 CPU 产生,即将写入到磁盘里去的那部分数据

cached:先从磁盘里读出来,然后临时存到内存里的那部分数据

  • 手动增加 swap

磁盘上模拟出 1G 空间

dd if=/dev/zero of=/bigfile bs=100M count=10

of 目标文件,bs 单个块大小,count 块数量

[root@arslinux-01 ~]# dd if=/dev/zero of=/bigfile bs=100M count=10
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB)已复制,7.92899 秒,132 MB/秒
[root@arslinux-01 ~]# du -sh /bigfile
1000M/bigfile
[root@arslinux-01 ~]# mkswap /bigfile
正在设置交换空间版本 1,大小 = 1023996 KiB
无标签,UUID=0f334ed6-5c2b-49e6-a226-8afd4989123b
[root@arslinux-01 ~]# chmod 600 /bigfile
[root@arslinux-01 ~]# swapon /bigfile
[root@arslinux-01 ~]# free
total        used        free      shared  buff/cache   available
Mem:         995896      571836      167716        7896      256344      249096
Swap:       3023864           0     3023864


  • 监控磁盘的命令

  • iostat 监控磁盘(需要安装 sysstat )

[root@arslinux-01 ~]# iostat
Linux 3.10.0-957.el7.x86_64 (arslinux-01) 2019年06月10日 _x86_64_(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
0.39    0.00    1.23    0.02    0.00   98.36

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.79        43.21       294.17     151445    1031077
sdb               0.07         2.63         0.00       9212          0
scd0              0.01         0.29         0.00       1028          0
dm-0              0.02         0.59         0.00       2072          0
  • iostat 1 每隔1秒查询一次

[root@arslinux-01 ~]# iostat 1
Linux 3.10.0-957.el7.x86_64 (arslinux-01) 2019年06月10日 _x86_64_(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
0.38    0.00    1.21    0.02    0.00   98.39

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.75        42.07       286.38     151481    1031133
sdb               0.07         2.56         0.00       9212          0
scd0              0.00         0.29         0.00       1028          0
dm-0              0.02         0.58         0.00       2072          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
0.00    0.00    0.00    0.00    0.00  100.00

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
sdb               0.00         0.00         0.00          0          0
scd0              0.00         0.00         0.00          0          0
dm-0              0.00         0.00         0.00          0          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
1.00    0.00    1.00    0.00    0.00   98.00

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
sdb               0.00         0.00         0.00          0          0
scd0              0.00         0.00         0.00          0          0
dm-0              0.00         0.00         0.00          0
  • iostat -d 只查看 device 相关信息

[root@arslinux-01 ~]# iostat -d 1
Linux 3.10.0-957.el7.x86_64 (arslinux-01) 2019年06月10日 _x86_64_(1 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.69        40.65       276.72     151481    1031220
sdb               0.07         2.47         0.00       9212          0
scd0              0.00         0.28         0.00       1028          0
dm-0              0.02         0.56         0.00       2072          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
sdb               0.00         0.00         0.00          0          0
scd0              0.00         0.00         0.00          0          0
dm-0              0.00         0.00         0.00          0          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
sdb               0.00         0.00         0.00          0          0
scd0              0.00         0.00         0.00          0          0
dm-0              0.00         0.00         0.00          0          0
  • iostat -dx 1 加上 x 查看到的信息更全

[root@arslinux-01 ~]# iostat -dx 1
Linux 3.10.0-957.el7.x86_64 (arslinux-01) 2019年06月10日 _x86_64_(1 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.01    0.96    0.70    39.75   270.58   375.46     0.02   11.54    0.82   26.21   1.13   0.19
sdb               0.00     0.00    0.07    0.00     2.42     0.00    70.59     0.00    0.51    0.51    0.00   0.37   0.00
scd0              0.00     0.00    0.00    0.00     0.27     0.00   114.22     0.00    1.56    1.56    0.00   1.22   0.00
dm-0              0.00     0.00    0.02    0.00     0.54     0.00    48.19     0.00    0.50    0.50    0.00   0.35
   0.00
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00
   0.00
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

关注 %util,磁盘的使用率

  • iostat -d 1 2 显示 2 次

[root@arslinux-01 ~]# iostat -d  1 2
Linux 3.10.0-957.el7.x86_64 (arslinux-01) 2019年06月10日 _x86_64_(1 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.58        38.07       259.16     151481    1031222
sdb               0.07         2.32         0.00       9212          0
scd0              0.00         0.26         0.00       1028          0
dm-0              0.02         0.52         0.00       2072          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
sdb               0.00         0.00         0.00          0          0
scd0              0.00         0.00         0.00          0          0
dm-0              0.00         0.00         0.00          0          0
  • iotop 查看进程使用磁盘的信息,动态显示,按IO使用率大小排序(安装 iotop)

  • vmstat 综合显示 CPU、内存、磁盘的信息(用法和 iostat 类似)

[root@arslinux-01 ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
2  0      0 146048    116 273320    0    0    40   237   63  148  1  1 98  0  0
0  0      0 146048    116 273320    0    0     0     0   35   79  0  1 99  0  0
0  0      0 146048    116 273320    0    0     0     0   50   90  0  0 100  0  0
1  0      0 146048    116 273320    0    0     0     0   33   73  0  0 100  0  0
0  0      0 146048    116 273320    0    0     0     0   43   78  0  1 98  1  0
^C
[root@arslinux-01 ~]# vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
2  0      0 146196    116 273320    0    0    40   236   63  148  1  1 98  0  0
0  0      0 146164    116 273320    0    0     0     0   38   84  0  0 100  0  0
0  0      0 146164    116 273320    0    0     0     0   50   91  0  1 99  0  0

CPU ——> id

memory——>swpd 非零 或 si so 非零(si = swap in从swap进到内存,so = swap out)

bi 磁盘读,bo 磁盘写

r = run,b =block

wa =wait 等待 CPU 的百分比

关注:r、b、si、so、bi、bo、id、wa


  • 监控网卡的命令

  • sar 监控网卡流量(同样由 sysstat 包安装)

[root@arslinux-01 ~]# sar -n DEV 1 3
Linux 3.10.0-957.el7.x86_64 (arslinux-01) 2019年06月10日 _x86_64_(1 CPU)

22时31分30秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
22时31分31秒     ens37      0.00      0.00      0.00      0.00      0.00      0.00      0.00
22时31分31秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
22时31分31秒     ens33      1.01      0.00      0.06      0.00      0.00      0.00      0.00
22时31分31秒     ens38      0.00      0.00      0.00      0.00      0.00      0.00      0.00

22时31分31秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
22时31分32秒     ens37      0.00      0.00      0.00      0.00      0.00      0.00      0.00
22时31分32秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
22时31分32秒     ens33      1.01      1.01      0.06      0.57      0.00      0.00      0.00
22时31分32秒     ens38      0.00      0.00      0.00      0.00      0.00      0.00      0.00

22时31分32秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
22时31分33秒     ens37      0.00      0.00      0.00      0.00      0.00      0.00      0.00
22时31分33秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
22时31分33秒     ens33      1.00      1.00      0.06      0.56      0.00      0.00      0.00
22时31分33秒     ens38      0.00      0.00      0.00      0.00      0.00      0.00      0.00

平均时间:     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
平均时间:     ens37      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:     ens33      1.01      0.67      0.06      0.38      0.00      0.00      0.00
平均时间:     ens38      0.00      0.00      0.00      0.00      0.00      0.00      0.00

小常识:

bit 比特(带宽单位)

Byte 字节(速度传输单位)

8bit = 1Byte

/var/log/sa/saxx xx为日期

  • sar -f /var/log/sa/saxx 查看历史 sar 记录

[root@arslinux-01 ~]# sar -f /var/log/sa/sa14
Linux 3.10.0-957.el7.x86_64 (arslinux-01) 2019年05月14日 _x86_64_(1 CPU)

20时44分23秒       LINUX RESTART

20时50分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
21时00分01秒     all      5.29      0.00      2.01      0.02      0.00     92.68
21时10分01秒     all      0.08      0.00      0.23      0.01      0.00     99.68
21时20分01秒     all      0.11      0.00      0.28      0.00      0.00     99.60
21时30分01秒     all      0.08      0.00      0.22      0.00      0.00     99.70
21时40分01秒     all      0.04      0.00      0.15      0.00      0.00     99.80
21时50分01秒     all      0.05      0.11      0.56      0.02      0.00     99.26
22时00分01秒     all      0.06      0.00      0.19      0.00      0.00     99.74
22时10分01秒     all      0.09      0.00      0.23      0.01      0.00     99.68
平均时间:     all      0.72      0.01      0.48      0.01      0.00     98.77

-- sar -n DEV -f /var/log/sa/sa14 只看具体日期的网卡流量

  • sar 查看 CPU

[root@arslinux-01 ~]# sar
Linux 3.10.0-957.el7.x86_64 (arslinux-01) 2019年06月10日 _x86_64_(1 CPU)

20时12分31秒       LINUX RESTART

20时23分48秒       LINUX RESTART

20时30分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
20时40分01秒     all      0.15      0.00      0.45      0.00      0.00     99.40
20时50分01秒     all      0.08      0.00      0.28      0.00      0.00     99.63
21时00分01秒     all      0.07      0.00      0.26      0.00      0.00     99.67
21时10分01秒     all      0.07      0.00      1.13      0.05      0.00     98.75
21时20分01秒     all      0.02      0.00      0.17      0.00      0.00     99.81
21时30分01秒     all      0.08      0.00      0.27      0.01      0.00     99.65
21时40分01秒     all      1.35      0.02      0.76      0.01      0.00     97.85
21时50分01秒     all      0.08      0.00      0.26      0.00      0.00     99.66
22时00分01秒     all      0.02      0.00      0.17      0.00      0.00     99.81
22时10分01秒     all      0.02      0.00      0.17      0.00      0.00     99.81
22时20分01秒     all      0.01      0.00      0.17      0.00      0.00     99.82
22时30分01秒     all      0.04      0.00      0.20      0.00      0.00     99.76
22时40分01秒     all      0.11      0.00      0.35      0.01      0.00     99.53
平均时间:     all      0.16      0.00      0.36      0.01      0.00     99.47
  • sar -b 查看磁盘io

[root@arslinux-01 ~]# sar -b
Linux 3.10.0-957.el7.x86_64 (arslinux-01) 2019年06月10日 _x86_64_(1 CPU)

20时12分31秒       LINUX RESTART

20时23分48秒       LINUX RESTART

20时30分01秒       tps      rtps      wtps   bread/s   bwrtn/s
20时40分01秒      0.05      0.00      0.05      0.07      0.56
20时50分01秒      0.06      0.01      0.05      0.89      0.53
21时00分01秒      0.05      0.00      0.05      0.00      0.49
21时10分01秒      3.81      0.31      3.50     29.38   3451.05
21时20分01秒      0.05      0.00      0.05      0.12      0.46
21时30分01秒      0.07      0.01      0.06      0.40      0.81
21时40分01秒      1.57      1.04      0.54     47.96     16.79
21时50分01秒      0.05      0.00      0.05      0.00      0.51
22时00分01秒      0.06      0.00      0.06      0.01      0.74
22时10分01秒      0.16      0.11      0.06     21.74      0.63
22时20分01秒      0.03      0.00      0.03      0.00      0.33
22时30分01秒      0.09      0.01      0.08      0.55      1.00
22时40分01秒      0.13      0.04      0.09      3.18     24.33
平均时间:      0.47      0.12      0.36      8.01    267.86
  • sar -q 查看系统负载

[root@arslinux-01 ~]# sar -q
Linux 3.10.0-957.el7.x86_64 (arslinux-01) 2019年06月10日 _x86_64_(1 CPU)

20时12分31秒       LINUX RESTART

20时23分48秒       LINUX RESTART

20时30分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
20时40分01秒         0       185      0.00      0.04      0.12         0
20时50分01秒         1       184      0.07      0.03      0.07         0
21时00分01秒         1       184      0.00      0.01      0.05         0
21时10分01秒         1       185      0.00      0.02      0.05         0
21时20分01秒         2       185      0.00      0.01      0.05         0
21时30分01秒         1       185      0.00      0.01      0.05         0
21时40分01秒         0       186      0.00      0.02      0.05         0
21时50分01秒         1       185      0.00      0.01      0.05         0
22时00分01秒         1       184      0.00      0.03      0.05         0
22时10分01秒         1       184      0.00      0.01      0.05         0
22时20分01秒         1       184      0.01      0.02      0.05         0
22时30分01秒         1       184      0.00      0.01      0.05         0
22时40分01秒         1       184      0.00      0.01      0.05         0
平均时间:         1       185      0.01      0.02      0.06         0
  • nload 查看网卡流量(安装 nload 包,先要安装 epel-release 包)

按左右方向键切换不同的网卡

  • ethtool 网卡名 查看网卡信息

[root@arslinux-01 ~]# ethtool ens33
Settings for ens33:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                    100baseT/Half 100baseT/Full
                    1000baseT/Full
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Supported FEC modes: Not reported
    Advertised link modes:  10baseT/Half 10baseT/Full
                    100baseT/Half 100baseT/Full
                    1000baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off (auto)
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000007 (7)
                    drv probe link
    Link detected: yes
  • mii-tool 网卡名 查看网卡是否连接

[root@arslinux-01 ~]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok


  • 查看进程相关的命令

  • ps aux 查看系统所有用户前台后台用户级别的所有进程

  • ps elf 同上类似

  • ll /proc/进程id 查看未知进程的情况(是由哪个命令起来的)

  • ps eLf 查看进程的线程

[root@arslinux-01 ~]# ps -eLf | grep mysql
root       7203      1   7203  0    1 20:23 ?        00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/datamysql --pid-file=/data/mysql/arslinux-01.pid
mysql      7479   7203   7479  0   21 20:23 ?        00:00:04 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7691  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7692  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7693  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7694  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7695  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7696  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7697  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7698  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7699  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7700  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7702  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7703  0   21 20:24 ?        00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7704  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7705  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7706  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7707  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7708  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7709  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7710  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
mysql      7479   7203   7711  0   21 20:24 ?        00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=arslinux-01.err --pid-file=/datamysql/arslinux-01.pid --socket=/tmp/mysql.sock
root       7987   7714   7987  0    1 23:03 pts/0    00:00:00 grep --color=auto mysql

状态:

S 处于休眠状态

R 正在运行中

s 父进程(有子进程)

l 多线程

< 优先级高

N 优先级低

+ 前台的进程(不带+就是后台进程)

Z 僵尸进程

关注点:

%CPU、%MEM、RSS(进程占用的固定内存量)、STAT

扩展连接:https://www.cnblogs.com/huangmr0811/p/5570999.html


  • 查看网络连接状况的命令

  • netstat 查看网络连接状况

[root@arslinux-01 ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:38825           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      7174/nginx: master
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      7177/rpc.mountd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      7150/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      7557/master
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      7174/nginx: master
tcp        0      0 0.0.0.0:44352           0.0.0.0:*               LISTEN      7159/rpc.statd
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -
tcp6       0      0 :::3306                 :::*                    LISTEN      7479/mysqld
tcp6       0      0 :::38639                :::*                    LISTEN      -
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd
tcp6       0      0 :::20048                :::*                    LISTEN      7177/rpc.mountd
tcp6       0      0 :::22                   :::*                    LISTEN      7150/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      7557/master
tcp6       0      0 :::2049                 :::*                    LISTEN      -
tcp6       0      0 :::48737                :::*                    LISTEN      7159/rpc.statd
udp        0      0 127.0.0.1:975           0.0.0.0:*                           7159/rpc.statd
udp        0      0 0.0.0.0:2049            0.0.0.0:*                           -
udp        0      0 0.0.0.0:60468           0.0.0.0:*                           7159/rpc.statd
udp        0      0 0.0.0.0:20048           0.0.0.0:*                           7177/rpc.mountd
udp        0      0 0.0.0.0:111             0.0.0.0:*                           1/systemd
udp        0      0 127.0.0.1:323           0.0.0.0:*                           6039/chronyd
udp        0      0 0.0.0.0:58247           0.0.0.0:*                           -
udp        0      0 0.0.0.0:930             0.0.0.0:*                           5894/rpcbind
udp6       0      0 :::2049                 :::*                                -
udp6       0      0 :::20048                :::*                                7177/rpc.mountd
udp6       0      0 :::111                  :::*                                1/systemd
udp6       0      0 :::48248                :::*                                7159/rpc.statd
udp6       0      0 :::36657                :::*                                -
udp6       0      0 ::1:323                 :::*                                6039/chronyd
udp6       0      0 :::930                  :::*                                5894/rpcbind
raw6       0      0 :::58                   :::*                    7           5974/NetworkManager
raw6       0      0 :::58                   :::*                    7           5974/NetworkManager
raw6       0      0 :::58                   :::*                    7           5974/NetworkManager
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     41459    7557/master          public/pickup
unix  2      [ ACC ]     STREAM     LISTENING     40742    7243/gssproxy        /run/gssproxy.sock
unix  2      [ ACC ]     STREAM     LISTENING     41463    7557/master          public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     41466    7557/master          public/qmgr
unix  2      [ ACC ]     STREAM     LISTENING     41488    7557/master          public/flush
unix  2      [ ACC ]     STREAM     LISTENING     41503    7557/master          public/showq
unix  2      [ ACC ]     STREAM     LISTENING     41470    7557/master          private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     21315    1/systemd            /run/lvm/lvmetad.socket
unix  2      [ ACC ]     STREAM     LISTENING     41797    7479/mysqld          /tmp/mysql.sock
unix  2      [ ACC ]     STREAM     LISTENING     41473    7557/master          private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     41476    7557/master          private/bounce
unix  2      [ ACC ]     STREAM     LISTENING     41479    7557/master          private/defer
unix  2      [ ACC ]     STREAM     LISTENING     41482    7557/master          private/trace
unix  2      [ ACC ]     STREAM     LISTENING     40741    7243/gssproxy        /var/lib/gssproxy/default.sock
unix  2      [ ACC ]     STREAM     LISTENING     32898    1/systemd            /run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     32901    1/systemd            /var/run/rpcbind.sock
unix  2      [ ACC ]     STREAM     LISTENING     21410    1/systemd            /run/lvm/lvmpolld.socket
unix  2      [ ACC ]     STREAM     LISTENING     41485    7557/master          private/verify
unix  2      [ ACC ]     STREAM     LISTENING     41491    7557/master          private/proxymap
unix  2      [ ACC ]     STREAM     LISTENING     41494    7557/master          private/proxywrite
unix  2      [ ACC ]     STREAM     LISTENING     41497    7557/master          private/smtp
unix  2      [ ACC ]     STREAM     LISTENING     41500    7557/master          private/relay
unix  2      [ ACC ]     STREAM     LISTENING     41506    7557/master          private/error
unix  2      [ ACC ]     STREAM     LISTENING     41509    7557/master          private/retry
unix  2      [ ACC ]     STREAM     LISTENING     41512    7557/master          private/discard
unix  2      [ ACC ]     STREAM     LISTENING     41515    7557/master          private/local
unix  2      [ ACC ]     STREAM     LISTENING     40908    7273/php-fpm: maste  /tmp/arslinux.sock
unix  2      [ ACC ]     STREAM     LISTENING     41518    7557/master          private/virtual
unix  2      [ ACC ]     STREAM     LISTENING     41521    7557/master          private/lmtp
unix  2      [ ACC ]     STREAM     LISTENING     41524    7557/master          private/anvil
unix  2      [ ACC ]     STREAM     LISTENING     40911    7273/php-fpm: maste  /tmp/php-fcgi.sock
unix  2      [ ACC ]     STREAM     LISTENING     41527    7557/master          private/scache
unix  2      [ ACC ]     SEQPACKET  LISTENING     21461    1/systemd            /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     35295    5995/VGAuthService   /var/run/vmware/guestServicePipe
unix  2      [ ACC ]     STREAM     LISTENING     8946     1/systemd            /run/systemd/journal/stdout
unix  2      [ ACC ]     STREAM     LISTENING     21239    1/systemd            /run/systemd/private
  • netstat -lntp 只查看 tcp 监听的连接状态

[root@arslinux-01 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:38825           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      7174/nginx: master
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      7177/rpc.mountd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      7150/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      7557/master
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      7174/nginx: master
tcp        0      0 0.0.0.0:44352           0.0.0.0:*               LISTEN      7159/rpc.statd
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -
tcp6       0      0 :::3306                 :::*                    LISTEN      7479/mysqld
tcp6       0      0 :::38639                :::*                    LISTEN      -
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd
tcp6       0      0 :::20048                :::*                    LISTEN      7177/rpc.mountd
tcp6       0      0 :::22                   :::*                    LISTEN      7150/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      7557/master
tcp6       0      0 :::2049                 :::*                    LISTEN      -
tcp6       0      0 :::48737                :::*                    LISTEN      7159/rpc.statd
  • netstat -lnup 只查看 udp 监听的连接状态

  • netstat -lntup 查看 tcp 和 udp 监听的连接状态

  • netstat -an 查看所有的网络连接,包括监听的,包括已连接的

  • ss -an 类似于 netstat -an,显示更快,如果 netstat -an 比较慢,可以尝试 ss -an

ESTABLISHED 建立连接

TIME_WAIT 要断还没断开就是

扩展连接:https://blog.csdn.net/m0_37556444/article/details/83000553


  • 网卡流量异常,通过抓包来分析

  • tcpdump 抓包工具(安装 tcpdump)

-nn    数字的形式显示 ip 和 port

-i        指定端口

port    指定端口号

-c        指定抓多少包

-w        指定写入到哪个文件里去

not port 不要某个端口,多个端口可以 not port and not port

not host 不要某个 ip 的

[root@arslinux-01 ~]# tcpdump -nn -i ens33 port 80
  • tcpdump -r 读取 .cap 文件

  • 可以用windows上 wireshark 分析 .cap 文件

  • tshark 抓包工具(需要安装 wireshark 包)和 tcpdump 用法类似

[root@arslinux-01 ~]# tshark -nn -i ens33
Running as user "root" and group "root". This could be dangerous.
Capturing on 'ens33'
1 0.000000000 192.168.194.1 -> 239.255.255.250 SSDP 216 M-SEARCH * HTTP/1.1
2 0.506531192 192.168.194.130 -> 192.168.194.1 SSH 170 Encrypted response packet len=116
3 0.555192741 192.168.194.1 -> 192.168.194.130 TCP 60 4518 > 22 [ACK] Seq=1 Ack=117 Win=2048 Len=0
4 1.000574486 192.168.194.1 -> 239.255.255.250 SSDP 216 M-SEARCH * HTTP/1.1
5 1.253766432 192.168.194.130 -> 192.168.194.1 SSH 362 Encrypted response packet len=308
6 1.295522376 192.168.194.1 -> 192.168.194.130 TCP 60 4518 > 22 [ACK] Seq=1 Ack=425 Win=2047 Len=0
7 1.797154561 192.168.194.130 -> 192.168.194.1 SSH 282 Encrypted response packet len=228
8 1.838083781 192.168.194.1 -> 192.168.194.130 TCP 60 4518 > 22 [ACK] Seq=1 Ack=653 Win=2053 Len=0
9 2.003689876 192.168.194.1 -> 239.255.255.250 SSDP 216 M-SEARCH * HTTP/1.1
10 2.506430635 192.168.194.130 -> 192.168.194.1 SSH 362 Encrypted response packet len=308
11 2.547345210 192.168.194.1 -> 192.168.194.130 TCP 60 4518 > 22 [ACK] Seq=1 Ack=961 Win=2051 Len=0
12 3.005064119 192.168.194.1 -> 239.255.255.250 SSDP 216 M-SEARCH * HTTP/1.1
1 packet dropped
12 packets captured

tshark -i 端口号 -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"

结果和访问日志一样


5.10 监控介绍

为什么要做监控?

可以提前发现故障隐患,第一时间解决掉,把影响降低。

常见的监控软件:

cacti(专业网络设备监控软件)、nagios、zabbix、open-falcon、prometheus、grafana

zabbix 操作方便,在浏览器操作;可以自定定义监控脚本;可以方便查看趋势图形图像;可以查看历史区间内的各项指标


5.11~5.12 安装zabbix4.0

zabbix 官网:www.zabbix.com

  • 前期准备

1、安装 zabbix 的 yum 源

[root@arslinux-01 ~]# rpm -ivh 
https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

2、查看可用的 yum 源

[root@arslinux-01 ~]# yum list|grep zabbix
zabbix-release.noarch                   4.0-1.el7                      ×××talled
iksemel.x86_64                          1.4-2.el7.centos               zabbix-non-supported
iksemel-devel.x86_64                    1.4-2.el7.centos               zabbix-non-supported
iksemel-utils.x86_64                    1.4-2.el7.centos               zabbix-non-supported
pcp-export-pcp2zabbix.x86_64            4.1.0-5.el7_6                  updates
pcp-export-zabbix-agent.x86_64          4.1.0-5.el7_6                  updates
python-pyzabbix.noarch                  0.7.3-2.el7                    epel
python2-zabbix-api-erigones.noarch      1.2.4-3.el7                    epel
python36-zabbix-api-erigones.noarch     1.2.4-3.el7                    epel
uwsgi-stats-pusher-zabbix.x86_64        2.0.17.1-2.el7                 epel
zabbix-agent.x86_64                     4.0.9-3.el7                    zabbix
zabbix-get.x86_64                       4.0.9-3.el7                    zabbix
zabbix-java-gateway.x86_64              4.0.9-3.el7                    zabbix
zabbix-proxy-mysql.x86_64               4.0.9-3.el7                    zabbix
zabbix-proxy-pgsql.x86_64               4.0.9-3.el7                    zabbix
zabbix-proxy-sqlite3.x86_64             4.0.9-3.el7                    zabbix
zabbix-sender.x86_64                    4.0.9-3.el7                    zabbix
zabbix-server-mysql.x86_64              4.0.9-3.el7                    zabbix
zabbix-server-pgsql.x86_64              4.0.9-3.el7                    zabbix
zabbix-web.noarch                       4.0.9-3.el7                    zabbix
zabbix-web-japanese.noarch              4.0.9-3.el7                    zabbix
zabbix-web-mysql.noarch                 4.0.9-3.el7                    zabbix
zabbix-web-pgsql.noarch                 4.0.9-3.el7                    zabbix
zabbix22.x86_64                         2.2.23-1.el7                   epel
zabbix22-agent.x86_64                   2.2.23-1.el7                   epel
zabbix22-dbfiles-mysql.noarch           2.2.23-1.el7                   epel
zabbix22-dbfiles-pgsql.noarch           2.2.23-1.el7                   epel
zabbix22-dbfiles-sqlite3.noarch         2.2.23-1.el7                   epel
zabbix22-proxy.noarch                   2.2.23-1.el7                   epel
zabbix22-proxy-mysql.x86_64             2.2.23-1.el7                   epel
zabbix22-proxy-pgsql.x86_64             2.2.23-1.el7                   epel
zabbix22-proxy-sqlite3.x86_64           2.2.23-1.el7                   epel
zabbix22-server.noarch                  2.2.23-1.el7                   epel
zabbix22-server-mysql.x86_64            2.2.23-1.el7                   epel
zabbix22-server-pgsql.x86_64            2.2.23-1.el7                   epel
zabbix22-web.noarch                     2.2.23-1.el7                   epel
zabbix22-web-mysql.noarch               2.2.23-1.el7                   epel
zabbix22-web-pgsql.noarch               2.2.23-1.el7                   epel
zabbix30.x86_64                         3.0.22-2.el7                   epel
zabbix30-agent.x86_64                   3.0.22-2.el7                   epel
zabbix30-dbfiles-mysql.noarch           3.0.22-2.el7                   epel
zabbix30-dbfiles-pgsql.noarch           3.0.22-2.el7                   epel
zabbix30-dbfiles-sqlite3.noarch         3.0.22-2.el7                   epel
zabbix30-proxy.noarch                   3.0.22-2.el7                   epel
zabbix30-proxy-mysql.x86_64             3.0.22-2.el7                   epel
zabbix30-proxy-pgsql.x86_64             3.0.22-2.el7                   epel
zabbix30-proxy-sqlite3.x86_64           3.0.22-2.el7                   epel
zabbix30-server.noarch                  3.0.22-2.el7                   epel
zabbix30-server-mysql.x86_64            3.0.22-2.el7                   epel
zabbix30-server-pgsql.x86_64            3.0.22-2.el7                   epel
zabbix30-web.noarch                     3.0.22-2.el7                   epel
zabbix30-web-mysql.noarch               3.0.22-2.el7                   epel
zabbix30-web-pgsql.noarch               3.0.22-2.el7                   epel
zabbix40.x86_64                         4.0.6-1.el7                    epel
zabbix40-agent.x86_64                   4.0.6-1.el7                    epel
zabbix40-dbfiles-mysql.noarch           4.0.6-1.el7                    epel
zabbix40-dbfiles-pgsql.noarch           4.0.6-1.el7                    epel
zabbix40-dbfiles-sqlite3.noarch         4.0.6-1.el7                    epel
zabbix40-proxy.noarch                   4.0.6-1.el7                    epel
zabbix40-proxy-mysql.x86_64             4.0.6-1.el7                    epel
zabbix40-proxy-pgsql.x86_64             4.0.6-1.el7                    epel
zabbix40-proxy-sqlite3.x86_64           4.0.6-1.el7                    epel
zabbix40-server.noarch                  4.0.6-1.el7                    epel
zabbix40-server-mysql.x86_64            4.0.6-1.el7                    epel
zabbix40-server-pgsql.x86_64            4.0.6-1.el7                    epel
zabbix40-web.noarch                     4.0.6-1.el7                    epel
zabbix40-web-mysql.noarch               4.0.6-1.el7                    epel
zabbix40-web-pgsql.noarch               4.0.6-1.el7                    epel

3、需要安装的包如下:

zabbix-agent、zabbix-get、zabbix-server-mysql、zabbix-web、zabbix-web-mysql

4、安装需要装的所有包

[root@arslinux-01 ~]# yum ×××tall zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

5、查看端口

[root@arslinux-01 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:40647           0.0.0.0:*               LISTEN      7181/rpc.statd
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      7201/nginx: master
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      7199/rpc.mountd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      7173/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      7584/master
tcp        0      0 0.0.0.0:45177           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      7201/nginx: master
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -
tcp6       0      0 :::3306                 :::*                    LISTEN      7516/mysqld
tcp6       0      0 :::46092                :::*                    LISTEN      7181/rpc.statd
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd
tcp6       0      0 :::20048                :::*                    LISTEN      7199/rpc.mountd
tcp6       0      0 :::22                   :::*                    LISTEN      7173/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      7584/master
tcp6       0      0 :::2049                 :::*                    LISTEN      -
tcp6       0      0 :::38661                :::*                    LISTEN

6、创建数据库 zabbix 并配置

[root@arslinux-01 ~]# mysql -uroot -parslinux
Warning: Using a password on the command line interface can be ×××ecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.43-log MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database zabbix;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

7、编辑 zabbix server 配置文件

[root@arslinux-01 ~]# vim /etc/zabbix/zabbix_server.conf

DBHost=127.0.0.1

DBName=zabbix

DBPassword=123456

8、启动 zabbix-server

[root@arslinux-01 ~]# systemctl start zabbix-server
[root@arslinux-01 ~]# ps aux|grep zabbix
root       8078  0.0  0.0 112724   984 pts/0    R+   12:49   0:00 grep --color=auto zabbix

9、程序未启动,查看日志文件 /var/log/zabbix/zabbix_server.log

[root@arslinux-01 ~]# cat /var/log/zabbix/zabbix_server.log
8156:20190611:125125.104 [Z3005] query failed: [1146] Table 'zabbix.users' doesn't exist [select userid from users limit 1]

库里没有表,所以无法启动

10、安装的 RPM 包中带有 sql 文件(create.sql),将其导入数据库

[root@arslinux-01 ~]# ls /usr/share/doc/zabbix-server-mysql-4.0.9/
AUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README
[root@arslinux-01 ~]# gzip -d !$
gzip -d /usr/share/doc/zabbix-server-mysql-4.0.9/create.sql.gz
[root@arslinux-01 ~]# ls /usr/share/doc/zabbix-server-mysql-4.0.9/
AUTHORS  ChangeLog  COPYING  create.sql  NEWS  README
[root@arslinux-01 ~]# mysql -uroot -parslinux zabbix < /usr/share/doc/zabbix-server-mysql-4.0.9/create.sql
Warning: Using a password on the command line interface can be ×××ecure.

11、启动 zabbix-server

[root@arslinux-01 ~]# systemctl start zabbix-server
[root@arslinux-01 ~]# ps aux|grep zabbix

12、zabbix-server 监听 10051 端口

[root@arslinux-01 ~]# netstat -lntp|grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      7820/zabbix_server
tcp6       0      0 :::10051                :::*                    LISTEN      7820/zabbix_server

13、编辑 zabbix-agent 的配置文件

[root@arslinux-01 ~]# vim /etc/zabbix/zabbix_agentd.conf

Server=127.0.0.1                  //server 去取

ServerActive=127.0.0.1          //机器量多的话,线程就太多,那么客户端上报更好

14、启动 zabbix-agent

[root@arslinux-01 ~]# systemctl start zabbix-agent
[root@arslinux-01 ~]# ps aux|grep zabbix_agent

15、安装 web ui,需要启动 httpd 服务,首先关闭 nginx 服务

[root@arslinux-01 ~]# systemctl stop nginx
[root@arslinux-01 ~]# systemctl start httpd
[root@arslinux-01 ~]# netstat -lntp|grep httpd


  • 开始安装 web ui

1、访问 http://192.168.194.130/zabbix/setup.php,可以安装 zabbix 了

2、在下一步里,会有红色的标注 FAIL 的选项,需要修改参数

此处,我们需要找到 php 的配置文件去更改

3、更改php.ini 参数(httpd 是之前 yum 安装的) /etc/php.ini 中的 date.timezone

[root@arslinux-01 ~]# vi /etc/php.ini
date.timezone = Asia/Shanghai

4、重启 httpd

[root@arslinux-01 ~]# systemctl restart httpd

5、到浏览器中,刷新一下,可以看到,参数已经全部正常了

6、定义数据库相关信息

7、自定义服务器信息

根据提示,默认安装完即可

8、到登陆页面,默认初始用户名和密码是 admin 和 zabbix

9、然后可以到个人管理中更改密码和语言

往后再访问时就在浏览器输入 ip/zabbix 即可

10、总结:

1)安装 zabbix yum 源

rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

2)yum 安装

yum ×××tall zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

3)数据库操作

create database zabbix;

grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '密码'

4)导入数据

/usr/share/doc/zabbix-server-mysql-4.0.3/create.sql.gz

gzid -d /usr/share/doc/zabbix-server-mysql-4.0.3/create.sql.gz

mysql -uroot -p密码 zabbix < /usr/share/doc/zabbix-server-mysql-4.0.3/create.sql.gz

5)编辑 zabbix_server.conf

vim /etc/zabbix/zabbix_server.conf #定义数据库相关的参数

systemctl start zabbix-server

systemctl enable zabbix-server

6)编辑 zabbix_agent.conf

vim /etc/zabbix/zabbix_agent.conf #定义Server 和 ServerActive=127.0.0.1

systemctl start zabbix-agent

systemctl enable zabbix-agent

7)httpd

systemctl start httpd #如果已经启动了 nginx,需要先把 nginx 关闭,然后启动 httpd;如果 nginx 不能停止,那么需要更改 nginx 监听端口为非 80 端口,比如 8080 /8000

8)web ui 配置

http://ip/zabbix 访问,解决 php 的问题 (date.timezone = Asia/Shanghai)

/etc/php.ini (httpd 是 yum 安装)

默认用户名密码:admin,zabbix


5.13 监控客户机-添加主机

1、安装 zabbix 的 yum 源

[root@arslinux-02 ~]# rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

2、yum 安装 zabbix-agent

[root@arslinux-02 ~]# yum ×××tall -y zabbix-agent

3、编辑配置文件 /etc/zabbix/zabbix_agentd.conf

[root@arslinux-02 ~]# vim /etc/zabbix/zabbix_agentd.conf

Server=192.168.194.130 //zabbix-server 的 ip

ServerActive=192.168.194.130

4、启动 zabbix-agent

[root@arslinux-02 ~]# systemctl start zabbix-agent
[root@arslinux-02 ~]# ps aux|grep zabbix
zabbix     7272  0.0  0.1  80720  1268 ?        S    21:20   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbi_agentd.conf
zabbix     7273  0.0  0.1  80720  1312 ?        S    21:20   0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix     7274  0.0  0.1  80720  1836 ?        S    21:20   0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix     7275  0.0  0.1  80720  1836 ?        S    21:20   0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix     7276  0.0  0.1  80720  1836 ?        S    21:20   0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix     7277  0.0  0.2  80852  2224 ?        S    21:20   0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root       7279  0.0  0.0 112724   988 pts/0    R+   21:20   0:00 grep --color=auto zabbix

5、查看 zabbix-agentd 监听的端口

[root@arslinux-02 ~]# netstat -lntp|grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      7272/zabbix_agentd
tcp6       0      0 :::10050                :::*                    LISTEN      7272/zabbix_agentd

zabbix-agentd 监听 10050 端口,会和 server 端的 10051 端口通信


5.14 监控客户机-管理模板

1、创建新主机

配置——主机——创建主机

主机已经添加完成

2、创建模板

配置——模板——创建模板

3、拷贝某个模板里的应用集 CPU 中的监控项到自定义的模板中

配置——模板——Template OS Linux——应用集——CPU

4、将监控项拷贝到 test 模板中去

5、同样的方法拷贝其他参数的监控项到 test 模板中

6、自动发现(Discovery)是无法使用复制来添加到自定义模板中的

我们可以将“自动发现”规则一样的模板克隆到一个新的自定义模板中

配置——模板——模板名称——全克隆(Full Clone)

添加名称和群组信息

7、进入新建的模板 ars4life ,在“连接的宏模板”中取消连接,并更新

8、根据需要删除模板中的监控项、触发器、图形

删除顺序:图形——触发器——监控项——应用集(删除空白项)

9、将模板链接到自定义创建的主机上去

配置——主机——具体主机——模板——选择链接模板——添加——更新

10、添加完成

11、查看监控项。监测——最新数据

12、命令行查看相关信息

[root@arslinux-01 ~]# zabbix_get -s 192.168.194.132 -p 10050 -k "system.cpu.load[all,avg1]"
0.100000


5.15 监控客户机-管理图形和窗口

  • 自动发现

自动发现需要一个小时才发现一次,如果需要立刻出现,可以使用现在检查

主机——自动发现——现在检查

  • 聚合图形

监测——聚合图形——创建聚合图形

  • 自定义监测模块

仪表板中也可以自定义新的监测模块

创建仪表盘:监测——仪表盘——创建仪表盘

效果如下图

在保存设置时出错,是由于名称不能为中文,需要改成英文,修改完后正常

在“图形”以及“聚合图形”中,将常用的类型图标收藏,点星星变×××

在仪表板中的小构件中,可以看到收藏的项目,点进去就能查看图形

记得一定要保存设置!!


5.16 监控客户机-配置触发器

  • 创建触发器

自定义网卡流量触发器

触发器设置:名称——严重性——表达式

表达式(条件):监控项——结果(单位为 bit)


5.17 解决中文名称不能写数据库的问题

触发器名称如果改为中文,那么在更新后,会提示错误,无法更新触发器,如下图

错误原因:数据库中文出现问题,基本都是字符集的问题

查看数据库:

mysql> show variables like 'character%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | latin1                           |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | latin1                           |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

character_set_database,需要改为 utf8 中文

可以先去 /etc/my.cnf 中将上述参数全部改为 utf8,再导入表,就不会有这种问题了

但在已安装 zabbix 的情况下,重新安装 zabbix 就变得极不科学,有什么更好的办法呢?

  • 修改字符集

1、将表导出

[root@arslinux-01 ~]# mysqldump -uroot -parslinux --default-character-set=utf8 zabbix > zabbix.sql

2、编辑导出的 .sql 文件

[root@arslinux-01 ~]# vim zabbix.sql

一般模式下输入 :1,$s/latin1/utf8/g,将latin1全局替换成 utf8,保存退出后再导入数据库

3、导入数据库

[root@arslinux-01 ~]# mysql -uroot -parslinux --default-character-set=utf8 zabbix < zabbix.sql

4、再进入数据库查看默认字符集:

mysql> use zabbix;

mysql> show create table items\G

ENGINE=InnoDB DEFAULT CHARSET=utf8

mysql> show create table triggers\G

ENGINE=InnoDB DEFAULT CHARSET=utf8

5、到 web 中查看名称是否能更新为中文


5.18 解决图形中文乱码

现象:如上图,乱码成方块状

原因:没有支持中文文字的字体

解决方法:替换 zabbix 默认字体为中文字体

步骤:

1、查看 zabbix 配置文件中定义的字体路径和名称

vim /usr/share/zabbix/include/defines.inc.php

ZBX_FONTPATH ——> assets/fonts

ZBX_GRAPH_FONT_NAME  ——> graphfont

2、到 /usr/share/zabbix/assets/fonts 里,将 graphfont.ttf 备份

[root@arslinux-01 ~]# cd /usr/share/zabbix/assets/fonts/
[root@arslinux-01 fonts]# mv graphfont.ttf graphfont.ttf.bak
[root@arslinux-01 fonts]# ls
graphfont.ttf.bak

3、从 windows 主机里的 C:\Windows\Fonts 上传一个中文字体到虚拟机中

4、给改字体做软链接,名称为 graphfont.ttf(或者到配置文件中改配置)

[root@arslinux-01 fonts]# ln -s msyh.ttc graphfont.ttf
[root@arslinux-01 fonts]# ls
graphfont.ttf  graphfont.ttf.bak  msyh.ttc

5、web 中乱码问题已经解决


5.19~5.21 zabbix邮件告警

  • 设置邮件推送

1、首先新注册一个域名

2、某云——产品与服务——云通信——邮件推送——立即开通

3、邮件推送控制台——邮件设置——发信域名——新建域名——配置

4、找到云解析DNS——域名解析——解析设置——添加记录(根据发信配置的信息填写,下图

5、修改完成后,点确认修改,再点验证,状态会变为绿色“可使用-未备案”

6、新建发信地址:邮件设置——发信地址——新建发信地址——发信域名、账号(自定义)、发信类型为触发邮件——设置SMTP密码(可以用keepass生成随机字符串,也可以用mkpasswd)

  • 创建发邮件 python 脚本:

1、编辑 mail.py 脚本

更改mail_user、mail_pass和端口号即可

[root@arslinux-01 ~]# vim mail.py
#!/usr/bin/python
#coding:utf-8

import smtplib
from email.mime.text import MIMEText
import sys

mail_user = '[email protected]'
mail_pass = 'xxxxxxxxx'

def send_mail(to_list,subject,content):
    me = "zabbix 监控告警平台"+"<"+mail_user+">"
    msg = MIMEText(content, 'plain', 'utf-8')
    msg['Subject'] = subject
    msg['From'] = me
    msg['to'] = to_list

    try:
        s = smtplib.SMTP("smtpdm.aliyun.com", 25)
        s.login(mail_user,mail_pass)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False

if __name__ == "__main__":
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

2、修改 mail.py 权限为755

[root@arslinux-01 ~]# chmod 755 mail.py

3、使用命令发一个测试给个人邮箱来测试

[root@arslinux-01 ~]# ./mail.py [email protected] "测试邮件" "看看能否发送成功"

4、进入邮箱查看是否搜到邮件

5、成功!

  • 设置zabbix_server配置文件

1、在 /etc/zabbix/zabbix_server.conf 找到报警脚本路径 AlertScriptsPath=/usr/lib/zabbix/alertscripts

2、cd 到 /usr/lib/zabbix/alertscripts

3、把 mail.py 脚本挪到这个目录下来

[root@arslinux-01 alertscripts]# mv /root/mail.py .

4、发邮件时是 zabbix 用户执行的,而不是root用户,确定 mail.py 是755权限

  • 设置zabbixWEB UI

1、设置报警媒介

管理——报警媒介类型——创建媒体类型


名称:baojing

类型:脚本

脚本名称:mail.py(zabbix 会到 zabbix_server 去找 AlertScriptsPath )

添加脚本参数:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}

选项保持默认即可,点添加完成


2、设置接收邮件地址

1)管理——用户——Admin(或者新创建用户)

2)Admin——报警媒介——添加

类型:baojing

收件人:邮箱地址

可以添加多个,记得点更新,检查一下报警媒介是否添加成功


3)权限检查是否所有机器都有读写权限

如果没有读写权限,可以更改 “用户类型” 为 “超级管理员”


3、配置动作

1)配置——动作——创建动作

2)“操作”标签

操作——新的

发送到用户:Admin(根据实际情况填写用户)

仅送到:baojing

条件:事件已确认等于非确认,添加

添加


3)“恢复操作”标签,同上

  • 测试报警

1、配置——主机——触发器

2、模拟故障:更改一个触发器,将“网卡入口流量”触发值改为 <=10000000

3、监测——问题——查看切换为问题——选择主机名——应用

4、也可以查看邮箱,有邮件告警

5、将触发器告警值恢复为默认,会有恢复操作的邮件通知



5.22/5.23 zabbix监控Nginx

  • 编写监控脚本

1、arslinux-02上安装 nginx 服务

2、配置 Nginx 状态信息,增加一段内容

[root@arslinux-02 ~]# vim /etc/nginx/nginx.conf
location /nginx_status
{
stub_status on;
access_log   off;
allow 127.0.0.1;
deny all;
}

如果 include /etc/nginx/default.d/*.conf 之后后没有看到内容,那么可能是被单独定义到了 /etc/nginx/default.d/default.conf 中去,可以将 location /nginx_status 一段内容写到 default.conf 中去,方法同上

3、测试:

[root@arslinux-02 ~]# curl 127.0.0.1/nginx_status
Active connections: 1
server accepts handled requests
2 2 2
Reading: 0 Writing: 1 Waiting: 0
[root@arslinux-02 ~]# curl 127.0.0.1/nginx_status
Active connections: 1
server accepts handled requests
3 3 3
Reading: 0 Writing: 1 Waiting: 0
[root@arslinux-02 ~]# curl 127.0.0.1/nginx_status
Active connections: 1
server accepts handled requests
4 4 4
Reading: 0 Writing: 1 Waiting: 0

4、说明:

字段 含义

Active Connections     当前活动连接数,其中也包括了等待状态的连接

accepts     接收到的连接数

handled     已经处理完的连接数,该数字一般和accepts一致,如果不一致那么说明Nginx出错了

requests     总共处理的请求数,一个连接可以有多个请求,所以该值比accpets要大

Reading     正在读取请求头信息的连接数

Writing     正在发送响应报文的连接数

Waiting     处于闲置状态,等待客户端发送请求的连接数

5、编写监控脚本

[root@arslinux-02 ~]# vim /usr/local/sbin/ngx_status.sh
#!/bin/bash
url="http://127.0.0.1/nginx_status"
curl=/usr/bin/curl
# 检测nginx进程是否存在
function ping {
    /sbin/pidof nginx | wc -l
}
# 检测nginx性能
function active {
$curl $url 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
$curl $url 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
    $curl $url 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
    $curl $url 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
    $curl $url 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
    $curl $url 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
    $curl $url 2>/dev/null| awk NR==3 | awk '{print $3}'
}
$1

6、更改脚本权限

[root@arslinux-02 ~]# chmod 755 /usr/local/sbin/ngx_status.sh

7、执行脚本,如果数值不为 0,那么 nginx 就在运行

[root@arslinux-02 ~]# /usr/local/sbin/ngx_status.sh ping
1
  • 编辑 zabbix_agent.conf

1、在 UserParameter= 下增加一行

UserParameter=nginx.status[*],/usr/local/sbin/ngx_status.sh $1

用来定义自定义的监控脚本,多个脚本定义多行

2、指定 key 和 shell 脚本的路径名称

nginx.status[*] 就是 key,[*] 表示脚本带有参数

3、重启服务

[root@arslinux-02 ~]# systemctl restart zabbix-agent

4、在 zabbix-server 上测试

[root@arslinux-01 ~]# zabbix_get -s 192.168.194.132 -k 'nginx.status[accepts]'
6
[root@arslinux-01 ~]# zabbix_get -s 192.168.194.132 -k 'nginx.status[ping]'
1

nginx 只要是启动状态,必然有数值

  • 添加进 web 界面

1、虚拟机安装 git

[root@arslinux-02 ~]# yum ×××tall -y git

2、将内容全部 clone 到 虚拟机上

[root@arslinux-02 ~]# git clone https://github.com/aminglinux/linux2019.git

3、将模板载到 windows 端

[root@arslinux-02 ~]# cd zabbix_nginx_template
[root@arslinux-02 zabbix_nginx_template]# sz zbx_export_templates.xml

4、web 上:删除重名模板 Template App NGINX

5、配置——模板——导入——导入文件(选择文件,选 zbx_export_templates.xml 文件)

  • 链接模板

1、配置——主机——主机名称——模板——链接指示器(选择Template App NGINX)——添加——更新

2、监控项、图形里已经出现了 Nginx 相关的监控


错误解决:

1、无效的参数 "/source": UTF-8中无效的字节排序 。

导入的模板不可以直接复制源码,重命名记事本文件


5.24 zabbix监控Tomcat

监控流程:

1、安装zabbix_java_gateway

2、配置zabbix_java_gateway配置文件和zabbix_server配置文件,指定监听端口,启动进程数

3、编辑Tomcat配置文件,开启JMX

4、添加host,指定JMX interface

5、链接TOMCAT模板


  • 操作步骤:

1、在 zabbix-server 上安装 zabbix-java-gateway

[root@arslinux-01 ~]# yum ×××tall -y zabbix-java-gateway

2、编辑 zabbix_java_gateway.conf

[root@arslinux-01 ~]# vim /etc/zabbix/zabbix_java_gateway.conf

LISTEN_PORT=10052 //不打开也是默认 10052 端口

START_POLLERS=5 //进程数

3、编辑 /etc/zabbix/zabbix_server.conf

[root@arslinux-01 ~]# vim /etc/zabbix/zabbix_server.conf

JavaGateway=127.0.0.1 //JavaGateway 所安装的主机 ip,我们这里是本机

JavaGatewayPort=10052 //java 的 port

StartJavaPollers=5

4、启动 zabbix-java-gateway

[root@arslinux-01 ~]# systemctl start zabbix-java-gateway

5、重启 zabbix-server 服务

[root@arslinux-01 ~]# systemctl restart zabbix-server

6、查看进程和端口

[root@arslinux-01 ~]# ps aux|grep gateway
zabbix     8023  1.0  3.6 2267640 36624 ?       Sl   20:28   0:00 java -server -Dlogback.configurationFile=/etc/zabbix/zabbix_java_gateway_logback.xml -classpath lib:lib/android-json-4.3_r3.1.jar:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-4.0.9.jar -Dzabbix.pidFile=/var/run/zabbix/zabbix_java.pid -Dzabbix.listenPort=10052 -Dzabbix.startPollers=5 -Dsun.rmi.transport.tcp.responseTimeout=3000 com.zabbix.gateway.JavaGateway
root       8108  0.0  0.0 112728   988 pts/0    S+   20:29   0:00 grep --color=auto gateway
[root@arslinux-01 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      7223/rpc.mountd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      7156/sshd
tcp        0      0 0.0.0.0:36919           0.0.0.0:*               LISTEN      7171/rpc.statd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      7572/master
tcp        0      0 0.0.0.0:43225           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      7196/zabbix_agentd
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      8049/zabbix_server
tcp6       0      0 :::41833                :::*                    LISTEN      -
tcp6       0      0 :::3306                 :::*                    LISTEN      7479/mysqld
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd
tcp6       0      0 :::80                   :::*                    LISTEN      7155/httpd
tcp6       0      0 :::20048                :::*                    LISTEN      7223/rpc.mountd
tcp6       0      0 :::22                   :::*                    LISTEN      7156/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      7572/master
tcp6       0      0 :::2049                 :::*                    LISTEN      -
tcp6       0      0 :::10050                :::*                    LISTEN      7196/zabbix_agentd
tcp6       0      0 :::10051                :::*                    LISTEN      8049/zabbix_server
tcp6       0      0 :::43939                :::*                    LISTEN      7171/rpc.statd
tcp6       0      0 :::10052                :::*                    LISTEN      8023/java

7、开启 JMX

1)编辑配置文件 /usr/local/tomcat/bin/catalina.sh

在 #!/bin/sh 下增加一段

export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote

-Djava.rmi.server.hostname=192.168.194.130

-Dcom.sun.management.jmxremote.port=9999

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false"

2)重启 tomcat

[root@arslinux-01 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@arslinux-01 ~]# /usr/local/tomcat/bin/startup.sh

3)查看 9999 端口是否启动

[root@arslinux-01 ~]# netstat -lntp |grep 9999
tcp6       0      0 :::9999                 :::*                    LISTEN      8328/java

8、zabbix web 端添加新 host

1)创建新主机,配置——主机——创建主机

2)更改主机配置:主机名称——群组——移除agent代理程序接口——添加JMX接口——127.0.0.1,端口 9999


3)链接模板:模板——Template App Apache Tomcat JMX——添加——添加


4)监测——最新数据——主机切换为arslinux-01_tomcat已经出数据了


5.25 zabbix监控MySQL

1、授权用户

[root@arslinux-01 ~]# mysql -uroot -parslinux
mysql> grant usage,process,replication client on*.* to 'mon'@'localhost' identified by '12345678';
Query OK, 0 rows affected (0.05 sec)

2、查看 /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 中 HOME 的位置

HOME=/var/lib/zabbix

3、创建目录 /var/lib/zabbix

[root@arslinux-01 ~]# mkdir /var/lib/zabbix

4、在目录下创建隐藏文件 .my.cnf,添加两段内容

[root@arslinux-01 ~]# vim /var/lib/zabbix/.my.cnf
[mysql]
host=localhost
user=mon
password='12345678'
socket=/tmp/mysql.sock

[mysqladmin]
host=localhost
user=mon
password='12345678'
socket=/tmp/mysql.sock

5、重启 zabbix-agent 服务(如果没改 zabbix 配置文件无需重启)

[root@arslinux-01 ~]# systemctl restart zabbix-agent

6、测试

[root@arslinux-01 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.ping
sh: mysqladmin: 未找到命令
0

7、mysqladmin 的位置

[root@arslinux-01 ~]# which mysqladmin
/usr/local/mysql/bin/mysqladmin

由于 PATH 的原因,可以给 mysqladmin 做个软连接到 /usr/bin/ 下

8、做软链接

[root@arslinux-01 ~]# ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/

9、再次测试

[root@arslinux-01 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.ping
1

10、测试下 mysql.version、mysql.size

[root@arslinux-01 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.version

sh: mysql: 未找到命令

[root@arslinux-01 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.size

bash: mysql: 未找到命令

11、通方法给 mysql 做软链接

[root@arslinux-01 ~]# which mysql
/usr/local/mysql/bin/mysql
[root@arslinux-01 ~]# ln -s /usr/local/mysql/bin/mysql /usr/bin/
[root@arslinux-01 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.version
mysql  Ver 14.14 Distrib 5.6.43, for linux-glibc2.12 (x86_64) using  EditLine wrapper
[root@arslinux-01 ~]# zabbix_get -s 127.0.0.1 -p 10050 -k mysql.size
10240

11、添加主机和模板

1)配置——主机——创建主机——主机名称——群组——端口

2)模板——Template DB MySQL——添加

3)监测——最新数据——主机切换为 arslinux-01_mysql ,过段时间会出现新数据

4)主机可用性也显示 ZBX 可用



课堂笔记

1、监控重要性

2、主流监控:zabbix、open-falcon、Prometheus、grafana

链路监控:apm、pinport

3、学习监控需要把握的几点:监控项目如何配置、自定义监控如何配置、如何成图、如何告警