Liunx运维监控_shark巨菜_基础篇

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

 

Liunx运维监控_shark巨菜_基础篇

 

一、监控重要性

单单从“监控”两个字来谈,范围之广可以涵盖我们生活的方方面面,我们生活和工作中处处可见视频监控的摄像机;机房中的电压电流监控、干湿计、温度计;值班室的网络监控,网站流量监控等等都是监控的范畴。

一个完备的监控系统能够提供7x24小时的监控与报警功能。它能够检测网络、网络设备、服务器、数据库、和各种应用系统的运行状况;可以及时发现将要出现的问题,并通过短信、Email等方式通知、警告运维管理人员,以便运维管理人员能够实时了解系统的运行情况,对故障进行及时的处理,从而避免造成重大损失。

二、监控的对象与分类

监控的对象就是想知道的状态的一个集合,也可以说监控的对象就是那些能够影响系统运行的稳定性、高效性的相关项目。

通常情况下,我们可以将监控对象这么来分类:

1.   服务器监控。主要监控服务器如:CPU负载、内存使用率、磁盘使用率、登录用户数、进程状态、网卡状态等。

2.   应用程序监控。主要监控该应用程序的服务状态、吞吐量、响应时间等。不同的应用程序需要监控的项目也不尽相同,这里无法一一列举。

3.   数据库监控。之所以把数据库监控单独列出来,是因为他的重要性。一般监控数据库状态,数据库表或者表空间的使用情况,是否有死锁,错误日志,性能信息等等。

4.   网络监控。主要监控当前的网络状况,网络流量和链接状态等。

三、监控的阶段

我们根据系统监控的工作过程把监控分为:数据收集、数据处理、数据呈现三个阶段(监控系统本身并没有严格的分类标准)。

1.   数据收集。收集阶段负责从操作系统装载数据、获得数据值,传输或存储数据。

l  使用系统工具

系统中的监控工具没有标准,输出的数据格式各不相同。有的具备传输功能、有的能监控多个对象、有的功能单一、有的相对完善。

l  通过内核工具

通过内核模块来获取系统、内核工作状况的数据,例如oprofilesystemtap。这个方法很有效,但是一般需要单独安装软件包(例如kernel-debuginfo),而且每当内核升级的时候相关程序的升级和代码一致性问题也需要考虑。

l  /proc虚拟文件系统

通过/proc虚拟文件系统是一个比较快速、高效的进行系统监控的方法。使用/proc的主要缺点是必须频繁的进行访问、/proc里面的信息需要经过解释才能被用户读懂,但是相对的比使用内核工具更方便

2.   数据处理

处理阶段负责将来自多个数据源的数据结合在一起,这种方法减少了监控对操作系统的负担提高了效率;决定数据值是否改变并过滤它们;还对数据进行必要的转换和计算。这个阶段概况的说就是对数据进行处理、计算,准备好需要呈现的数值、图片,或者需要发送的通知的内容。

3.   数据呈现

数据呈现就是把处理过后的数据通过系统的标准输出(屏幕、远程界面)、绘图工具(如rrdtool)生成的图片、电子邮件、短信等方式,提供给系统管理人员,以便根据这些信息及时的掌握系统的运行情况,发现潜在问题。

四、监控的分类

按照规模把监控系统分为:工具监控、监控系统(平台)监控。例如:freetopsysstatdstat等。

1.   工具监控

工具监控一般包括:操作系统自带工具,其他组织提供的工具,根据自己的独特需要自行编写的监控脚本几种。系统自带工具一般只能提供系统某一个方面的情况,通常输出信息不能做到通俗易懂。例如:uptime free iostat。第三方工具一般相对系统自带工具在可读性上有一定的提高,有的还能同时监控系统多方面的信息。例如:htop dstat sysstat

2.   监控系统(平台)监控

之所以叫系统(平台)是因为起功能相对强大,一套系统加上一些扩展工具就可以满足我们所有的监控需求。这种系统一般都和SNMP协议,RRDtool工具结合,进行信息采集和图像绘制工作。常用的监控系统有:mrtggangliazabbixcactinagios等。

按照监控方式,可以把监控系统分为:内部监控、外部监控。例如:系统命令和Nagios系统。

1.   内部监控

