《Linux服务器的监控》
本文地址: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
代码截图如下,有四个
3.2.2 进程监控脚本 process.sh
代码GitHub地址:http://t.cn/Ro0R9pG
代码截图如下
3.2.3 流量监控脚本 network.sh
代码GitHub地址:
代码截图如下:
3.2.4 流量分析统计脚本 tongji.sh
代码GitHub地址:http://dwz.cn/6b8y48
代码截图如下:
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服务器的监控》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- [转]PHP时区/MySql时区/Linux时区
本文转自:https://blog.csdn.net/watermelonmk/article/details/82669062 问题背景:手头上有个国外的项目,为了所谓的国际化,得将时区修改至[美国 ...
- 结构型---桥接模式(Bridge Pattern)
定义 桥接模式即将抽象部分与实现部分脱耦,使它们可以独立变化.桥接模式的目的就是使两者分离,根据面向对象的封装变化的原则,我们可以把实现部分的变化封装到另外一个类中,这样的一个思路也就是桥接模式的实现 ...
- mongodb "Element '{0}' does not match any field or property of class" 异常的解决方法
在序列化的对象上增加 [BsonIgnoreExtraElements]
- 浅谈spring中AOP以及spring中AOP的注解方式
AOP(Aspect Oriented Programming):AOP的专业术语是"面向切面编程" 什么是面向切面编程,我的理解就是:在不修改源代码的情况下增强功能.好了,下面在 ...
- 学会JavaScript函数式编程(第1部分)
摘要: JS函数式编程入门. 原文:学会使用函数式编程的程序员(第1部分) 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 在这篇由多部分组成的文章中,接下来将介绍函数式编程的一些概念 ...
- react学习(一)
组件和属性(props) 函数式组件: function Welcome(props) { return <h1>Hello, {props.name}</h1>; } 渲染一 ...
- php的TS和NTS的区别
ts(Thread-Safety)即线程安全,多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他 线程不能进行访问直到该线程读取完,其他线程才可使用.不会出现数据不一致或者数 ...
- js 实现二级联动
onchange 事件 <body> <select id="province" onchange="func1()"> <opt ...
- Spring学习之旅(七)基于XML配置与基于AspectJ注解配置的AOP编程比较
本篇博文用一个稍复杂点的案例来对比一下基于XML配置与基于AspectJ注解配置的AOP编程的不同. 相关引入包等Spring AOP编程准备,请参考小编的其他博文,这里不再赘述. 案例要求: 写一 ...
- C# 利用PrintDocument定制打印单据
本文是利用PrintDocument定制打印单据的小例子,仅供学习分享使用,如果不足之处,还请指正. 涉及知识点: PrintDocument :从 Windows 窗体应用程序打印时,定义一种可重用 ...