Linux 运维关键指标参数

[TOC]

Linux 系统相关

vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 205844  19132 3555224    0    0 12568  2272 30957 41593 24  6 69  2  0
 4  6      0 217464  19184 3554160    0    0  8500 27060 29681 33805 50  8 35  7  0
 2  0      0 220884  19256 3548376    0    0  8372 34884 30531 36128 21  6 60 14  0
 3  8      0 249900  19316 3520500    0    0 12320 59696 31318 33133 37  7 30 26  0
 5  7      0 226612  19384 3539132    0    0  9764 41536 30241 34237 20  5 56 19  0
 0  6      0 234124  19448 3534036    0    0 13020 79844 30173 30597 25  6 38 31  0
 1  6      0 209748  19504 3564720    0    0  5240 81400 31599 32634 30  6 34 30  0
  • proces

    r 列: 表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu
    b 列: 表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

  • cpu: 表示cpu的使用状态

    us 列: 显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序
    sy 列: 显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足
    wa 列: 显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)>,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)
    id 列:显示了cpu处在空闲状态的时间百分比

  • system 显示采集间隔内发生的中断数

    in 列: 表示在某一时间间隔中观测到的每秒设备中断数
    cs 列: 表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查

获取内存(CPU)占用率前5

ps -aux | sort -k4nr | head -n 5
ps -aux | sort -k3nr | head -n 5

磁盘IO负载

iostat

iostat -x 1 10
root@zx05:/usr/local/monitor_colloect/logs[ master*]$ iostat -x 1 10
Linux 4.18.0-240.15.1.el8_3.x86_64 (zx05)       06/20/2022      _x86_64_        (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          25.21    0.00    5.81    6.01    0.00   62.97

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
vda             13.02    4.76    450.10     88.43     0.07     0.14   0.54   2.79    7.89    1.58   0.10    34.57    18.59   0.27   0.49
vdb            453.25 2215.64   8254.88  41159.78     0.02   277.01   0.00  11.11    0.43    0.09   0.17    18.21    18.58   0.08  21.63

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          36.02    0.00    7.05    3.53    0.00   53.40

%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度
。一般地,如果该参数是100%表示设备已经接近满负荷运行了。

通过iostat工具我们可以查看服务器的io负载情况,但是无法快速定位到io负载的来源,那么我们怎么定位io高负载的进程,甚至是负载来源文件呢: iotop

iotop

iotop -oP
   -o, --only 只显示正在产生I/O的进程或线程。除了传参,可以在运行过程中按o生效。
   -b, --batch 非交互模式,一般用来记录日志
   -n NUM, --iter=NUM 设置监测的次数,默认无限。在非交互模式下很有用
   -d SEC, --delay=SEC 设置每次监测的间隔,默认1秒,接受非×××数据例如1.1
   -p PID, --pid=PID 指定监测的进程/线程
   -u USER, --user=USER 指定监测某个用户产生的I/O
   -P, --processes 仅显示进程,默认iotop显示所有线程
   -a, --accumulated 显示累积的I/O,而不是带宽
   -k, --kilobytes 使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用。
   -t, --time 加上时间戳,非交互非模式。
   -q, --quiet 禁止头几行,非交互模式。有三种指定方式。
          -q     只在第一次监测时显示列名
          -qq    永远不显示列名。
          -qqq   永远不显示I/O汇总。

参考:https://blog.csdn.net/qq_35462323/article/details/111468952

修改 ssh 端口

vim /etc/ssh/sshd_config

systemctl restart sshd.service

iptables

  • 配置文件: /etc/sysconf/iptales
# 禁止端口访问
iptables -A OUTPUT -p tcp --sport 8080 -j REJECT

# 禁止访问
iptables -A OUTPUT -d 212.129.58.250 -j REJECT

# 删除规则
iptables -D OUTPUT 2

# 查看规则
iptables -nL --line-number
  • 查看规则: iptables -nL --line-number
  • 删除规则: iptables -D f2b-SSH 1 # f2b-SSH: 规则名称 1:序号

firewalld

/etc/passwd 解析

root@kali:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
test:x:1000:1000::/home/test:/bin/sh

格式如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

字段 含义

  • 1 用户名
  • 2 用户的密码原来直接存储在第二字段,但是为了安全,最后专门有了/etc/shadow文件,现在默认用x替代
  • 3 用户的uid,一般情况下root为0,1-499默认为系统账号,有的更大些到1000,500-65535为用户的可登录账号,有的系统从1000开始。
  • 4 用户的gid,linux的用户都会有两个ID,一个是用户uid,一个是用户组id,在我们登录的时候,输入用户名和密码,其实会先到/etc/passwd查看是否有你输入的账号或者用户名,有的话将该账号与对应的UID和GID(在/etc/group中)读出来。然后读出主文件夹与shell的设置,然后再去检验密码是否正确,正确的话正常登录。
  • 5 用户的账号说明解释
  • 6 用户的家目录文件夹
  • 7 用户使用的shell,如果换成/sbin/nologin/就是默认没有登录环境的。

伪用户含义

bin 拥有可执行的用户命令文件
sys 拥有系统文件
adm 拥有帐户文件
uucp UUCP使用
lplp或lpd 子系统使用
nobody NFS使用

/etc/shadow 解析

root@kali:~# cat /etc/shadow
root:$6$DUiJ86eR$qR8rjOj3wK0niIGnFxatv/hw5/198D8kIVYa.RjxvdWgZMrPSrVU4tcio0G/vRvVoGY5AYOKziVo9kFVIgnYS1:17631:0:99999:7:::
daemon:*:17557:0:99999:7:::
bin:*:17557:0:99999:7:::
sys:*:17557:0:99999:7:::
sync:*:17557:0:99999:7:::
games:*:17557:0:99999:7:::
man:*:17557:0:99999:7:::

字段 含义

  • 1 用户名
  • 2 用户的密码加密字段
  • 3 密码已经使用的日期(从1970-01-01开始,为什么?因为unix1969年发布雏形,基于当时对系统的考虑,就这样了)
  • 4 密码最少多少天之后可以修改(例子中是3天之后,也就是修改一次3天之后才能再次修改)
  • 5 密码多少天之后必须修改(例子中99999就是表明可以一直不用修改密码)
  • 6 密码修改之前几天提醒我修改(例子中是7天之前)
  • 7 要是没有修改延长几天(例子中延长3天)
  • 8 无论怎样到这个时间过期(例子中的时间从1970-01-01算)
  • 9 保留字段,目前无含义

ln

  1. 创建软链接
    ln -s 源文件目录  软链接地址
  2. 删除
    rm -rf 软链接地址
  3. 修改
    ln -snf 新目标目录 软链接地址

    参数:

    -b 删除,覆盖以前建立的链接
    -d 允许超级用户制作目录的硬链接
    -f 强制执行
    -i 交互模式,文件存在则提示用户是否覆盖
    -n 把符号链接视为一般目录
    -s 软链接(符号链接)
    -v 显示详细的处理过程

发表评论