普罗米修斯概述
Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库
的组合。适合监控docker容器
。因为kubernetes(俗称k8s)
的流行带动了prometheus的发展。
https://prometheus.io/docs/introduction/overview/
时间序列数据
什么是序列数据
时间序列数据
(TimeSeries Data) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。
应用的场景很多, 如:
- 无人驾驶车辆运行中要记录的经度,纬度,速度,方向,旁边物体的距离等等。每时每刻都要将数据记录下来做分析。
- 某一个地区的各车辆的行驶轨迹数据
- 传统证券行业实时交易数据
- 实时运维监控数据等
时间序列数据特点
- 性能好
关系型数据库对于大规模数据的处理性能糟糕。NOSQL可以比较好的处理大规模数据,让依然比不上时间序列数据库。
- 存储成本低
高效的压缩算法,节省存储空间,有效降低IO
Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(来自官方数据)
Prometheus的主要特征
- 多维度数据模型
- 灵活的查询语言
- 不依赖分布式存储,单个服务器节点是自主的
- 以HTTP方式,通过pull模型拉去时间序列数据
- 也可以通过中间网关支持push模型
- 通过服务发现或者静态配置,来发现目标服务对象
- 支持多种多样的图表和界面展示
原理架构图
环境准备
三台机器,被监控服务器、Prometheus服务器、grafana服务器
1.能上外网
2.主机名
各自配置好主机名
# hostnamectl set-hostname --static server.cluster.com
三台都互相绑定IP与主机名
# vim /etc/hosts
10.1.1.13 server.cluster.com
10.1.1.14 agent1.cluster.com
10.1.1.15 grafana.cluster.com
3.时间同步
4.关闭防火墙,selinux
# systemctl stop firewalld
# systemctl disable firewalld
# iptables -F
安装prometheus
第一步:从 https://prometheus.io/download/ 下载相应版本,上传到服务器上
第二步:官网提供的是二进制版,解压就能用,不需要编译
[root@server ~]# tar xf prometheus-2.5.0.linux- amd64.tar.gz -C /usr/local/ [root@server ~]# mv /usr/local/prometheus-2.5.0.linux- amd64/ /usr/local/prometheus
第三步:启动普罗米修斯
[root@server ~]# /usr/local/prometheus/prometheus -- config.file="/usr/local/prometheus/prometheus.yml" &
注:
& 连接符代表后台运行,不占用终端窗口
第四步:测试端口占用情况(判断是否真正的启动了)
确认端口(9090)
[root@server ~]# lsof -i:9090
[root@server ~]# ss -naltp |grep 9090
prometheus界面
通过浏览器访问http://服务器IP:9090
就可以访问到prometheus的主界面
默认只监控了本机一台,点Status --》点Targets --》可以看到只监控了本机
主机数据展示
通过http://服务器IP:9090/metrics
可以查看到监控的数据
在web主界面可以通过关键字查询监控项