内部监控一般是通过监控工具、监控代理软件或自制脚本对服务器自身的运行状态进行监控和报告,报告信息可以直接显示在终端屏幕上、记录到日志中或者传输给监控系统集中处理。

2.   外部监控

外部监控一般常用来对服务器的连通性、服务状态、指定页面等项目进行监控,因为这些项目都不需要受控服务器安装监控工具,都可以在监控系统上直接进行。

五、系统自带工具

首先要介绍的是常用来查看系统里面内存使用率的工具freefree命令和-m参数一起使用,可以把输出的信息转换成MB格式。如果想看到更多的信息可以使用图片中的选项。

free


free命令只需要注意空闲内存不包括buffers+cached就可以了。其他诸如uptimetop等命令就不介绍了,太基础了。看几个不太常用但是也比较给力的吧。

dstat命令可以提供可读性稍高的,多方面的系统资源信息。命令附带参数较多,在下面的例子里面使用了“-tlcpmsn  5 5”这样的参数,用来显示系统的时间、系统负载、cpu使用率、进程、内存使用率、交互分区使用率、网络传输数据库的信息,并且每5秒汇总一次,记录5次之后停止。


dstat

系统里面的另一个自带但是不会默认安装的工具是iptrafiptraf可以启动一个类似#system-config-network-tuiTUI界面(Text User Interface 文本用户界面),通过iptraf提供的这样的界面可以简化监控工具的使用难度。


iptraf

六、第三方工具

第三方的监控工具一般在界面友好度和使用简易度上会比系统自带的工具有一定的提高。下面我们看几个第三方的工具。其中比较常用的一个是htop,可以用它来替换系统默认的top工具了,主要是因为htop工具在界面友好度和操纵简便性上都较原始的top工具有了比较大的提高。


htop1


htop2

另一个比较常用的第三方工具是nloadnload工具可以把网络流量转换成比较已读的柱状图的形式,并不需要启动图形界面,只是使用各种特殊符号来绘制。这种方式可以让我们直观的了解到现在系统的网络带宽使用情况;在操纵简便性上也比较好,可以使用键盘上的←→按键在不同的网络接口中切换;也可以牺牲柱状图的功能把所有接口显示在一个屏幕上。


nload1


nload2

第三方工具中最后介绍的也是功能最强大的nmonnmon工具是IBM公司为AIX系统开发的性能监控工具,在2009727日开源。从下面的截图中我们不难看出nmon可以涵盖需要监控的各个方面,从CPU资源到网络,从磁盘IO到文件系统使用。而且可读性和易用性也很好。


nmon1


nmon2

七、自制脚本监控

除了系统自带的和第三方提供的监控工具之外,我们还可以根据自己的需求,对这些工具提供的信息进行筛选、过滤或者进一步的处理,从中得到我们需要的信息。例如,我们只需要知道磁盘的空间是否不足,但是我们并不需要经常的查看磁盘的用量。又如,我们只需要再某个进程意外终止的时候进行某种补救操作,而不需要每次都去查看进程是否在运行等。

下面我们来看一个用来监控磁盘空间的脚本“monitor_diskusage.sh”:

#!/bin/bash

DIR="/home/shell"

DISKFUL=`LANG=C df -H $DIR|awk '{print $5}'|grep -v Use|cut -d"%" -f1`

while true;do

  until [ $DISKFUL == 80 ];do

    echo "Disk space normal" | mail -s "Disk space normal" root@localhost

    DISKFUL=`LANG=C df -H $DIR|awk '{print $5}'|grep -v Use|cut -d"%" -f1`

    sleep 86400

  done

  echo echo "Over 80%" | mail -s "Over 80%" root@localhost

  DISKFUL=`LANG=C df -H $DIR|awk '{print $5}'|grep -v Use|cut -d"%" -f1`

  sleep 86400

done

在脚本中使用了whilesleep,通过whiletrue进行脚本无限循环的执行,通过sleep控制执行次数;通过“&”这个方式达到此监控脚本一直在后台执行。再加上whilesleep可以让脚本每天执行一次检查报告的目的。在实际工作中我们可以把监控的目录修改成网站的网页存放目录。


shell1


shell2

平时在工作中还有需要对系统的进程是否运行,或者服务是否正常进行监控。我们也可以利用上面这个脚本中使用的while true与“&”来实现一个简单的监控功能。具体脚本如下“check_process.sh”。

