目录
- 系统巡检
- 指标信息
- 代码
系统巡检
所谓系统巡检就是就是定时检查系统的各项指标,与监控互补。
指标信息
1.基本信息:主机名,ip地址,公网ip,系统发行版本,内核版本,cpu架构
hostname
hostname -i
curl ifconfig.io
cat /etc/os-release
uname -r
uname -m
echo $LANG 系统的语言
lscpu中的Model name cpu的型号,cpu的核数
top cpu的使用情况,io,系统态,用户态2.系统信息:内存,swap,磁盘数量,磁盘大小,磁盘分区空间,分区状态,cpu颗数,核心数,空闲率,负载,用户及登录信息,可登录用户信息,sudo权限用户信息,系统dns及是否可用,yum仓库是否优化,selinux是否关闭,防火墙规则
free
lsblk/fdisk -l 磁盘个数3.服务信息:端口,进程,僵尸进程数量,后台挂起进程数量,开机自启动的服务,当前运行的服务ss -lntup 查看端口有哪些
top/ps aux 查看僵尸进程
systemctl list-unit-files 开启自启的服务
4.web服务:状态码,连接数,并发数ss -ant|排除LIsten即可 ---连接数
ss -ant|grep ESTABLE ---并发数
代码
1.尽可能的使用函数
2.指标取出后存放到文件中,如csv
#!/bin/bash
#author:刚刚
file_save_path=~/sys_info
####生成结果文件函数####
res_file_process(){[ ! -d $file_save_path ] && {mkdir $file_save_path}
}####判断是否可以上公网####
sys_pub_check(){ping -c2 -i 0.01 www.baidu.com &>/dev/nullif [ $? -eq 0 ];thenif_has_pub_addr=2elseecho "没有公网"fiecho $if_has_pub_addr
}
####系统的基础指标检查####
sys_basic_check(){name="系统的基础指标"hostname=`hostname`ips=`hostname -I`kernel_version=`uname -r`source /etc/os-releaseissue_version=`echo $PRETTY_NAME`if [ $(sys_pub_check) -eq 2 ];thenpub_ip=`curl -s ipconfig.io`elsepub_ip="没有公有ip"filang=`echo $LANG`date=`date +%F_%T`res_file_processcat >> $file_save_path/$date.cvs <<EOF
$name,主机名,$hostname
$name,ip地址,$ips
$name,内核版本,$kernel_version
$name,发行版本,$issue_version
$name,公有ip,$pub_ip
$name,系统语言,$lang
EOFecho "$name检查完成"
}
sys_cpu(){name="系统cpu信息"cpu_arch=`lscpu | grep Architecture |awk '{print $2}'`cpu_model=`lscpu | grep "Model name:"| head -1 | awk -F: '{print $2}'|sed -r 's/[[:space:]]+//'`cpu_core=`lscpu | grep "^CPU(s):" | awk '{print $2}'`cpu_idel=`iostat | grep -A1 "avg-cpu" | tail -1 | awk '{print $NF}'`cpu_user=`iostat | grep -A1 "avg-cpu" | tail -1 | awk '{print $1}'`cpu_sys=`iostat | grep -A1 "avg-cpu" | tail -1 | awk '{print $3}'`cpu_iowait=`iostat | grep -A1 "avg-cpu" | tail -1 | awk '{print $4}'`cpu_load_1=`uptime | awk '{print $10}'|cut -d, -f1`cpu_load_5=`uptime | awk '{print $11}'|cut -d, -f1`cpu_load_15=`uptime | awk '{print $12}'|cut -d, -f1`cat >> $file_save_path/$date.cvs <<EOF
$name,cpu的架构,$cpu_arch
$name,cpu的型号,$cpu_model
$name,cpu的核数,$cpu_core
$name,cpu的空闲率,$cpu_idel
$name,cpu用户态使用率,$cpu_user
$name,cpu系统态使用率,$cpu_sys
$name,cpuio使用率,$cpu_iowait
$name,cpu过去一分钟的平均负载,$cpu_load_1
EOFecho "$name检查完成"
}
sys_mem(){name="系统内存信息"mem_total=`free -h|awk 'NR==2{print $2}'`mem_free=`free -h|awk 'NR==2{print $NF}'`if [ `free |awk 'NR==3{print $2}'` -eq 0 ];thenecho -e "\033[31m没有交换分区\033[0m"if_has_swap=noelseif_has_swap=yesfiif [ $if_has_swap = "yes" ];thenmem_swap_total=`free -h |awk 'NR==3{print $2}'`cat >> $file_save_path/$date.cvs <<-EOF$name,交换分区总大小,$mem_swap_totalEOFficat >> $file_save_path/$date.cvs <<EOF
$name,内存的总量,$mem_total
$name,剩余内存,$mem_free
EOFecho "$name检查完成"}
sys_fdisk(){name="系统磁盘相关的信息"disk_count=`lsblk | grep disk | wc -l`disk_size=`lsblk | grep disk | awk -v OFS='----->' '{print $1,$4}'` cat >> $file_save_path/$date.cvs <<EOF
$name,内存的总量,$disk_count
$name,剩余内存,$disk_size
EOFecho "$name检查完成"}
service_info(){name=`服务信息`selinux_status=`getenforce`firewall_status=`systemctl is-active firewalld.service`}
main(){sys_basic_checksys_cpusys_memsys_fdisk
}
main
总结:自动巡检项目就是根据你的需求编写相关的shell脚本,来定时检查系统有没有出现一些问题。