Prometheus是一个开源的完整监控解决方案,形成了基于集中化的规则计算、统一分析和告警。总之Promethus是一个利器,其他知识可以参考首页分享的链接去了解Prometheus更多信息
时间序列
我的理解是某个时间点T去拉取对应的Metrics而产生的值Value(T0,V0),根据不同拉取间隔,从而形成一连串的时间点与数据的结合,从而形成时间序列数据库。
Prometheus架构
上面基本就可以分为四大块
- Metrics相关模块( Pushgateway,Exporters)
- Service Discovery (监控目标发现模块)可以采用静态配置、动态
- 数据存储方面(上面推荐使用SSD),支持的方式:本地存储、远程存储。现在暂时我们采用的是本地存储方案,后续改进我在分享对应的技术
- PromQl (查询语言,与关系型Mysql中sql类似)
数据才是重点,有兴趣可以参考官网的关于存储的解释
存储
应用
下面我直接分享下我们这边针对网络的应用场景,这边现在部署单机Prometheus。
下面是我们这边 Prometheus的启动脚本
#!/bin/sh
/bankapp/prometheus/prometheus --config.file=/bankapp/prometheus/prometheus.yml --web.enable-lifecycle --storage.tsdb.retention=120d > /bankapp/prometheus/logs/prometheus.log 2>&1 &
由于我们这边场景没有什么大流量,太多监控目标,暂时我们相当于把Prometheus充当数据库的用户,上面我们设置数据保留120 天.
–web.enable-lifecycle 这个数据为了我们可以通过直接通过 管理端Api直接重启Prometheus服务器
重启脚本
curl -X POST http://127.0.0.1:9090/-/reload
下面相关管理API接口
监控目标
Promethues中是支持多种监控目标发现机制,有静态配置、服务发现机制。暂时我们采用的是 Consul的服务发现,后续我会分享关于Consul中服务发现与 Prometheus相结合
Grafana展示监控数据
这边采用Grafana 为7.5.5版本展示Prometheus中监控数据