运维平台的建设思考-元数据管理(四)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: 对于服务器的一些信息,如果数据量大了之后总是感觉力不从心,需要了解,但是感觉得到的这些信息不够清晰明了。 比如我们得到一台服务器,需要知道最基本的硬件配置,内存情况,磁盘空间情况,哪些磁盘空间问题需要关注,哪些磁盘空间问题可以忽略,swap的使用情况如何,服务器的操作系统版本,内核版本,上面运行有几个实例,是否启用了ASM,甚至服务器运行了多少天呢,这些信息看起来非常琐碎,也可以通过脚本得到,但是一直以来感觉都是比较笼统模糊。
对于服务器的一些信息,如果数据量大了之后总是感觉力不从心,需要了解,但是感觉得到的这些信息不够清晰明了。
比如我们得到一台服务器,需要知道最基本的硬件配置,内存情况,磁盘空间情况,哪些磁盘空间问题需要关注,哪些磁盘空间问题可以忽略,swap的使用情况如何,服务器的操作系统版本,内核版本,上面运行有几个实例,是否启用了ASM,甚至服务器运行了多少天呢,这些信息看起来非常琐碎,也可以通过脚本得到,但是一直以来感觉都是比较笼统模糊。
今天使用shell脚本进行了简单的改进。
我们来看看基本的效果情况。有了这些信息,元数据的管理总算是迈上了一个台阶。如果哪个磁盘空间又问题会单独显示出来一些信息。

要得到这样的结果,首先我们需要定义一个服务器列表,这个列表中会有一些服务器的基本信息,比如IP地址,服务器的业务归属,SN号,ILO IP等。剩下的信息就要靠自己来发掘了。
完整的脚本内容如下:
. ~/.bash_profile > /dev/null
BASEDIR="/home/hardcheck/tmp"
mkdir -p ${BASEDIR}/{tmplog,log} && cd ${BASEDIR}
DATE=`date +%Y%m%d%H%M`
LOG="hardcheck_${DATE}.log"
TMP_SCRIPT="newoscheck_${DATE}.sh"
 
exec 3>&1 4>&2 1>$LOG 2>&1
### 将服务器列表作为参数传递进来
SERVERLIST=$1
if [ -z "${SERVERLIST}" ] || [ ! -s "${SERVERLIST}" ] ; then
#cat /home/raidcheck/alldbserver-linux.txt|iconv -f GBK -t UTF8|grep yangjr |grep -v Solaris|grep -v nopingdb|grep -v "#1"> db_list.all.lst
#SERVERLIST=$BASEDIR/db_list.all.lst
echo 'There is no conf files provided'
fi

SSH="ssh -oConnectionAttempts=3 -oConnectTimeout=5 -oStrictHostKeyChecking=no"
SCP="scp -oConnectionAttempts=3 -oConnectTimeout=5 -oStrictHostKeyChecking=no"

echo "#start hardcheck"
### {{{ 以下为真正的hardcheck检查,远程调用
while read line
do
  tmp_host=`echo $line|egrep -iv '^$|^#|Solaris|nopingdb'`
  IP=`echo $tmp_host|awk '{print $4}'|sed 's/;//g'`      
  SN=`echo $tmp_host|awk '{print $1}'`      
  OWNER=`echo $tmp_host|awk '{print $2}'`   
  DB_INFO=`echo $tmp_host|awk '{print $11}'`
  DB_TYPE=`echo $tmp_host|awk '{print $8}'`
  ILO_INFO=`echo $tmp_host|awk '{print $5}'|sed 's/;//g'`
  add_info=`cat /home/hardcheck/tmp/check_os.sh |$SSH $IP`
  echo "$IP;$SN;$OWNER;$DB_INFO;$DB_TYPE;$ILO_INFO;$add_info" >> $TMP_SCRIPT
  #echo "$IP;$SN;$OWNER;$DB_INFO;$DB_TYPE;$ILO_INFO;$add_info"
done < ${SERVERLIST}
### }}}

### {{{ 邮件报警
cat $TMP_SCRIPT |tee $LOG|iconv -f GBK -t UTF8  > mail.txt
#### }}}

