美文网首页Linux小推车
应用版日常巡检shell脚本

应用版日常巡检shell脚本

作者: 大白菜的猪猪 | 来源:发表于2019-11-23 10:36 被阅读0次

编程需求:

之前已经编写过一个性能监控脚本.现在将其再次进行功能的丰富,以达到企业生产环境的需求.

本文中涉及到需保密的内容均以...省略,尽请谅解!


源代码:


#!/bin/bash

#脚本功能描述:监控服务器主要性能参数指标

#监控项目:内核信息,主机名称,IP地址,登录账户,内存与swap信息,磁盘信息,CPU负载

#内核信息

kernel=$(uname -r)

#操作系统版本

release=$(cat /etc/redhat-release)

#主机名称

hostname=$HOSTNAME

#本地IP地址列表

localip=$(ip a s | awk '/inet /{print $2}')

#总内存容量

mem_total=$(free | awk '/Mem/{print $2}')

#剩余内存容量

mem_free=$(free | awk '/Mem/{print $NF}')

#总swap容量

swap_total=$(free | awk '/Swap/{print $2}')

#剩余swap容量

swap_free=$(free | awk '/Swap/{print $NF}')

#磁盘信息

disk=$(df | awk '/^\/dev/{print $1,$2,$4}'|column -t)

#CPU最近1分钟的平均负载

load1=$(uptime | sed 's/,//g' | awk '{print $(NF-2)}')

#CPU最近5分钟的平均负载

load5=$(uptime | sed 's/,//g' | awk '{print $(NF-1)}')

#CPU最近15分钟的平均负载

load15=$(uptime | sed 's/,//g' | awk '{print $(NF)}')

#登录用户数量

login_users=$(who | wc -l)

#进程数量

procs=$(ps aux | wc -l)

#系统总账户数量

users=$(sed -n '$=' /etc/passwd)

#CPU型号

cpu_info=$(LANG=C lscpu |awk -F: '/Model name/ {print $2}')

#CPU内核数量

cpu_core=$(awk '/processor/{core++} END{print core}' /proc/cpuinfo)

#安装性能监控软件

yum -y -q  install sysstat &>/dev/null

echo -e "\033[34m提取磁盘性能指标,请稍后...\033[0m"

tps=$(LANG=C sar -d -p 1 6 | awk '/Average/' | tail -n +2 |awk '{print "["$2"]磁盘平均IO数量:"$3}') &

read_write=$(LANG=C sar -d -p 1 6 |awk '/Average/' | tail -n +2 | awk '{print "["$2"]平均每秒读写扇区量:"$4,$5}') &

#中断数量

irq=$(vmstat 1 2 |tail -n +4 | awk '{print $11}')

#上下文切换数量

cs=$(vmstat 1 2|tail -n +4 | awk '{print $12}')

#占用内存资源最多的10个进程列表

top_proc_mem=$(ps --no-headers -eo comm,rss | sort -k2 -n |tail -10)

#占用内存资源最多的10个进程列表

top_proc_cpu=$(ps --no-headers -eo comm,rss | sort -k2 -n |tail -10)

#获取网卡流量信息,接收|发送的数据流量,单位为字节(bytes)

net_monitor=$(cat /proc/net/dev | tail -n +3 |awk 'BEGIN{ print "网卡名称 入站数据流量(bytes) 出站数据流量(bytes)"} {print $1,$2,$10}' | column -t)

#输出数据信息

echo -e "\033[32m************************本机主要参数列表********************\033[0m"

echo -e "本机IP地址列表:\033[32m$localip\033[0m"

echo -e "本机主机名称:\033[32m$hostname\033[0m"

echo -e "操作系统版本为:\033[32m$release\033[0m,内核版本:\033[32m$kernel\033[0m"

echo -e "CPU型号为:\033[32m$cpu_info\033[0m,CPU内核数量:\033[32$kernel\033[0m"

echo -e "本机总内存容量:\033[32m$mem_total\033[0m,剩余可用内存容量:\033[32m$mem_free\033[0m"

echo -e "本机swap总容量:\033[32m$swap_local\033[0m,剩余swap容量:\033[32m$swap_free\033[0m"

echo -e "CPU最近1分钟,5分钟,15分钟的平均负载分别为:\033[32m$load1 $load5 $load15\033[0m"

echo -e "本机总账户数量为:\033[32m$users\033[0m,当前登录系统的账户数量:\033[32m$login_users\033[0m"

echo -e "当前系统中启动的进程数量:\033[32m$procs\033[0m"

echo -e "占用CPU资源最多的10个进程列表为:"

