Linux云主机 监控方案浅析

698 阅读10分钟

1、为何需要监控

监控是运维工程师的眼睛,它可帮助运维工程师第一时间发现系统的问题。

对于服务器的整个生命周期,都要和监控打交道:

  • 当有服务器上架,都需要加入比如CPU负载、内存、网络、磁盘等基础监控项;

  • 当服务器上开始跑应用时,需要加入对应的应用监控,比如Tomcat/Resin,MySQL等;

  • 当服务器进行维护时,需要暂停监控项的告警提示,否则当我们在维护MySQL,监控系统还会给我们报警说MySQL挂了。

以上操作,光靠手动去做将非常繁琐,监控系统需与其他运维系统共同协作来完成。举个例子,比如CMDB中一台服务器上架了,那么监控系统需自动为其加入基础监控项。

如果没有监控,我们就无法知道系统与应用的运行状况,当问题发生时,监控系统需第一时间发出告警信息;告警信息中除了出问题的节点,还应该有些数据和简单的分析。比如问题前后一段时间的CPU负载、网络状况等,以帮助接到报警的人员快速定位问题。

在出现故障以后进行问题分析时,还要靠监控系统。因为监控系统真实的记录了故障发生现场这台服务器的状况。我们可以通过不同纬度的分析,找出问题的原因。

2、三种 Linux云主机 监控方案

2.1、Linux 自带命令实现监控

在Linux环境下,可以通过Python或Shell命令来获取系统的状态信息,

常用的监控命令的如:

1、监控系统负载

[root@CloudBility ~]# uptime
 13:42:08 up 3 days, 4 min,  1 user,  load average: 0.05, 0.04, 0.05

2、监控内存使用情况

