
文章目录
- 前言
- 一、Prometheus、Grafana
-
- [1.1 Prometheus简介](#1.1 Prometheus简介)
- [1.2 Grafana简介](#1.2 Grafana简介)
- [1.3 Prometheus的核心组件](#1.3 Prometheus的核心组件)
- [1.4 Prometheus优点](#1.4 Prometheus优点)
- [1.5 Prometheus缺点](#1.5 Prometheus缺点)
- 二、部署Docker
- 三、主节点部署Prometheus+Grafana
-
- [3.1 部署Prometheus](#3.1 部署Prometheus)
- [3.2 防火墙开放端口](#3.2 防火墙开放端口)
- [3.3 访问服务](#3.3 访问服务)
- [3.4 安装Grafana](#3.4 安装Grafana)
- [3.5 防火墙开放端口](#3.5 防火墙开放端口)
- [3.6 访问服务](#3.6 访问服务)
- 3.7自定义账号/密码:admin/admin
- 四、从节点部署Node_exporter
-
- [4.1 被采集的主机节点上部署Node_exporter](#4.1 被采集的主机节点上部署Node_exporter)
- [4.2 防火墙开放端口](#4.2 防火墙开放端口)
- 五、主节点配置Prometheus
-
- [5.1 在主节点上修改Prometheus主配置文件](#5.1 在主节点上修改Prometheus主配置文件)
- 六、配置Grafana监控界面
-
- [6.1 添加Prometheus数据源](#6.1 添加Prometheus数据源)
- [6.2 选择Prometheus类型](#6.2 选择Prometheus类型)
- [6.3 输入主节点PrometheusIP地址及端口](#6.3 输入主节点PrometheusIP地址及端口)
- [6.4 点击sava保存](#6.4 点击sava保存)
- [6.5 新增Dashboard Linux基础数据展示](#6.5 新增Dashboard Linux基础数据展示)
- [6.6 填写模板id](#6.6 填写模板id)
- [6.7 选择刚刚创建好的数据源](#6.7 选择刚刚创建好的数据源)
- [6.8 查看Dashboard](#6.8 查看Dashboard)
- 总结
前言
Prometheus (普罗米修斯R)是一套开源的监控&报警&时间序列数据库的组合,由SoundCloud公司开发。
Prometheus 基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker。
Prometheus 应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。
Prometheus 号称下一代监控系统,已经成为主导及容器监控方面的标配,并且在未来可见的时间内被广泛应用
提示:以下是本篇文章正文内容,下面案例可供参考
一、Prometheus、Grafana
1.1 Prometheus简介
Prometheus是由SoundCloud公司开发的开源监控和警报工具包。其设计思想是通过时间序列数据库存储监控数据,并通过强大的查询语言PromQL对数据进行分析。Prometheus的架构高度模块化,易于扩展,特别适合云原生环境,如Kubernetes集群。
1.2 Grafana简介
Grafana是一个开源的数据可视化工具,广泛用于绘制图表和仪表盘。它可以与多种数据源配合使用,如Prometheus、Graphite等,并提供丰富的图表类型和插件支持。Grafana的用户友好界面使得自定义和共享仪表盘变得轻而易举。
通过将Prometheus的数据采集、存储与Grafana的可视化能力相结合,可以创建一套强大的监控系统,帮助维护和优化大规模的IT环境。
1.3 Prometheus的核心组件
Prometheus服务器 :负责收集和存储时间序列数据。
exporters :用于将不同类型的监控指标转化为Prometheus格式,例如node_exporter用于收集主机级别的指标。
Pushgateway :允许短暂的生命进程将指标推送到Prometheus,适用于批处理作业。
Alertmanager :负责处理Prometheus服务器发出的警报。
各种客户端库 :用于与被监控的程序集成,这些库可以帮助自动生成指标。
Prometheus服务器是架构中的关键组件,它通过拉取(Pull)的方式从配置的目标中收集指标数据,并存储在自身的时序数据库中。通过查询接口,用户可以实时获取监控数据,进行问题诊断和趋势分析。
1.4 Prometheus优点
(1)提供多维度数据模型和灵活的查询方式
通过将监控指标关联多个 tag,来将监控数据进行任意维度的组合,并且提供简单的 PromQL 查询方式,还提供 HTTP 查询接口,可以很方便地结合 Grafana 等 GUI 组件展示数据。
(2)基于时序数据库,支持服务器节点的本地存储
通过 Prometheus 自带的时序数据库,可以完成每秒千万级的数据存储;不仅如此,在保存大量历史数据的场景中,Prometheus 可以对接第三方时序数据库和 OpenTSDB 等。
(3)定义了开放指标数据标准
以基于 HTTP 的 Pull 方式采集时序数据,只有实现了Prometheus监控数据才可以被 Prometheus 采集、汇总、并支持 Push 方式向中间网关推送时序列数据,能更加灵活地应对多种监控场景。
(4)支持通过静态文件配置和动态发现机制发现监控对象
自动完成数据采集。Prometheus 目前已经支持 Kubernetes、etcd、Consul 等多种服务发现机制。
(5)易于维护
可以通过二进制文件直接启动,并且提供了容器化部署镜像。
(6)集群支持
支持数据的分区采样和集群部署,支持大规模集群监控。
1.5 Prometheus缺点
Prometheus 是基于 Metric 的监控,不适用于日志(Logs)、事件(Event)、调用链(Tracing)。
由于Prometheus采用的是Pull模型拉取数据,意味着所有被监控的endpoint必须是可达的,需要合理规划网络的安全配置。
指标众多,需进行适当裁剪。
本次部署Prometheus+Grafana需要两台服务器
主节点(10.10.10.65)主要负责部署Prometheus+Grafana,搭建监控server平台,并开启9090、3000端口
从节点(10.10.10.214)主要负责部署Node_exporter,主要在被采集的主机上部署插件服务,并开启9100服务端口,支持部署多台被采集的主机,由主节点统一管理
二、部署Docker
三、主节点部署Prometheus+Grafana
3.1 部署Prometheus
c
#拉取镜像
docker pull prom/prometheus
#运行容器
docker run -itd --name=prometheus --restart=always -p 9090:9090 prom/prometheus
3.2 防火墙开放端口
javascript
#开放端口策略
firewall-cmd --zone=public --add-port=9090/tcp --permanent
#刷新防火墙配置
firewall-cmd --reload
#查看已开放端口
firewall-cmd --list-ports

3.3 访问服务
通过浏览器访问http://ip地址:9090
3.4 安装Grafana
c
#创建存储卷
docker volume create -d local grafana_storage
#查看存储卷
docker volume ls
#拉取镜像
docker pull grafana/grafana
#运行容器
docker run -itd --name=grafana \
--restart=always \
-p 3000:3000 \
-v grafana_storage:/var/lib/grafana \
grafana/grafana
3.5 防火墙开放端口
javascript
#开放端口策略
firewall-cmd --zone=public --add-port=3000/tcp --permanent
#刷新防火墙配置
firewall-cmd --reload
#查看已开放端口
firewall-cmd --list-ports
3.6 访问服务
通过浏览器访问http://ip地址:3000
3.7自定义账号/密码:admin/admin

四、从节点部署Node_exporter
4.1 被采集的主机节点上部署Node_exporter
Node_exporter收集机器的系统数据,这里采用prometheus官方提供的exporter,除node_exporter外,官方还提供consul,memcached,haproxy,mysqld等exporter,具体可查看官网。
c
#创建存储卷
docker volume create -d local node_proc
docker volume create -d local node_sys
#查看存储卷
docker volume ls
#拉取镜像
docker pull prom/node-exporter
#运行容器
docker run -itd --name=node-exporter \
--restart=always \
-p 9100:9100 \
-v node_proc:/host/proc:ro \
-v node_sys:/host/sys:ro \
-v "/:/rootfs:ro" \
prom/node-exporter

4.2 防火墙开放端口
javascript
#开放端口策略
firewall-cmd --zone=public --add-port=9100/tcp --permanent
#刷新防火墙配置
firewall-cmd --reload
#查看已开放端口
firewall-cmd --list-ports
五、主节点配置Prometheus
5.1 在主节点上修改Prometheus主配置文件
c
#复制文件
docker cp prometheus:/etc/prometheus/prometheus.yml $PWD
#修改prometheus.yml文件
vim prometheus.yml
#在Prometheus配置文件按以下内容修改:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['ip地址:9100'] #被监控端的IP地址和端口号(有多个被监控端可用 逗号 隔开)
labels:
instance: localhost
#复制文件
docker cp $PWD/prometheus.yml prometheus:/etc/prometheus/prometheus.yml
#重启容器服务
docker restart prometheus
六、配置Grafana监控界面
6.1 添加Prometheus数据源
使用浏览器访问http:/ /10.10.10.65:3000监控平台,添加Prometheus数据源
6.2 选择Prometheus类型

6.3 输入主节点PrometheusIP地址及端口
6.4 点击sava保存

6.5 新增Dashboard Linux基础数据展示

6.6 填写模板id
更多grafana模板: https://grafana.com/grafana/dashboards 搜索 相应 dashboards的id如8919,12227
6.7 选择刚刚创建好的数据源

6.8 查看Dashboard
成功显示资源使用率可视化图形界面
总结
可以创建不同类型的数据源,比如MySQL、redis、MongoDB、PostgreSQL等等
选择不同数据源类型
可以在官网查看更多可视化模板
官网提供很多模板