概述
写在前面
我的需求
- 嗯,有几台很老的机器,上面部署的几个很老的应用
- 我需要每周对机器上的一些内存,磁盘,线程,应用和数据库进行
巡查监控
,输出运维报告
- 因为是很老的东西,所以不敢随便乱动,怕掉坑里.
- 每次巡查都是通过通过命令行的方式一个一个指标处理的。
我是这样做的
- 写了一个
巡查脚本
,输出一些需要监控的核心指标
- 脚本获取指标只使用系统自带的一些命令,没有安装任何工具。
- 这里要说明:这种方式很 old,对于这样的多机器
自动化巡查监控
- 如果只是基础指标监控,
轻量
一点可以使用: Ansible
利用template
等模块,魔法变量
、系统变量
直接获取指标信息
- 或者
ansible-galaxy
找找有没有相关的角色
- 如果需要
告警
、监控触发器
、自动发现
、主被动监控
之类的功能,则需要部署一些重量级
的: - 可以使用
Prometheus
、Zabbix
、Nagios
、Cacti
等 - 通过容器化的方式也是很容易实现的。
我的生命不长,但是,如你所说,我是自己生命的主宰。-----《阳光姐妹淘》
下面就脚本和小伙伴简单介绍下,如果小伙伴也有我这样的情况,可以参考。主要监控信息有以下几部分内容
- 系统基础信息
- 内存交换分区相关信息
- CPU相关信息
- 磁盘和IO相关信息
- 进程相关信息
- 网络相关信息
系统基础信息
系统基础信息包括一下几部分:
- 内核信息
- 操作系统版本
- 当前时间及系统运行时间
- 当前登录用户数
┌──[root@vms81.liruilongs.github.io]-[~]
└─$sh shell.sh bash_os
SPN 日常巡查脚本输出
############## 系统基础信息 #######
------------------------------------
|内核信息: 3.10.0-693.el7.x86_64
------------------------------------
|操作系统版本: CentOS Linux release 7.4.1708 (Core)
------------------------------------
|当前时间及运行时间: 18:06:22 up 9 min
------------------------------------
|当前登录用户数: 1 user
------------------------------------
对应的脚本中的函数
function bash_os() {
# "系统基础信息"
#内核信息
kernel=$(uname -r)
#操作系统版本
release=$(cat /etc/redhat-release)
#主机名称
hostname=$HOSTNAME
#当前时间及运行时间
dateload=$(uptime | awk -F "," '{print $1}')
# 当前登录用户数
users=$(uptime | awk -F "," '{print $2}')
echo -e "n