shell脚本收集服务器基本信息并入库
# cat check_all.sh
#!/bin/bash
#create by hexm @2016.6
#date=`date +%Y%m%d`
#DIST_FILE=/app/healthcheck
#EXEC_LOG=/app/healthcheck/log/exec_$date.log set -e IP=`ifconfig eth1|awk -F"[ :]+" 'NR==2{print $4}'` #加载变量
. /app/healthcheck/scripts/global.sh #因rsync用户名有nobody和csocket两种,这里判断下防止被修改
CHECK_ALL_OWN=`ls -ld /app/healthcheck/ |awk '{print $3}'`
rsync_user=`cat /etc/rsyncd.conf|grep uid|awk -F"[ =]+" '{print $NF}'`
if [[ ${CHECK_ALL_OWN} != ${rsync_user} ]];then
chown ${rsync_user}.${rsync_user} /app/healthcheck -R
fi #获取CPU使用率、CPU负载
TOP_INFO(){
#TOP_DETAIL=$(/usr/bin/top -bn1 )
#CPU_USE=$(echo -e "$TOP_DETAIL" |grep "Cpu(s):" |awk '{print $2}' | tail -n1 |cut -d"%" -f )
TOP_DETAIL=$(/usr/bin/top -b -d -n )
CPU_USE=$(echo -e "$TOP_DETAIL" |grep "Cpu(s):" |awk '{print $2}' | tail -n1 |cut -d"%" -f )
CPU_LOAD=$(uptime | awk -F"," '{print $(NF-2)}'| awk '{print $3}')
CPU_LOAD=$(echo -e "${CPU_LOAD}" | sed 's/[, ]//g')
} #获取可用内存率
MEM(){
Free_mem=`free -m|awk -F"[ :]+" 'NR==2{print $4+$6+$7}'`
Totol_mem=`free -m|grep Mem |awk '{print $2}'`
ava_mem=`echo "scale=2;$Free_mem/$Totol_mem*100" | bc`
MEM_FREE=${ava_mem/.*}
} #获取读IO和写IO
IO(){
R_IO=`iostat -x|awk '/sda/{print $4}'|awk '{sum+=$1}END{print sum/NR}'`
W_IO=`iostat -x|awk '/sda/{print $5}'|awk '{sum+=$1}END{print sum/NR}'`
} #获取磁盘可用率
#划分为"/"、"DFS"、"APP"、"FDFS"四种
DISK(){
DISK_USE=`df -h|awk "/\/$/"'{print $(NF-1)}'|cut -d"%" -f `
if [[ "${DISK_USE}" == "" ]];then
echo "$IP:无/目录" &>/dev/null
else
DISK_USE=${DISK_USE/.*}
DISK_FREE=$((-$DISK_USE))
fi DISK_DFS_USE=`df -h|awk "/\/dfs/"'{print$(NF-1)}'|cut -d"%" -f `
if [[ "${DISK_DFS_USE}" == "" ]];then
echo "$IP:无/dfs目录" &> /dev/null
else
DISK_DFS_USE=${DISK_DFS_USE/.*}
DISK_DFS_FREE=$((-${DISK_DFS_USE}))
fi DISK_APP_USE=`df -h|awk "/\/app/"'{print$(NF-1)}'|cut -d"%" -f `
if [[ "${DISK_APP_USE}" == "" ]];then
echo "$IP:无/app目录" &> /dev/null
else
DISK_APP_USE=${DISK_APP_USE/.*}
DISK_APP_FREE=$((-$DISK_APP_USE))
fi DISK_FDFS_USE=`df -h|awk "/\/fdfs/"'{print$(NF-1)}'|cut -d"%" -f `
if [[ "${DISK_FDFS_USE}" == "" ]];then
echo "$IP:无/fdfs目录" &> /dev/null
else
DISK_FDFS_USE=`echo $DISK_FDFS_USE|tr " " "\n"|awk '{sum+=$1}END{print sum/NR}'`
DISK_FDFS_USE=${DISK_FDFS_USE/.*}
DISK_FDFS_FREE=$((-${DISK_FDFS_USE}))
fi
} #获取网卡单秒流量
NETWORK_FLOW(){
FLAG=`ifstat |head -|awk '{print $1}'`
if [ $FLAG == eth1 ];then
WAN_INPUT="None"
WAN_OUTPUT="None"
LAN_INPUT=`ifstat |awk 'NR==3{print $1}'`
LAN_OUTPUT=`ifstat |awk 'NR==3{print $2}'`
else
WAN_INPUT=`ifstat |awk 'NR==3{print $1}'`
WAN_OUTPUT=`ifstat |awk 'NR==3{print $2}'`
LAN_INPUT=`ifstat |awk 'NR==3{print $3}'`
LAN_OUTPUT=`ifstat |awk 'NR==3{print $4}'`
fi
}
MEM
TOP_INFO
DISK
NETWORK_FLOW
IO #数据入库
TIME=`date '+%F %H:%M:%S'`
mysql -u${MYSQL_USER} -p${MYSQL_PASSWD} -h${MYSQL_ADDRESS} <<EOF
use db_devops;
insert into tbl_data(IP,CPU_USE,MEM_FREE,CPU_LOAD,WAN_INPUT,WAN_OUTPUT,LAN_INPUT,LAN_OUTPUT,DISK_FREE,DISK_DFS_FREE,DISK_APP_FREE,DISK_FDFS_FREE,R_IO,W_IO,SYS_TIME,SQL_TIME)
values('${IP}','$CPU_USE','$MEM_FREE','$CPU_LOAD','${WAN_INPUT:-None}','${WAN_OUTPUT:-None}','${LAN_INPUT:-None}','${LAN_OUTPUT:-None}','${DISK_FREE:-None}','${DISK_DFS_FREE:-None}','${DISK_APP_FREE:-None}','${DISK_FDFS_FREE:-None}','${R_IO:-None}','${W_IO:-None}','$TIME',now()); EOF
# cat global.sh
#!/bin/bash
#create by hexm @2016.6
DATE=`date +%Y%m%d`
TIME=`date '+%F %H:%M:%S'`
MYSQL_USER="xxx"
MYSQL_PASSWD="xxx"
MYSQL_ADDRESS="10.88.2.111"
EXEC_LOG="/app/healthcheck/log/exec_$DATE.log"
#DATA_LOG="/app/healthcheck/log/data_$DATE.log"
SOURCE_FILE="/app/healthcheck"
DIST_FILE="/app/healthcheck"
SSH_KEY="/root/.ssh/id_rsa_gongy"
#IP=`ifconfig eth1|awk -F"[ :]+" 'NR==2{print $4}'`
DATA_LOG="/app/healthcheck/log/${IP}_data_$DATE.log"
INSERT_SQL_LOG="/app/healthcheck/log/insertsql_$IP_$DATE.log"
shell脚本收集服务器基本信息并入库的更多相关文章
- shell脚本查看服务器基本信息
#!/bin/sh #电脑概览 #电脑型号 ComputerModel=`/usr/bin/sudo /usr/sbin/dmidecode | grep -A2 "System Infor ...
- Linux shell脚本判断服务器网络是否可以上网
Linux shell脚本判断网络畅通 介绍 在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需要有个函数来判断服务器网络状态 我们可以通过curl来访问 www ...
- Shell脚本分析服务器性能
概述 我们原先在服务器上想分析性能指标,需要执行一系列的linux命令.对于linux命令不熟悉的人来说,比较困难 现在有一套集成的shell脚本,把常用的linux命令都包含在里面,一键式分析性能瓶 ...
- 如何用shell脚本取出服务器图片
一 ,SHELL 是什么 (1)shell是一种命令行解释器. (2)是用户和Linux内核之间沟通的桥梁,属于中间件.见下图 (3)交互流程:shell接受用户输入的指令 =>将指令传达给Li ...
- shell脚本生成服务器密码
#!/bin/bash len=90 str=(a b c d e f g h i j k l m n o p q r s t u vw x y z A B C D E F G H I J K L M ...
- shell脚本实例
备注:一些与传递给shell的参数相关的变量:$# 命令行参数的个数$? 调用命令的返回值$$ 当前进程的进程号$! 最后一个后台命令的进程号$0 命令行的第一个参数,也就是命令名$n 命令行的第n个 ...
- Linux Shell 脚本
1. 写一个脚本,利用循环计算10的阶乘#!/bin/shfactorial=1for a in `seq 1 10`do factorial=`expr $factorial \* $a ...
- 用java代码调用shell脚本执行sqoop将hive表中数据导出到mysql
1:创建shell脚本 touch sqoop_options.sh chmod 777 sqoop_options.sh 编辑文件 特地将执行map的个数设置为变量 测试 可以java代码传参数 ...
- Linux shell脚本基础
程序的组成: 程序:算法+数据结构 数据:程序处理的目标 数据结构:相互之间存在一种或多种特定关系的数据元素的集合 算法:处理数据的方式 编程风格: 面向对象:把所有的操作都转化为对象的方式. 面向过 ...
随机推荐
- bzoj3698 XWW的难题
题意:给你个n * n的实数矩阵,你需要把它中的每个数上/下取整,并满足如下条件: 每行最后一个数等于前面的和. 每列最后一个数等于前面的和. n行n列的那个元素始终为0,不予考虑. 求满足条件下矩阵 ...
- P1339 热浪 最短路径模板题
这么naive的题面一看就是最短路模板题~~~ ok.首先是floyd算法,tts,记得把k放在最外面就行了. #include <cstdio> #include <cstring ...
- 使用photoshop以及markman进行快速重构页面的几个步骤
先来几个photoshop打开psd图的标准动作. ctrl+,ctrl-,放大,缩小psd图的.查看字体大小看T等等. 想psd图出现刻度 你只需要"> 设置度量单位为像素之后,打开 ...
- 2018.9青岛网络预选赛(C)
传送门:Problem C https://www.cnblogs.com/violet-acmer/p/9664805.html 题意: 定义五个指令,判断能否从输入的n条指令中成功跳出循环,如果不 ...
- 【Maven】基础概念、仓库、构建与部属
1.常见的自动化构建工具有: make.ant.maven.gradle,gradle是目前最新的,maven是目前最常用的. Eclipse是一种半自动化构建工具,主要体现在把:java文件-> ...
- IDEA如何自动提示并补全syso和main呢?
myeclipse使用若干年了,syso和main也被打过无数遍,切换到IDEA开发工具中,一按,天啦,竟然没有自动补全,顿时觉得IDEA弱爆了,经过摸索之后,IDEA终结没有令人失望.可以通过配置L ...
- vue2.0 之事件处理器
事件绑定v-on(内置事件) <template> <div> <a v-if="isPartA">partA</a> <a ...
- python中的位运算符
按位运算符是把数字看作二进制来进行计算的.Python中的按位运算法则如下,下表中变量 a 为 60,b 为 13,二进制格式如下: a = 0011 1100 b = 0000 1101 ----- ...
- Golang面向过程编程-函数
Golang面向过程编程-函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是函数 简单的说函数的作用就是把程序里多次调用的相同的代码部分定义成一份,然后起个名字,所有的 ...
- 在SpringBoot2.0及Spring 5.0 WebMvcConfigurerAdapter已被废弃,目前找到解决方案就有两种
1 直接实现WebMvcConfigurer (官方推荐) 例如: @Configuration public class WebMvcConfg implements WebMvcConfigure ...