欢迎阅读我的笔记博客

66)prometheus 入门应用【1】

1- 监控分类

1.1- 监控对象

  1. 网络
  2. 存储
  3. 服务器
  4. 应用

1-2- 程序设计角度

  1. 基础资源
  2. 中间件
  3. 应用程序
  4. 日志

**建议: **

  • 选择开源监控优先选择社区活跃度较高,落地案例较多,容器扩展的项目
  • 没有必要采集所有监控指标

2- 基础资源监控

  • 网络监控
  • 存储监控
  • 服务器监控

2.1- 网络监控

  • 监控内容:
    1. 数据中心内的网络流量
    2. 网络拓扑发现和网络设备
    3. 网络性能和对网络攻击的探测
  • 监控方向:
    1. 网络性能:监测,实时流量,历史数据,汇总,历史数据分析
    2. 网络攻击检查: 内外网的DDoS攻击
    3. 设备: 路由器,交换机,防火墙
  • 监控方式:
    1. snmp
    2. npm

2.2- 存储监控

  • 云存储: 构成存储资源池的存储设备(ISCSI, NFS等)
    1. 存储性能: 读写速率,IOPS,读写延迟,磁盘用量,文件系统Inode,目录权限
    2. 存储系统: 例如ceph---OSD,MON,各种状态PG的数量,集群IOPS
    3. 存储设备:例如服务器---磁盘,SSD,网卡,容量,运行状态
  • 分布式存储: HDFS,日志存储

2.3- 服务器监控

  • 物理机
  • 虚拟机
  • 容器

2.3.1- 兼容性

  • 硬件: 不同厂商服务器
  • 操作系统:windows,linux
  • 虚拟化环境: kvm. vmware, xen, docker, rkt

2.3.2- 采集方式

  • 内置客户端: agent
  • 外部收集: API, master

2.3.3- 指标

  • CPU: 整体使用量, 用户态百分比,内核百分比,每个CPU的使用量,等待队列的长度, I/O等待百分比, CPU消耗最多的进程, 上下文切换次数,缓存命中率
  • 内存: 使用量,剩余量,占用率最高的进程,交换分区大大小,缺页异常数
  • 网络I/O: 每个网口的上下行流量,网络延迟,丢包率
  • 磁盘I/O: 读写速率,IOPS,磁盘用量,读写延迟
  • 物理硬件: IPMI方式-- 风扇,温度,电压

2.4- 中间件

​ 中间件是指系统软件和应用软件之间连接的软件。

2.4.1- 种类

  • 消息类: RabbitMQ, Kafka
  • web 服务: Tomcat, jetty. apache, nginx
  • 缓存: Redis, Memcached
  • 数据库: Mysql, PostgreSQL, oracle

2.4.2- 采集指标

​ 目前没有统一的标准和规范。不同中间件有不同的采集项。

  • Kafka
  1. 集群的Topic个数
  2. Broker数据分区数量
  3. 日志Offset值
  4. 生产消费流量
  • Redis
  1. 内存使用量
  2. 连接数
  3. 缓存命中率

2.5- 应用程序(APM)

​ 一般使用agent程序。

  • 运行状态
  • 性能
  • 日志
  • 调用链: 追踪整个请求过程

2.6- 日志监控

​ 采集日志数据(文本类型)并汇总到日志存储和搜索引擎中,提供日志搜索的Web接入。

黄金案例

Fluentd ---> Kafka ---> Logstash ---> Elasticsearch ---> Kibana

  • Fulentd: 日志采集
  • Kafka: 数据整流合并,避免日志流量直接冲击。
  • Logstash: 日志整理,日志过滤,日志修改
  • Elasticsearch: 日志存储和搜索,自带分布式存储,进行日志分片存储,引入多副本,通过Lucene实现日志索引和查询
  • Kibana: 日志查询和展现

2.7- 监控架构

2.7.1 实现方式

  • 数据采集: 主动采集,被动采集,主被兼有
  • 数据传输: Socket,HTTP
  • 数据存储: mysql, MongoDB, OpenTSDB, InfluxDB