#!/bin/bash

process="httpd"

while true; do

  result=`pstree | grep $process`

  if [ $? -eq 1 ]; then

    echo "$process not running." | mail -s "$process check" root@localhost

  else

    echo "$process is running." | mail -s "$process check" root@localhost

  fi

  sleep 600

done


shell3

八、sysstat

sysstatLinux系统中常用的工具包,它主要的用途是观察服务器负载,比如CPU和内存的占用率、网络使用率和磁盘写入与读取的速度等。sysstat功能上可以做到和其他监控工具一样的即时查看,也可以生成日志文件记录资源使用情况。

sysstat工具包中包括多个可执行程序:iostat(用于统计CPUI/O设备的数据);mpstat(用于统计CPU相关的数据);sadf(用于把数据转换成方便导入数据库的格式);sar(收集报告保存系统活动信息)。


sysstat1


sysstat2

sysstat工具包中还有三个比较重要的程序,他们的作用就是生成/var/log/sa/sa19这样的日志文件,用来存储信息。三个工具都在/usr/lib/sa/目录中分别是:sa1(收集并存储系统活动信息写入二进制文件);sa2(收集每天的系统活动信息写入日志文件);sadc(信息收集工具)。

其实可以通过以下的简单shell命令,把sysstat的数据转换成csv格式的文件。再到windows系统中经过excel软件的加工就可以形成容易读懂的柱状图了。


sysstat3


sysstat4










本文转自 sharkyan 51CTO博客,原文链接:http://blog.51cto.com/sharkyan/579750,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
Web App开发 监控 关系型数据库
|
2月前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
68 4
|
2月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
57 4
|
16天前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####
|
25天前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
49 4
|
2月前
|
存储 运维 监控
高效运维:从基础架构到自动化管理的全面指南
【10月更文挑战第11天】 本文将深入探讨如何通过优化基础架构和引入自动化管理来提升企业IT运维效率。我们将从服务器的选择与配置、存储解决方案的评估,到网络的设计与监控,逐一解析每个环节的关键技术点。同时,重点讨论自动化工具在现代运维中的应用,包括配置管理、持续集成与部署(CI/CD)、自动化测试及故障排除等方面。通过实际案例分析,展示这些技术如何协同工作,实现高效的运维管理。无论是IT初学者还是经验丰富的专业人员,都能从中获得有价值的见解和实操经验。
77 1
|
2月前
|
运维 监控 测试技术
构建高效运维体系:从监控到自动化的实践之路
【10月更文挑战第9天】 在当今信息技术飞速发展的时代,运维作为保障系统稳定性与效率的关键角色,正面临前所未有的挑战。本文将探讨如何通过构建一个高效的运维体系来应对这些挑战,包括监控系统的搭建、自动化工具的应用以及故障应急处理机制的制定。我们将结合具体案例,分析这些措施如何帮助提升系统的可靠性和运维团队的工作效率。
54 1
|
2月前
|
存储 运维 监控
高效运维管理:从基础架构优化到自动化实践
在当今数字化时代,高效运维管理已成为企业IT部门的重要任务。本文将探讨如何通过基础架构优化和自动化实践来提升运维效率,确保系统的稳定性和可靠性。我们将从服务器选型、存储优化、网络配置等方面入手,逐步引导读者了解运维管理的核心内容。同时,我们还将介绍自动化工具的使用,帮助运维人员提高工作效率,降低人为错误的发生。通过本文的学习,您将掌握高效运维管理的关键技巧,为企业的发展提供有力支持。
|
2月前
|
运维 监控 安全
构建高效运维体系:从监控到自动化的全面指南在当今数字化时代,运维作为保障系统稳定性和效率的重要环节,其重要性不言而喻。本文将深入探讨如何构建一个高效的运维体系,从监控系统的搭建到自动化运维的实施,旨在为读者提供一套完整的解决方案。
本文详细介绍了高效运维体系的构建过程,包括监控系统的选择与部署、日志分析的方法、性能优化的策略以及自动化运维工具的应用。通过对这些关键环节的深入剖析,帮助运维人员提升系统的可靠性和响应速度,降低人工干预成本,实现业务的快速发展和稳定运行。
|
2月前
|
运维 监控 网络安全
Python 在网络运维方面的自动化应用实例
Python 在网络运维方面的自动化应用实例