@promethus简介
前言
由于目前做到的项目使用kubernetes+docker为基础平台,因此需要一个通用、简洁的监控系统用于日常监控,因此决定选用promethus+grafana的方案进行监控告警的开发;
目前网络上也非常多相关文章,但是都说的不是很深入,因此笔者希望能通过学习+输出的方式将整个复杂的promethus监控系统去做一个讲解和输出。
计划的监控维度:
- kubernetes API部分(包括master节点和lb节点)
- ETCD
- pod层级(pod的状态和健康)
- 宿主机
什么是promethus
Promethues是一款开源的基于时间序列数据库(TSDB)的监控报警系统。该项目的开发人员和用户社区非常活跃,越来越多的开发人员和用户参与到该项目中。目前它是一个独立的开源项目,且不依赖与任何公司。为了强调这点和明确该项目治理结构,Prometheus在2016年继Kurberntes之后,加入了Cloud Native Computing Foundation。主要具有如下功能:
- 多维 数据模型(时序由 metric 名字和 k/v 的 labels 构成)。
- 灵活的查询语句(PromQL)。
- 无依赖存储,支持 local 和 remote 不同模型。
- 采用 http 协议,使用 pull 模式,拉取数据,简单易懂。
- 监控目标,可以采用服务发现或静态配置的方式。
- 支持多种统计数据模型,图形化友好。
什么是TSDB
简单的理解为.一个优化后用来处理时间序列数据的软件,并且数据中的数组是由时间进行索引的
-
大部分时间都是写入操作
-
写入操作几乎是顺序添加;大多数时候数据到达后都以时间排序.
-
写操作很少写入很久之前的数据,也很少更新数据.大多数情况在数据被采集到数秒或者数分钟后就会被写入数据库.
-
删除操作一般为区块删除,选定开始的历史时间并指定后续的区块.很少单独删除某个时间或者分开的随机时间的数据.
-
数据一般远远超过内存大小,所以缓存基本无用.系统一般是 IO 密集型
-
读操作是十分典型的升序或者降序的顺序读,
-
高并发的读操作十分常见.
Prometheus 生态系统
-
Prometheus 主服务,用来抓取和存储时序数据
-
client library 用来构造应用或 exporter 代码 (go,java,python,ruby)
-
push 网关可用来支持短连接任务
-
可视化的dashboard (两种选择,promdash 和 grafana.目前主流选择是 grafana.)
-
一些特殊需求的数据出口(用于HAProxy, StatsD, Graphite等服务)
-
实验性的报警管理端(alartmanager,单独进行报警汇总,分发,屏蔽等 )
需要注意的是,由于promethus界面较为简陋,因此一般对接grafana用于展示数据。
promethus学习和使用的着手点
- 下载部署运行(略)
- config文件:global选项和job的规则和用法;
- promethus的查询运算语句
- promethus的告警语句的编写和使用
- promethus的其他运维操作
- grafana和promethus的对接和界面制作
持续更新,学无涯
太监警告