系统监控脚本说明
Posted 数通畅联
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统监控脚本说明相关的知识,希望对你有一定的参考价值。
系统管理员的任务比较艰难,因为需要监控服务器、用户、日志,还得创建备份等。对于大多数重复性的任务,一般管理员都会写一个自动化脚本来完成这些任务。
在以往运维中,查询系统、数据库等参数都比较困难,需要手动输入对应的命令,极其不方便。脚本也是我们部门的工作,于是制作了监控脚本用于简化操作。
1基础介绍
性能监控脚本能够帮助开发人员或运维人员了解当前系统、软件的健康程度,同时也是衡量业务服务质量的依据。
1.1名称解释
Linux内核最初只是由芬兰人林纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。Linux是一套免费使用和自由传播的类Unix操作系统;是一个基于POSIX(可移植操作系统接口)和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
1.2脚本语言
Shell是一种脚本语言,那么就必须有解释器来执行这些脚本,常见的脚本解释器有:
bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。
sh: 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。
另外还有:ash、 csh、 ksh等。
1.3语法结构
同传统的编程语言一样,shell提供了很多特性,这些特性可以使你的shell脚本编程更为有用。
1.3.1基本语法
首先学习下基础的命令。
1.3.1.1Shell变量
使用场景:变量是shell传递数据的一种方式,用来代表每个取值的符号名。当shell脚本需要保存一些信息时,如一个文件名或一个数字,就把它存放在变量中。
1.3.1.2设置规则
1.变量名称可以由字母,数字和下划线组成,但不能以数字开头,环境变量名建议大写,便于区分。
2.在bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。
3.变量用等号连接值,等号左右两侧不能有空格。
4.变量的值如果有空格,需要使用单引号或双引号包括。
1.3.1.3变量分类
Linux Shell中的变量分为用户自定义变量、环境变量、位置参数变量和预定义变量。可以通过set命令查看系统中存在的所有变量。
1.系统变量:保存和系统操作环境相关的数据。$HOME、$PWD、$SHELL、$USER等。
2.位置参数变量:主要用来向脚本中传递参数或数据,变量名不能自定义,变量作用固定。
3.预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
1.3.1.3.1预定义变量
1.3.1.3.2自定义变量
用户自定义的变量由字母或下划线开头,由字母,数字或下划线序列组成,并且大小写字母意义不同,变量名长度没有限制。
在使用变量时,要在变量名前加上前缀“$”
使用echo 命令查看变量值。eg:echo $A
1.3.1.4条件语句
使用场景:
1.单if语句:针对条件单一的情况使用单if语句;
2.if-else语句:针对两种情况的时候使用if-else语句;
3.多重if语句:针对多个条件的情况,并且常用于区间判断;
4.嵌套if语句:针对多种条件多种情况的场景。
if语句,包括:
1.if [ 表达式 ] then 语句 fi
2.if [ 表达式 ] then 语句 else 语句 fi
3.if [ 表达式] then 语句 elif[ 表达式 ] then 语句 elif[ 表达式 ] then 语句 …… fi
1.3.1.5循环语句
1.3.1.5.1for 循环
使用场景:for循环语句非常适用于列表对象无规律,循环次数未知,完整遍历整个取值列表,且列表来源已固定的场合。
1.3.1.5.2while循环
使用场景:控制循环次数,操作对象按数字顺序编号、按特定条件执行重复操作等情况,适合使用while循环语句。while循环的使用场景一般是执行命令或读入一个文件,然后直接对命令或文件的每一行内容进行分析。
1.3.1.6grep命令
grep的全称是global regular expression print,是linux中最强大的文本搜索命令之一,常用于搜索文本文件中是否含有某些特定模式的字符串。该命令以行为单位读取文本并使用正则表达式进行匹配,匹配成功后打印出该行文本。
使用场景:用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。典型组合示例:
选项:
规则表达式:
举例:
1.3.1.7awk命令
使用场景:一个强大的文本分析工具,把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。常用于分割linux命令查出语句,获取其中一部分数据。
语法格式:
awk [选项] '指令' 操作文件
常用选项:
awk的内置变量:
举例,获取查出的记录,第一行第二列值:
1.3.1.8组合用法
介绍完基本命令,下面用典型组合模式演示一个例子,查询虚拟ip地址。
1.使用命令ip add查询,如下图:
2.加入grep命令,过滤eth0,
命令:ip add | grep eth0,如下图:
3.加入awk命令,查询第3行,
命令:ip add | grep eth0 | awk 'NR==3',如下图:
4.继续调整awk命令,查询第2列,
命令:ip add | grep eth0 | awk 'NR==3print $2',如下图:
5.加入cut命令,截取字符串,获取虚拟ip,
命令:ip add | grep eth0 | awk 'NR==3print $2' | cut -c 1-11,如下图:
1.3.2脚本介绍
通过基础命令编写可执行脚本。
1.3.2.1创建脚本
一个shell脚本通常包含如下部分:
1.首行
第一行内容在脚本的首行左侧,表示脚本将要调用的shell解释器,内容如下:
说明:
#!符号能够被内核识别成是一个脚本的开始,这一行必须位于脚本的首行,/bin/bash是bash程序的绝对路径,在这里表示后续的内容将通过bash程序解释执行。
2.注释
注释符号# 放在需注释内容的前面。
3.内容
可执行内容和shell结构。
1.3.2.2脚本权限
一般情况下,默认创建的脚本是没有执行权限的,如下图:
没有权限不能执行,需要赋予可执行权限,如下图:
1.3.2.3执行脚本
输入脚本的绝对路径或相对路径,如下图:
2还原备份脚本
一键还原备份脚本,用于升级产品出现的问题,需要回滚时使用。执行还原备份脚本,快速将产品退回到之前的版本,保障生产环境的正常运行使用。
2.1流程框图
说明:
1.设置需要回滚server的路径(旧版本)
2.开始回滚server
3.查找当前运行server
4.停止当前运行的server
5.还原备份server
6.完成回滚server
2.2调用方法
1.设置产品名称
2.设置备份产品路径
3.xxx换成实际产品编码
2.3运行效果
执行脚本结果如下:
3监控系统参数
监控系统参数脚本,多用于环境搭建、问题排查时使用。当服务出现故障时,使用监控系统参数脚本,可以快速了解当前系统的性能,分析原因解决问题。
3.1流程框图
3.2配置步骤
设置网卡名称,名称查找命令:ip add
3.3运行效果
4查询mysql命令
查询MySQL命令脚本,目的是帮助运维人员快速执行sql命令,排查MySQL配置,确认参数是否调优,保障MySQL的稳定运行。
4.1流程框图
4.2使用方法
1.设置IP
2.设置数据库账户
3.设置数据库连接密码
4.3选项说明
4.4运行效果
填入数字执行对应预置sql,如下图:
输入10,进入mysql命令行,如下图:
5编写心得
系统、产品一旦上线跑起来,自然希望它一直相安无事,不要宕机、无响应或者慢腾腾的,这就需要我们监视系统、产品的运行状况,及时发现问题并加以处理。
5.1知识收获
用shell写脚本一直都是用比较简单的语法,这次通过网上样例,才知道原来可以用shell脚本写可以与我们交互的命令。比如输入1、2、3等数字执行不同的命令,这也是我本次最大的收获。我也是通过样例改造成符合我们需求的脚本。
5.2注意事项
撰写脚本的目的在于对项目体系的完善,对于产品不能涉及到的,进行补充完善,使客户体验更好,安全性更高。因此不要过于依赖脚本,要知道产品是第一位的,脚本只是对项目体系的维护,不能作为主要方向。对于脚本的使用要适度,不要过于依赖,最好是一开始就是正确的,而不是后续再调整完善。
5.3未来考虑
写一个shell脚本用来自动化完成系统管理员所要完成的常规任务,这可能在多数情况下,尤其是对于新手而言十分有用,他们能通过该脚本获取到大多数想要的信息,包括系统、网络、用户、负载、内存、主机、内部IP、外部IP、开机时间等。
代码语言都是相通的,整体设计和实现思路也类似,因此对于基础知识的学习和整体概念的训练不能松懈,要不断深化。因此在之后的工作中,自己仍需要不断积累和夯实自己的基础,只有根基稳,才能不断地提高自己。
以上是关于系统监控脚本说明的主要内容,如果未能解决你的问题,请参考以下文章