本文地址:http://www.cnblogs.com/aiweixiao/p/7131532.html

原文地址(公众号):http://t.cn/RKwmqUs

点击关注 微信公众号

1. 监控概要

Linux服务器要保证高可用性,就要对其进行有效的监控,实时了解到服务器的运行状况,各项性能指标是否正常,以防患以未然,进行运维日志的记录,图形化的监控,出现问题的消息报警机制,都是保证Linux服务器能正常对外提供服务的先决条件。

2. 监控的内容

监控,是预防的其中的一项重要工作。这里先说说我需要监控的内容。系统负载、cpu使用率、内存占用、磁盘空间、网络流量、端口、进程、apache或tomcat的连接数、mysql的运行状态这些都是需要监控的东西。要了解服务器每时每刻的整体运行状态,单靠几个Linux自带的性能监测命令是很难实现的。所以,利用shell脚本和开源监控工具进行服务器监控成为两个主要的选择。

3.监控的方法

首先是要明白Linux服务器监控的一些常见命令,以及这些命令编写的监控脚本,最后,一些成熟的开源监控工具也是必要的。

3.1 常见监控命令


1) 【iostat】:iostat命令用来显示存储子系统的详细信息,通常用它来监控磁盘 I/O 的情况。

2)【meminfo 和 free】: cat /proc/meminfo  free

3)【mpstat】:实时系统监控工具,多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息

4)【netstat】:显示了大量跟网络相关的信息

5)【nmon】:开源工具,用以监控 Linux 系统的性能,下载及安装

6)【pmap】:pmap 命令用来报告每个进程占用内存的详细情况,可用来看是否有进程超支了,该命令需要进程 id 作为参数。

7)【ps pstree】:ps 告诉你每个进程占用的内存和 CPU 处理时间,而 pstree以树形结构显示进程之间的依赖关系,包括子进程信息

8)【sar】:sar 可用来显示 CPU 使用率、内存页数据、网络 I/O 和传输统计、进程创建活动和磁盘设备的活动详情。

9)【strace】:诊断进程工具,如 strace ls ,但是被诊断进程会变慢

10)【tcpdump】网络监控工具,用来做基本的协议分析,看看那些进程在使用网络以及如何使用网络。

11)【uptime】:该命令告诉你这台服务器从开机启动到现在已经运行了多长时间了

12)【 vmstat 】来监控虚拟内存

13)【Wireshark】:是一个网络协议检测程序,让您经由程序抓取运行的网站的相关资讯

14)【dstat】 多类型资源统计工具:该命令整合了vmstat,iostat和ifstat三种命令

15)【htop】: 更加友好的top,两者区别见:“关于htop和top的比较

16)【ss】: 用来记录套接字统计信息,它可以显示类似netstat一样的信息,同时也能显示更多TCP和状态信息

17)【lsof】 : 列表显示打开的文件

18)【iftop】是另一个基于网络信息的类似top的程序。它能够显示当前时刻按照带宽使用量或者上传或者下载量排序的网络连接状况

3.2 shell监控脚本


这里提供 四个脚本(performance.sh 性能监控,process.sh 进程监控,network.sh 流量监控,tongji.sh流量分析统计),并使用crontab定时执行脚本进行监控数据的记录,形成每天的监控日志放在如下相应的文件夹,并且超过自己设定的告警值后发邮件通知,那些有免费短信通知功能的邮箱如腾讯企业邮箱,163邮箱可以尝试一下,收到邮件告警后很快就能收到短信了,很方便。

3.2.1 性能监控脚本 performance.sh

代码GitHub地址:http://t.cn/Ro0H1EV

代码截图如下,有四个

性能监控脚本01-监控cpu负载
 
 

性能监控脚本02-监控cpu使用率
 
 

性能监控脚本03-监控交换分区
 
 

性能监控脚本04-监控磁盘空间

3.2.2 进程监控脚本 process.sh

代码GitHub地址:http://t.cn/Ro0R9pG

代码截图如下

进程监控脚本process.sh

3.2.3 流量监控脚本 network.sh

代码GitHub地址:

代码截图如下:

流量监控脚本 network.sh

3.2.4 流量分析统计脚本 tongji.sh

代码GitHub地址:http://dwz.cn/6b8y48

代码截图如下:

流量分析统计脚本 tongji.sh

3.3 监控工具


3.3.1) Cacti+Nagios

Cacti】:Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。

Nagios】: Nagios是一个监视系统运行状态和网络信息的监视系统。能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等

3.3.2)Zabbix

Zabbix】: Zabbix除了能监视各种网络参数,保证服务器系统的安全运营之外,还能提供如短信、邮件、jabber等通知机制以让系统管理员快速定位/解决存在的各种问题。基本上能实现cacti+nagios的功能

关注微信公众号
 

《Linux服务器的监控》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. .Net 登陆的时候添加验证码

    一.ASPX 登陆界面验证码 1.登陆验证码图片和输入验证码框 <asp:TextBox ID="txtValiCode" runat="server" ...

  2. .net core2.0+nginx+Ubuntu14.04【一个小白的初次尝试】

    新的业务来了,需要使用linux环境部署web服务,作为一个C#的懒惰程序员,就这么上了车[狗脸],废话不多说,跟我一样的小白请看,大神请绕路. 站点暂时没有使用Docker部署,为什么呢,因为我还没 ...

  3. SQL Server函数之空值处理

    coalesce( expression [ ,...n ] )返回其参数中第一个非空表达式. Select coalesce(null,null,'1','2') //结果为 1 coalesce( ...

  4. 第四讲 smart qq 获取联系人信息 ,分组 好友 群聊

    首先从post一下  http://s.web2.qq.com/api/get_user_friends2 这个链接获取分组categories ,好友信息 friends,info. string ...

  5. ASP.NET Core 中使用EF Core 将实体映射到数据库表的方法(SQL Server)

    前段时间听过一个关于使用ASP.NET Core建立项目的视频.其中使用EF Core映射到数据库的部分是按部就班地学习.今天自己建立项目时,有些步骤已经有一些遗忘.所以写下这篇文章,顺便理清思路. ...

  6. 如何理解php的依赖注入

    之前写过关于php依赖注入的文章..最近发现有的朋友对这个还是理解模糊,在这里我想写个简单的实例帮助朋友们理解下...传统的思路是应用程序用到一个A类,就会创建A类并调用A类的方法,假如这个方法内需要 ...

  7. java使用POI将数据导出放入Excel

    本文主要是将数据库取出的数据按照自定义的行列格式导出到excel中,POI则是实现我们需求所用到的技术. POI介绍 使用spring boot导入相关依赖 获取数据(自行处理) 完整代码实例:创建e ...

  8. Grunt 入门操作指南

    0.简介 grunt是一个任务自动运行器.简单来讲,用了以后,再也不用每次修改sass后,去生成下css,也再也不用去一遍遍压缩js了 ,也再也不用修改了点点东西就要去刷新页面,也不需要去复杂地建立一 ...

  9. python笔记之time模块

    方法一:time.perf_counter() 说明:返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间.由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的. 代码示 ...

  10. [DOM基础]offsetHeight,clientHeight,scrollHeight,innerHeight,outerHeight等属性的解释

    由于经常搞混这几个属性,所以查找资料总结一下,方便以后翻出来温习. 一.偏移量-以offset开头的 1.offsetHeight:元素在垂直方向上占用的空间大小,像素.包括元素的高度.可见的水平滚动 ...