【shell编程系统巡检项目】

文章介绍了如何使用bash脚本对系统进行定期巡检,包括基本信息(如主机名、IP、发行版本等)、系统信息(内存、磁盘、CPU等)、服务状态和web服务状态,旨在实现系统的自动监控和问题检测。
摘要由CSDN通过智能技术生成

系统巡检

所谓系统巡检就是就是定时检查系统的各项指标,与监控互补。

指标信息

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/null
	if [ $? -eq 0 ];then
		if_has_pub_addr=2
	else
		echo "没有公网"
	fi
	echo $if_has_pub_addr
}
####系统的基础指标检查####
sys_basic_check(){
	name="系统的基础指标"
	hostname=`hostname`
	ips=`hostname -I`
	kernel_version=`uname -r`
	source /etc/os-release
	issue_version=`echo $PRETTY_NAME`
	if [ $(sys_pub_check) -eq 2 ];then
	       pub_ip=`curl -s ipconfig.io`
       else
	       pub_ip="没有公有ip"
	fi
	lang=`echo $LANG`
	date=`date +%F_%T`
	res_file_process
	cat >> $file_save_path/$date.cvs <<EOF
$name,主机名,$hostname
$name,ip地址,$ips
$name,内核版本,$kernel_version
$name,发行版本,$issue_version
$name,公有ip,$pub_ip
$name,系统语言,$lang
EOF
	echo "$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
EOF
        echo "$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 ];then
		echo -e "\033[31m没有交换分区\033[0m"

		if_has_swap=no
	else
		if_has_swap=yes
	fi
	if [ $if_has_swap = "yes" ];then
		mem_swap_total=`free -h |awk 'NR==3{print $2}'`
		 cat >> $file_save_path/$date.cvs <<-EOF
			$name,交换分区总大小,$mem_swap_total
		EOF
	fi
	        cat >> $file_save_path/$date.cvs <<EOF
$name,内存的总量,$mem_total
$name,剩余内存,$mem_free
EOF
	echo "$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
EOF
        echo "$name检查完成"

	
}
service_info(){
	name=`服务信息`
	selinux_status=`getenforce`
	firewall_status=`systemctl is-active firewalld.service`


}
main(){
	sys_basic_check
	sys_cpu
	sys_mem
	sys_fdisk
}
main

总结:自动巡检项目就是根据你的需求编写相关的shell脚本,来定时检查系统有没有出现一些问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值