# 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脚本收集服务器基本信息并入库的更多相关文章

  1. shell脚本查看服务器基本信息

    #!/bin/sh #电脑概览 #电脑型号 ComputerModel=`/usr/bin/sudo /usr/sbin/dmidecode | grep -A2 "System Infor ...

  2. Linux shell脚本判断服务器网络是否可以上网

    Linux shell脚本判断网络畅通 介绍 在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需要有个函数来判断服务器网络状态 我们可以通过curl来访问 www ...

  3. Shell脚本分析服务器性能

    概述 我们原先在服务器上想分析性能指标,需要执行一系列的linux命令.对于linux命令不熟悉的人来说,比较困难 现在有一套集成的shell脚本,把常用的linux命令都包含在里面,一键式分析性能瓶 ...

  4. 如何用shell脚本取出服务器图片

    一 ,SHELL 是什么 (1)shell是一种命令行解释器. (2)是用户和Linux内核之间沟通的桥梁,属于中间件.见下图 (3)交互流程:shell接受用户输入的指令 =>将指令传达给Li ...

  5. 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 ...

  6. shell脚本实例

    备注:一些与传递给shell的参数相关的变量:$# 命令行参数的个数$? 调用命令的返回值$$ 当前进程的进程号$! 最后一个后台命令的进程号$0 命令行的第一个参数,也就是命令名$n 命令行的第n个 ...

  7. Linux Shell 脚本

    1. 写一个脚本,利用循环计算10的阶乘#!/bin/shfactorial=1for a in `seq 1 10`do       factorial=`expr $factorial \* $a ...

  8. 用java代码调用shell脚本执行sqoop将hive表中数据导出到mysql

    1:创建shell脚本 touch sqoop_options.sh chmod 777 sqoop_options.sh 编辑文件  特地将执行map的个数设置为变量  测试 可以java代码传参数 ...

  9. Linux shell脚本基础

    程序的组成: 程序:算法+数据结构 数据:程序处理的目标 数据结构:相互之间存在一种或多种特定关系的数据元素的集合 算法:处理数据的方式 编程风格: 面向对象:把所有的操作都转化为对象的方式. 面向过 ...

随机推荐

  1. 【洛谷P1463】反素数

    题目大意:给定 \(N < 2e9\),求不超过 N 的最大反素数. 题解: 引理1:不超过 2e9 的数的质因子分解中,最多有 10 个不同的质因子,且各个质因子的指数和不超过30. 引理2: ...

  2. Asp: Server.mapPath() 注意事项

    今天下午,在删除一个用户后,竟然发现该用户上传的图片还能正常显示. 郁闷了,怎么会这样? 为了再次验证这个结果,我新注册一个用户名,然后上传3张图片,接着删除这个用户,再查看刚刚上传的3张图片,竟然没 ...

  3. 洛谷 P1880 [NOI1995] 石子合并(区间DP)

    传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 这道题是石子合并问题稍微升级版 这道题和经典石子合并问题的不同在于,经典的石子合 ...

  4. 20190311 Java处理JSON的常用类库

    1. Gson 1.1. 背景 谷歌 1.2. 简单使用 Gson gson = new Gson(); System.out.println(gson.toJson(1)); // ==> 1 ...

  5. sql server复制数据到excel格式变成字符串

    sql server复制数据到excel格式变成字符串,结果数据都保存在第一个格子里面. 我点击连同标题一起复制,然后粘贴到excel,结果是这样子的.... 这不是我想要的结果,在网上查询了好多,结 ...

  6. 多目标遗传算法 ------ NSGA-II (部分源码解析)辅助变量 双链表操作 list.c

    /* A custom doubly linked list implemenation */ # include <stdio.h> # include <stdlib.h> ...

  7. JAVA记录-JSP页面获取服务器路径方式

    1.basePath方式 <% String path = request.getContextPath(); String basePath = request.getScheme()+&qu ...

  8. JAVA记录-添加错误页面友好提示

    1.web.xml加入以下配置 <error-page> <error-code>404</error-code> <location>/WEB-INF ...

  9. docker入门(三)

    docker容器IP"暴露"到外网(宿主机外) 首先将docker容器IP固定 Docker自身的4种网络工作方式,简略说明下: host模式,使用--net=host指定. co ...

  10. Dom4j工具类源码解析

    话不多说,上源码: package com.changeyd.utils;import java.io.File;import java.io.FileNotFoundException;import ...