第二节:监控简介及zabbix介绍

监控系统简介

一、什么是监控

1、监控介绍

监控===监测+控制
生活中的监控:事故追责
运维中的监控:事后追责,事前预警,性能分析,实时报警

随着用户的增多,服务随时可能会被系统oom(out of memory内存溢出)
后果:kill -9 mysql
如何判断?,web服务是因为用户访问过多,达到了瓶颈? 还是程序代码bug导致的,内存过多?
上线一个新网站:压力测试 2000并发,oom(out of memeory)

2、监控分类

按照层次划分可简单分为:
应用层:nginx,mysql,java
运行层:Windows,linux
硬件层:内存,cpu,磁盘。

3、linux中常见的监控命令

cpu、内存、磁盘、网络

1.top           系统时间 登录用户  负载 进程 cpu 内存 swap  进程详细信息
2.htop(eple)  系统时间 登录用户  负载 进程 cpu 内存 swap  进程详细信息 支持鼠标 树状 快捷键
3.uptime    当前系统时间、登录用户、负载 
4.free          监控内存
5.vmstat        程、虚存、页面交换空间及 CPU
5.iostat        磁盘I/O统计
6.df            硬盘 -h block -i inode
7.iftop         流量监控工具
8.nethogs       查看进程占用的网络带宽
9.iotop         进程占用的硬盘I/O

4、shell脚本来监控服务器

没有监控工具的时候,shell脚本+定时任务

[root@k8s ~]# cat mem_alter.sh
#!/bin/bash
MEM=`free -m|awk 'NR==2{print $NF}'`
if [ $MEM -lt 100 ];then
echo "web服务器 192.168.2.104 可用内存不足,当前可用内存
$MEM" | mail -s "web服务器内存不足" 29262626@qq.com
fi

缺点:效率低,不能实现集中报警,不能分析历史数据

什么时候用shell:我只有一台云主机需要监控,适合shell脚本+定时任务

二、监控系统实现的原理

1、组成模块

一个监控系统的组成大体可以分为两个部分:
数据采集部分(agent;客户端)
数据存储分析告警展示部分(server;服务端)

2、采集协议

按照支持的协议方式,监控系统数据采集可以分为两种:
专用客户端采集(私有协议)
公用协议采集(SNMP,IPMI,SSH等)

3、采集模式

监控系统的数据采集模式,一般可分为两种模式:
被动模式:以不变应万变(从服务端到客户端的数据采集)
主动模式:客户端主动上报数据到服务端。

通常来讲大多数监控系统都应该能够同时支持着两种模式。
一般来讲,被动模式对于server服务器资源开销较大,适合小规模监控环境。
主动模式对于server服务器资源开销较小,合适大规模监控环境

4、监控指标

监控项目 监控内容
主机 内存,磁盘(使用空间/剩余空间),系统启动时间,进程数,负载等
网卡 ping的响应时间,数据包的收发成功率,网卡的流入&流出量和错误的数据包数量
文件 大小,文件指纹信息等
URL 指定URL访问过程中的返回码,下载时间及文件大小等
应用程序 服务状态,端口和内存使用率,cpu使用率,请求数量,并发访问请求等
数据库 指定数据库中的表空间,数据库的游标数,会话数,事务数等
日志 错误日志,特定字符串匹配
硬件 温度,风扇转速,电压,电源,主板控制器,磁盘阵列等

5、数据存储

在agent采集数据后,会将数据上传到server服务器,server服务器程序会将接收到的数据进行存储。
存储的目的就是为了追溯问题(故障)根源。
一般来讲,监控系统进行数据存储采用以下几种方式:

    本地存储。使用本地磁盘,基于文件的方式存储。
    使用数据库管理系统进行数据存储。
    使用NoSQL数据库进行数据存储。

    使用时序数据库进行数据存储。
    使用列存储数据库进行数据存储。
    使用全文搜索引擎数据库进行数据存储。

6、告警功能

监控系统的重要功能(告警功能)是根据我们认为设定的阈值进行告警的。
    监控cpu温度--->阈值=90℃--->告警

7、可扩展性

指的是,监控系统本身具有良好的扩展性,包括监控方式的扩展,监控能力的扩展,监控数据存储的扩展,分布式支持等。