echo -e "\033[32m$top_proc_cpu\033[0m"

echo -e "占用CPU内存资源最多的10个进程列表为:"

echo -e "\033[32m$top_proc_mem\033[0m"

echo -e "CPU中断数量为:\033[32m$irq\033[0m,CPU上下文切换数量:\033[32m$cs\033[0m"

echo -e "每个磁盘分区的总容量与剩余容量信息如下:"

echo -e "$disk"

echo -e "$tps"

echo -e "$read_write"

echo -e "$net_monitor"

echo -e "\033[32m************************巡检结束********************\033[0m"


脚本的运行结果


/root/sys_info.sh

提取磁盘性能指标,请稍后...

************************本机主要参数列表********************

本机IP地址列表:127.0.0.1/8

....

本机主机名称:  ..............

操作系统版本为:CentOS Linux release 7.5.1804 (Core) ,内核版本:............

CPU型号为:            Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz,CPU内核数量: ...............

本机总内存容量:16324192,剩余可用内存容量:14519016

本机swap总容量:,剩余swap容量:0

CPU最近1分钟,5分钟,15分钟的平均负载分别为:1.19 0.44 0.37

本机总账户数量为:48,当前登录系统的账户数量:2

当前系统中启动的进城数量:247

占用CPU资源最多的10个进程列表为:

evolution-calen 65048

gnome-software  65628

evolution-calen 67732

chrome          74140

sogou-qimpanel  79252

fcitx          81160

mysqld          91256

chrome          103384

chrome          121404

gnome-shell    171912

占用CPU内存资源最多的10个进程列表为:

evolution-calen 65048

gnome-software  65628

evolution-calen 67732

chrome          74140

sogou-qimpanel  79252

fcitx          81160

mysqld          91256

chrome          103384

chrome          121404

gnome-shell    171912

CPU中断数量为:294,CPU上下文切换数量:292

每个磁盘分区的总容量与剩余容量信息如下:

/dev/sda2  103080888  76076244

/dev/sda1  307084240  227897560

/dev/loop0  9176232    0

网卡名称      入站数据流量(bytes)  出站数据流量(bytes)

rhce-nic:      0                    0

rhce:          0                    0

private1-nic:  0                    0

public2-nic:  0                    0

public1-nic:  0                    0

private2-nic:  0                    0

eth0:          2247764              562741

lo:            248                  248

private1:      0                    0

virbr0-nic:    0                    0

virbr0:        0                    0

private2:      0                    0

vbr-nic:      0                    0

public2:      0                    0

public1:      0                    0

vbr:          0                    0

************************巡检结束********************


目前本人正在进行3.0版本的研究,需要完成对应阀值邮件报警的功能;

相关文章

  • 应用版日常巡检shell脚本

    编程需求: 之前已经编写过一个性能监控脚本.现在将其再次进行功能的丰富,以达到企业生产环境的需求. 本文中涉及到需...

  • Shell完成基础日常巡检脚本

    编程需求: 日常巡检是每一个运维必须要做的事情,如果能用脚本实现的话,那将大大简化巡检的工作难度! 现编写一个日常...

  • Linux系统的Shell脚本传参(bash)2022-08-2

    Shell传参快速使用脚本 简便版 进阶版 getopt方法 getopts方法 做生信一般都绕不开Shell脚本...

  • shell脚本学习资料

    1.Linux Shell脚本攻略(第2版)& 常用shell脚本指令[精辟]链接:https://pan.bai...

  • [Linux]Shell

    shell:命令解释器,驱动linux内核;应用程序调用shell命令 1.Shell脚本的执行方式 脚本格式要求...

  • 1.11 调试脚本

    《Linux Shell 脚本攻略(第 2 版)》读书笔记 启用 shell 脚本的跟踪调试功能bash -x s...

  • iOS开发逆向之应用重签名(下)

    本文主要介绍通过shell脚本进行应用重签名 补充知识 在利用shell脚本重签名之前,需要了解以下知识:脚本常用...

  • shell

    shell脚本在linux中应用广泛,之前一直选用python写脚本来进行一些文件操作,但是最后发现shell脚本...

  • 1.1 开始

    《Linux Shell 脚本攻略(第 2 版)》读书笔记 Bash (Bourne Again Shell)是目...

  • shell脚本学习笔记

    shell 脚本是一种可以在linux系统下运行的解释性脚本,应用广泛,功能强大,以下是本人在学习shell脚本过...

网友评论

    本文标题:应用版日常巡检shell脚本

    本文链接:https://www.haomeiwen.com/subject/cvacwctx.html