MAILTO="test@test.com"
/bin/bash $BASEDIR/beautymail.sh   -t "DBIP;DB用途;负责人;主备库;数据库类型;ILO信息;系统版本;内核版本;数据库实例;ASM实例;剩余内存;剩余swap;内存;磁盘空间;运行天数" -m ${MAILTO} -s "Disk Error Count Health Daily Check(${DATE})" ${BASEDIR}/mail.txt

这个脚本会额外调用一个重要的脚本check_os.sh这个是系统层面的检测。最后通过邮件的形式发送到指定的邮箱。
check_os.sh脚本内容如下:
OS_VER=`cat /etc/issue|sed  -e 's/Red Hat Enterprise Linux Server release/RHEL/g' -e 's/Red Hat Enterprise Linux AS release/RHEL/g' -e 's/ /_/g'|head -1`
OS_KER=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`

### MySQL版本
#MYSQL_VER=`mysql --disable-tee -N -e "select version()" < /dev/null`
MYSQL_EXISTS=`ps -ef|grep mysql|grep mysqld|grep -v grep |head -1`

### Oracle 版本
#export ORACLE_HOME=`cat /etc/oratab | tail -1 | awk -F: '{print $2}'`
#ORA_VER=`$ORACLE_HOME/bin/sqlplus -v`
ORA_LIST=`ps -ef|grep smon|grep -v grep|grep -v ASM|awk '{print $8}'|awk -F_ '{print $3}'`

### USE ASM
ASM_LIST=`ps -ef|grep smon|grep ASM|awk '{print $8}'|awk -F_ '{print $3}'`

### 内存剩余率
MEMORY_FREE=`/usr/bin/free|grep 'Mem:'|/bin/awk '{print $4/$2*100}'`
MEMORY_FREE=`echo "${MEMORY_FREE:0:5}%"`

### SWAP剩余率
SWAP_FREE=`/usr/bin/free|grep 'Swap:'|/bin/awk '{print $4/$2*100}'`
SWAP_FREE=`echo "${SWAP_FREE:0:5}%"`

### 磁盘空间使用率
df -hT|egrep -v 'Filesystem|/dev/shm'|while read line; do echo -e "`echo $line|awk '{print $7}'`:`echo $line|awk '{print $5}'`:`echo $line|awk '{print $6}'`"; done > /tmp/tmpdisk
cat /tmp/tmpdisk|while read line
do
  if [ `echo $line|awk -F':' '{print $3}'|sed 's/%//g'` -lt 80 ] ; then
    tmpline=`echo $line|sed 's/\///g'`
    sed -i "/$tmpline/d" /tmp/tmpdisk
  fi
done
if [ -s /tmp/tmpdisk ] ; then
  DISK_STAT=`cat /tmp/tmpdisk|sed -e ":a;N;s/\n/,/;ta"`
else
  DISK_STAT='OK'
fi
#rm -f /tmp/tmpdisk

### DB内存设置%
MEMORY_TOTAL=`/usr/bin/free|grep 'Mem:'|/bin/awk '{printf("%.f\n",$2*1000/1024/1024/1024)}'`
#MEMORY_MYSQL=`mysqladmin var|grep innodb_buffer_pool_size|awk -F'|' '{print $3}'|sed 's/ //g'`
#MYSQL_PERC=`mysql --disable-tee -N -e "select (${MEMORY_MYSQL}/${MEMORY_TOTAL}*100)"`
#MYSQL_PERC=`echo "${MYSQL_PERC:0:5}%"`

### DB服务时长
#if [ `/usr/bin/mysqladmin extended-status|grep -w Uptime|awk '{print $4}'` -lt 86400 ] ; then
#  UPTIME=`/usr/bin/mysql --disable-tee -e '\s'|grep Uptime|awk -F':' '{print $2}'|sed -e 's/\t//g'|sed -e 's/\t//g;s/\([0-9][0-9]*\) /\1/g;s/ /_/g'`
#else
#  UPTIME='OK'
#fi
UPTIME=`uptime |awk '{print $3}'`
echo  $OS_VER";" $OS_KER";" $ORA_LIST";" $ASM_LIST";" $MEMORY_FREE";" $SWAP_FREE";" $MEMORY_TOTAL";" $DISK_STAT ";"  $UPTIME

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
目录
相关文章
|
1月前
|
人工智能 Cloud Native 数据管理
媒体声音|阿里云王远:一站式数据管理平台的智能化跃迁
在DTCC 2024大会上,阿里云数据库产品管理与技术架构部负责人王远与IT168 & ITPUB特约嘉宾薛晓刚就数据库与AI技术的融合、云原生数据库的新趋势及向量数据库的支撑能力等热点话题进行了深入探讨。王远认为,Data+AI不仅是一个概念,已进入实际落地阶段。在智能化时代,单一数据库引擎难以满足多元业务需求,需要构建统一的数据管理能力,以支持不同工作负载。阿里云通过“瑶池”数据库品牌,提供云原生、平台化、一体化和智能化的数据库解决方案,助力用户应对复杂的数据管理挑战。
|
2月前
|
数据采集 DataWorks 数据管理
DataWorks不是Excel,它是一个数据集成和数据管理平台
【10月更文挑战第10天】随着大数据技术的发展,企业对数据处理的需求日益增长。阿里云推出的DataWorks是一款强大的数据集成和管理平台,提供从数据采集、清洗、加工到应用的一站式解决方案。本文通过电商平台案例,详细介绍了DataWorks的核心功能和优势,展示了如何高效处理大规模数据,帮助企业挖掘数据价值。
134 1
|
2月前
|
数据采集 SQL DataWorks
DataWorks不是Excel,它是一个数据集成和数据管理平台
【10月更文挑战第5天】本文通过一家电商平台的案例,详细介绍了阿里云DataWorks在数据处理全流程中的应用。从多源数据采集、清洗加工到分析可视化,DataWorks提供了强大的一站式解决方案,显著提升了数据分析效率和质量。通过具体SQL示例,展示了如何构建高效的数据处理流程,突显了DataWorks相较于传统工具如Excel的优势,为企业决策提供了有力支持。
128 3
|
4月前
|
运维 Kubernetes 监控
|
4月前
|
机器学习/深度学习 前端开发 数据挖掘
基于Python Django的房价数据分析平台,包括大屏和后台数据管理,有线性、向量机、梯度提升树、bp神经网络等模型
本文介绍了一个基于Python Django框架开发的房价数据分析平台,该平台集成了多种机器学习模型,包括线性回归、SVM、GBDT和BP神经网络,用于房价预测和市场分析,同时提供了前端大屏展示和后台数据管理功能。
124 9
|
5月前
|
Java 数据管理 API
构建基于Spring Boot的数据管理平台
构建基于Spring Boot的数据管理平台
|
7月前
|
关系型数据库 Linux Docker
datahub元数据管理平台从安装到使用一站式指南(未完)_datahub安装
datahub元数据管理平台从安装到使用一站式指南(未完)_datahub安装
datahub元数据管理平台从安装到使用一站式指南(未完)_datahub安装
|
5月前
|
弹性计算 运维 自然语言处理
属于Basis运维的、在Linux平台上运行的大模型测评 OS Copilot智能助手测评
OS Copilot是阿里云为Linux打造的智能操作系统助手,基于大模型,助用户进行自然语言问答、命令执行和系统运维。它简化了Linux操作,适合新手和运维人员。测评者作为IT架构师,发现OS Copilot使非技术背景人员也能操作Linux,接入命令可在官方文档找到。测试显示,通过"co"命令可与OS Copilot交互,实现生产任务融合。该工具提高了工作效率,尤其是对于遗忘具体命令时,非常有帮助。文档清晰,适合生产环境使用,值得进一步探索。
114 0
|
6月前
|
开发框架 运维 前端开发
构建一体化运维平台的八大功能
【6月更文挑战第6天】构建一体化运维平台的关键8个基本功能。
|
6月前
|
设计模式 运维 监控
运维一体化平台的能力要素
【6月更文挑战第7天】一体化运维平台的重要性,旨在建立覆盖运维全生命周期的统一平台,提升效率,保障业务连续性,实现数字化运维管理。

热门文章

最新文章