zabbix介绍

一、zabbix是一个什么样的产品

zabbix是一个企业级的高度集成开源监控软件。

二、为什么选择zabbix

与同类产品作比较,选择zabbix的原因有一下几点:

1.zabbix是一个自由开放源码的产品
2.安装和配置简单
3.搭建环境简单
4.可以将采集到的的数据持久化的存储到数据库中
5.具有很强的扩展性
6.采用开源社区的运行模式
7.zabbix的授权公司提供完整的商业服务支持

三、zabbix的功能特性

1.数据采集
2.灵活的触发器
3.高度可定制的告警
4.实时绘图功能
5.web监控功能
    zabbix可以模拟浏览器请求访问一个指定站点,并检查返回值和响应时间
6.多种可视化展示
7.历史数据储存
8.配置非常容易
9.使用模块
10.网络发现
11.快速访问接口
12.api功能
13.系统权限
14.大型环境支持

四、zabbix概述

zabbix有几个主要的软件组件构成,这些组件的功能如下。

1、server

Zabbix server 是agent程序报告系统可用性、系统完整性和统计数据的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。

2、数据库存储

所有配置信息和Zabbix收集到的数据都被存储在数据库中。

3、web界面

1.为了从任何地方和任何平台都可以轻松的访问Zabbix, 我们提供基于Web的Zabbix界面。该界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。

2.如果使用SQLite,Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上。

4、proxy代理服务器

Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。

5、agent监控代理

Zabbix agents监控代理 部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给ZabbixServer

6、数据流

    此外,了解Zabbix内部的数据流同样很重要。监控方面,为了创建一个监控项(item)用于采集数据,必须先创建一个主机(host)。告警方面,在监控项里创建触发器(trigger),通过触发器(trigger)来触发告警动作(action)。
    因此,如果想收到Server XCPU负载过高的告警,必须完成以下几个动作:

1.为Server X创建一个host并关联一个用于对CPU进行监控的监控项(Item)。

2.创建一个Trigger,设置成当CPU负载过高时会触发
3.Trigger被触发,发送告警邮件

    虽然看起来有很多步骤,但是使用模板的话操作起来其实很简单,Zabbix这样的设计使得配置机制非常灵活易用。

7、相关定义

1)主机(host)

- 一台你想监控的网络设备,用IP或域名表示

2)主机组(host group)

- 主机的逻辑组;它包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。

3)监控项(item)

- 想要接收的主机的特定数据,一个度量数据。

4)触发器(trigger)

- 一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式当接收到的数据高于阈值时,触发器从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回一个“OK”的状态。

5)事件(event)

单次发生的需要注意的事情,例如触发器状态改变或发现有监控代理自动注册

6)异常(problem)

- 一个处在“异常”状态的触发器

7)动作(action)

- 一个对事件做出反应的预定义的操作。
一个动作由操作(例如发出通知)和条件(当时操作正在发生)组

8)升级(escalation)

- 一个在动作内执行操作的自定义场景; 发送通知/执行远程命令的序列

9)媒介(media)

- 发送告警通知的手段;告警通知的途径

10)通知(notification)

- 利用已选择的媒体途径把跟事件相关的信息发送给用户

11)远程命令(remote command)

- 一个预定义好的,满足一些条件的情况下,可以在被监控主机上自动执行的命令

12)模板(template)

- 一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合模版的任务就是加快对主机监控任务的实施;也可以使监控任务的批量修改更简单。模版是直接关联到每台单独的主机上。

13)应用(application)

- 一组监控项组成的逻辑分组

14)web场景(web scenario)

- 利用一个或多个HTTP请求来检查网站的可用性

15)前端(frontend)

zabbix提供的web界面

16)zabbix API

- Zabbix API允许你使用JSON RPC协议来创建、更新和获取Zabbix对象(如主机、监控项、图形和其他)信息或者执行任何其他的自定义的任务

17)zabbix server

- Zabbix软件实现监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等

18)zabbix agent

- 一个部署在监控对象上的,能够主动监控本地资源和应用的程序

19)zabbix proxy

- 一个帮助Zabbix Server收集数据,分担Zabbix Server的负载的程序
上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术