[root@CloudBility ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1016396      340256       95112       75516      581028      413272
Swap:             0           0           0

3、监控CPU使用情况

[root@CloudBility ~]# mpstat
Linux 3.10.0-514.26.2.el7.x86_64 (keegv) 	2019年03月01日 	_x86_64_	(1 CPU)

13时44分39秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
13时44分39秒  all    1.79    0.00    0.39    0.59    0.00    0.00    0.00    0.00    0.00   97.22

4、监控系统进程

[root@keegv ~]# ps -el | more
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0     1     0  0  80   0 - 31293 ep_pol ?        00:00:04 systemd
1 S     0     2     0  0  80   0 -     0 kthrea ?        00:00:00 kthreadd
1 S     0     3     2  0  80   0 -     0 smpboo ?        00:00:03 ksoftirqd/0

5、监控I/O性能:

[root@CloudBility ~]# iostat 
Linux 3.10.0-514.26.2.el7.x86_64 (keegv) 	2019年03月01日 	_x86_64_	(1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.79    0.00    0.39    0.59    0.00   97.22

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               3.74        15.27        25.55    3955533    6616344
vdb               0.00         0.00         0.00        920          0

6、监控网络性能:

[root@CloudBility ~]# netstat -i -c
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0      1500   930639      0      0 0       1012487      0      0      0 BMRU
lo       65536  1246803      0      0 0       1246803      0      0      0 LRU
eth0      1500   930652      0      0 0       1012502      0      0      0 BMRU
lo       65536  1246803      0      0 0       1246803      0      0      0 LRU

在此推荐使用Linux top 命令来对Linux系统进行监控。

Linux top命令详解

top 命令是Liunx性能监控程序,它可以在很多 类Unix 下使用,并且它也是 Linux 系统管理员最常用的监控系统性能的工具。

简单来说,top 命令能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器,可以定期显示所有正在运行和实际运行进程并且更新到列表中。

top命令显示出 CPU 的使用、内存的使用、交换内存、缓存大小、缓冲区大小、过程控制、用户等信息。

它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用、内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

命令行输入:

[root@CloudBility ~]# top

第一行 时间相关

top - 13:21:57 ,系统当前时间 
 
up 2 days, 23:45,  系统开机到现在经过了多少时间 

1 user, 当前1用户在线 

load average: 0.02, 0.03, 0.05,系统1分钟、5分钟、15分钟的CPU负载信息

第二行 Tasks: 任务


74 total, 很好理解,就是当前有74个任务,也就是74个进程。 

1 running, 1个进程正在运行 

73 sleeping, 73个进程睡眠

0 stopped,停止的进程数 

0 zombie,僵死的进程数

第三行 Cpu(s):表示这一行显示CPU总体信息

1.7%us:用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间

0.3%sy:内核占用CPU时间百分比 

0.0%ni:改变过优先级的进程占用CPU的百分比 

98.0%id:空闲CPU时间百分比 

0.0%wa:等待I/O的CPU时间百分比 

0.0%hi:CPU硬中断时间百分比 

0.0%si:CPU软中断时间百分比 

注:这里显示数据是所有cpu的平均值,如果想看每一个cpu的处理情况,按1即可;折叠,再次按1;

第四行 Men:内存的意思

1016396K total,  物理内存总量 

342660K used,  使用的物理内存量 

112116K free,   空闲的物理内存量 

561788K buffers  用作内核缓存的物理内存量

第五行 Swap:交换空间

0 total:交换区总量 

0 used:使用的交换区量 

0 free:空闲的交换区量 

411372k avail Mem:可用内存空间

进程信息

PID:进程的ID 

USER:进程所有者 

PR:进程的优先级别,越小越优先被执行 

NInice:值 

VIRT:进程占用的虚拟内存 

RES:进程占用的物理内存 

SHR:进程使用的共享内存 

S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数 

%CPU:进程占用CPU的使用率 

%MEM:进程使用的物理内存和总内存的百分比 

TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。 

COMMAND:进程启动命令名称

注:强调一下,使用频率最高的是P、T、M,因为通常使用top,我们就想看看是哪些进程最耗cpu资源、占用的内存最多;

P:CPU占用百分比排序,%CPU;

T:累计占据CPU时间排序,TIME+;

M:占据内存百分比排序,%MEM;

停停停,我们不可能每次都登录上去看服务器的监控信息吧。

2.2、云厂商的监控

云厂商提供的监控服务可用于收集获取云资源的监控指标或自定义的监控指标,探测服务可用性,以及针对指标设置警报。

能让我们快速全面的了解云资源使用情况、业务的运行状况和健康度,并及时收到异常报警做出反应,保证应用程序顺畅运行。

但是云厂商提供的监控存在诸如监控项过少、监控数据丢失、监控频率过低等问题。

3、行云管家 一站式云计算管理平台

在行云管家中,我们为用户提供了两种模式的监控服务:云厂商监控和行云管家Agent监控(需要在主机上安装行云管家Agent);

对于公有云主机而言,行云管家通过API集成了各大云厂商监控服务,用户可直接在行云管家中查看云厂商的监控数据。同时,如果云主机上已经安装了行云管家Agent,也可采用行云管家Agent监控;

而对于局域网主机,我们可以通过安装行云管家Agent来获得监控服务。

3.1、行云管家 与 云厂商 监控模式对比

行云管家Agent监控模式,由安装在主机上的行云管家Agent插件直接向服务器汇报监控数据,有着稳定性高、频率高的优点,下面表格展示了两种监控模式的差异:

3.2、免安装,免运维

无需安装任何Agent,行云管家已经支持了阿里云、腾讯云、华为云、京东云、Ucloud、百度云、AWS、青云、、Azure等主流云厂商,能够让用户在一个主控台中完成对多云厂商的统一管理与监控,行云管家是运维人员最趁手的跨云管理工具。

行云管家支持Windows、Linux/Unix等主流操作系统,可无缝接入公有云厂商的云监控API接口,支持CPU、内存、进程、网络流量等十余项监控指标,并提供基于微信的实时监控告警通知。

3.3、专业服务器性能监控

丰富的监控指标:支持CPU、内存、进程、磁盘IO、网络流量、TCP连接数、平均负载等十余项监控指标;

监控项数据保留时间长:每个监控项均提供30天的监控详情,监控详情细致入微;

监控数据频度高:监控数据粒度最低可至1分钟,报警更及时。

3.4、微信实时接收告警消息

基于微信的告警:只需绑定微信,即可接收告警消息;

查看告警方便快捷:可直接在手机中查看云资源的异常状态,第一时间解决问题;

告警推送不限量:告警推送不限次数,完全免费。

3.5、不仅仅是多云主机监控平台

行云管家为企业提供一站式的云计算管理平台,实现了对多家云厂商多种云计算资源的集中管理,从成本、监控、备份、安全等多个维度提供统一运维管控,对企业而言,只需一个控制台,即可整合操作多个公有云、多个私有云 、混合云以及各种异构资源,从而进行灵活的资源管理与运维。

目前,行云管家云计算管理平台已在官网上线了Demo环境,我们已经导入了多家云服务商的资源,阿里云、腾讯云、华为云、AWS、Azure和私有云都包括,大家可直观的进行体验。

行云管家Demo环境

除此之外我们还提供了详细的产品文档,以及多云管理介绍的博客和用例。

目前,行云管家已经连续三年保持云管理领域市场领先地位,我们正帮助 20000+企业级用户,管理着 100000 余台云主机。作为数字化解决方案领导者,行云管家将以持续创新的多云管理技术与方案,与企业携手努力,致力消除复杂性,简化百行百业的数字化转型之旅。

大家有不明白的地方,可以随时咨询我,我免费给大家解答。

(完)