系统监控脚本说明

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、开机时间等。 

代码语言都是相通的,整体设计和实现思路也类似,因此对于基础知识的学习和整体概念的训练不能松懈,要不断深化。因此在之后的工作中,自己仍需要不断积累和夯实自己的基础,只有根基稳,才能不断地提高自己。 

以上是关于系统监控脚本说明的主要内容,如果未能解决你的问题,请参考以下文章

nagios通过脚本对系统进行定制监控

10个不错的绘制流程框图的工具推荐

使用shell脚本监控少量服务器并发送微信告警信息

水泵物联网监控系统

光伏物联网监控系统

Linux inotifywait常用参数说明