Prometheus 安装与部署、Grafana
Prometheus 安装与部署、Grafana
Prometheus 简介
Prometheus受启发于Google的Brogmon监控系统(相似的Kubernetes是从Google的Brog系统演变而来),从2012年开始由前Google工程师在Soundcloud以开源软件的形式进行研发,并且于2015年早期对外发布早期版本。2016年5月继Kubernetes之后成为第二个正式加入CNCF基金会的项目,同年6月正式发布1.0版本。2017年底发布了基于全新存储层的2.0版本,能更好地与容器平台、云平台配合。
主要功能
- 多维 数据模型(时序由 metric 名字和 k/v 的 labels 构成)。
- 灵活的查询语句(PromQL)。
- 无依赖存储,支持 local 和 remote 不同模型。
- 采用 http 协议,使用 pull 模式,拉取数据,简单易懂。
- 监控目标,可以采用服务发现或静态配置的方式。
- 支持多种统计数据模型,图形化友好。
核心组件
- Prometheus Server, 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。
- client libraries,用于对接 Prometheus Server, 可以查询和上报数据。
- push gateway ,用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。
- 各种汇报数据的 exporters ,例如汇报机器数据的 node_exporter, 汇报 MongoDB 信息的 MongoDB exporter 等等。
- 用于告警通知管理的 alertmanager 。
基础架构
Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。 Prometheus Server可以通过静态配置管理监控目标,也可以配合使用Service Discovery的方式动态管理监控目标,并从这些监控目标中获取数据。其次Prometheus Server需要对采集到的监控数据进行存储,Prometheus Server本身就是一个时序数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。最后Prometheus Server对外提供了自定义的PromQL语言,实现对数据的查询以及分析。
Prometheus Server内置的Express Browser UI,通过这个UI可以直接通过PromQL实现数据的查询以及可视化。
Prometheus Server的联邦集群能力可以使其从其他的Prometheus Server实例中获取数据,因此在大规模监控的情况下,可以通过联邦集群以及功能分区的方式对Prometheus Server进行扩展。
它大致使用逻辑是这样:
- Prometheus server 定期从静态配置的 targets 或者服务发现的 targets 拉取数据。
- 当新拉取的数据大于配置内存缓存区的时候,Prometheus 会将数据持久化到磁盘(如果使用 remote storage 将持久化到云端)。
- Prometheus 可以配置 rules,然后定时查询数据,当条件触发的时候,会将 alert 推送到配置的 Alertmanager。
- Alertmanager 收到警告的时候,可以根据配置,聚合,去重,降噪,最后发送警告。
- 可以使用 API, Prometheus Console 或者 Grafana 查询和聚合数据。
下载并运行 Prom
- 为了安全起见,使用
prometheus
用户来启动服务,首先创建这个用户:
- 从官方站点下载合适的包,并解压:
:information_source: 官方下载站点:https://prometheus.io/download
- 创建 prometheus 系统服务启动文件
/usr/lib/systemd/system/prometheus.service
:
a . 配置 Prometheus 文件prometheus.yml
进行自我监控:
启动 Prom ,./prometheus --config.file=prometheus.yml
【默认情况下,Prometheus 将其数据库存储在./data
中(可以使用--storage.tsdb.path
自定义data路径)】
此时打开浏览器,进入localhost:9090
查看其自身的状态页,此外你还可以访问localhost:metrics
查看其指标参数
简单入门,来自官方文档.
b. 修改 prometheus 配置文件 prometheus.yml
:
该配置文件比较完整,该节点安装了 node_exporter
以及 alertmanager
服务,可以先按照此配置文件做配置,不影响服务的启动过程
启动服务:
Prometheus 服务启动完成后,可以通过http://127.0.0.1:9090访问 Prometheus 的 UI 界面
安装配置 node_exporter
为监控服务器 CPU , 内存 , 磁盘 , I/O 等信息,需要在被监控机器上安装 node_exporter 服务。
从官方站点下载node_exporter
包:
创建 node_exporter 系统服务启动文件 /usr/lib/systemd/system/node_exporter.service
:
启动 node_exporter 服务:
服务启动后可以用 http://127.0.0.1:9100/metrics 测试 node_exporter 是否获取到节点的监控指标。
使用 Grafana 展示工具
安装Grafana
:
启动 Grafana 服务:
服务启动后 grafana 默认监听在 3000 端口 ,可以通http://127.0.0.1:3000 访问 grafana 的 ui 界面,默认登录账号密码为 admin/admin
,第一次登录需要我们重置密码。
添加Prometheus
数据源:
Data Sources
—> Add Data Source
—> Prometheus
导入模板:
选择左侧菜单栏 + 号
—> import
—> 填入id或者json格式数据
:information_source:模板来自:https://grafana.com/grafana/dashboards/8919
:information_source: 模板注意事项:
导入看板后,请根据实际情况在看板右上角点击Dashboard settings
—Variables
设置好变量:
默认已经设置并关联好job
,hostname
,node
这3个变量。(name,env变量是自定义的标签,已隐藏。大家可根据需要自行增加。)
$node
取值node_exporter的instance
,IP:端口
格式。大部分查询关联了这个变量,请确保该变量有效$maxmount
用来查询当前主机的最大分区,默认只获取ext4和xfs类型的分区。
:warning:**注意:**所有的监控服务都强依赖时间服务器,要保证服务器客户端和web端的时间一致,否则数据无法正常展示和更新.
参考链接
- prometheus官方文档:https://prometheus.io/docs/prometheus/latest/getting_started/
- grafana 安装文档:https://grafana.com/docs/grafana/latest/installation/rpm/
- 如何导入一个 Grafana 面板:https://grafana.com/docs/grafana/latest/reference/export_import/#importing-a-dashboard
- prometheus 入门进阶:https://yunlzheng.gitbook.io/prometheus-book/