2.7.2 总体架构

核心: 数据采集和数据整理

  • 采集系统: 信息采集,过滤,汇总,存储
  • 处理系统: 数据分析,展现,预警,告警动作出发,告警

2.7.3 指标采集

​ 数据采集、数据传输、过滤、数据存储

  1. 数据采集
    • 客户端采集
    • 标准协议: SNMP, JMX, IPMI
  2. 数据传输和过滤
    • http
    • socket
    • rabbitmq,kafka
  3. 数据存储
    • 时序数据库(TSDB)
    • 关系型数据库

2.7.3.1- 数据采集

  1. 客户端采集
    • 针对制定的设备和系统开发的采集器,在部署时也和监控对象绑定部署
    • 将采集数据上报到监控中心节点进行汇聚。
    • 中继节点完成数据清理、过滤和转发。
  2. 标准数据协议
    • 数据规范统一,普适性更广。

2.7.3.2 - 数据传输和过滤

  1. http协议
    • agent是一个http服务端----pull
    • agent是一个客户端---push
  2. socket
    • TCP/IP传输通道,传输更高效
  3. 消息中间件
    • 数据一定程度持久化
    • 数据整流
    • 多个接收消息,均衡流量
    • 强依赖中间件
    • 部署和运维复杂

2.7.3.3- 数据存储

  1. 时序数据库
    • 时间属性
    • 一次性写入多次读取
    • 数据流持续平稳
    • 一时间维度查询存储量大,数据只读及压缩比

2.7.4-数据处理

数据查询、数据分析、基于规则告警

2.7.4.1- 数据查询

  • 折线图: 数据变化
  • 饼图: 占比
  • 柱状图: 对比

展现工具:

  • grafana
  • kibana

2.7.4.2- 数据分析

用户或者其他系统对监控数据的性能分析、关联分析和趋势分析

  • 性能分析: 分析某个应用在特定时间内的资源消耗情况
  • 关联分析: 不同维度数据之间的关联
  • 趋势分析: 对采集数据指标进行分析,结合平局数算法,指数平滑算法,Holt线性趋势算法,机器学习模型等,分析数据内在周期规律,得出未来变化趋势。

2.7.4.3- 基于规则告警

利用已经采集的监控数据,匹配用户自定义的多维度告警规则。

  • 触发告警规则
  • 告警后的恢复脚本

2.8- 智能监控

  • 传统监控:性能监控、健康状态、应用监控
  • 智能监控:机器学习,自动化运维,智能分析,故障处理

特点:

  1. 通过多维度的指标分析定位问题。
  2. 故障风险预测:对过去故障的学习,预测未来的故障时间
  3. 智能处理: 专家系统(机器提供一些处理意见),基于机器的自动化运维

2.9- prometheus简介

由SoundCloud开发的开源监控告警系统,自带时序数据库,基于go语言编写。

2.9.1- 优点

  1. 多维度的数据模型和灵活的查询方式
    1. -监控指标多个Tag
    2. 简单的PromSQL语法
    3. HTTP查询接口
  2. 支持本地节点本地存储,同时支持第三方时序数据库
  3. 基于HTTP的Pull方式采集和Push方式向中间网关推送数据
  4. 静态文件和动态发现机制发现监控对象
  5. 维护简单,支持二进制直接启动,和容器化部署镜像
  6. 数据分区采样和联邦部署,支持大规模集群

2.9.2- 架构

  • prometheus server: 定时在目标上抓取metric数据
  • metric: 暴露一个http接口用于prometheus server 抓取
  • storage: 一定规则清理和整理数据
    • 本地存储:自带的时序数据库保存到本地磁盘
    • 远端存储:远端时序数据库。
    • 图表数据化:Grafana,PromDash
    • PushGateway: 系统主动推送metric到pushgateway, server定时去Gateway抓取数据
    • AlertManager:邮件等告警方式
posted @ 2020-04-15 17:54  lemanlai  阅读(472)  评论(0编辑  收藏  举报