Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测工具,它可以大大帮助我们简化监控的复杂度,我们只需要提供需要监控的数据,它就可以帮助生成各种可视化仪表,同时它还有报警功能,可以在系统出现问题时发出通知。
Grafana 支持许多不同的数据源,每个数据源都有一个特定的查询编辑器,每个数据源的查询语言和能力都是不同的,我们可以把来自多个数据源的数据组合到一个仪表板,但每一个面板被绑定到一个特定的数据源。目前官方支持以下数据源:
Alertmanager
AWS CloudWatch
Azure Monitor
Elasticsearch
Google Cloud Monitoring
Graphite
InfluxDB
Loki
Microsoft SQL Server (MSSQL)
MySQL
OpenTSDB
PostgreSQL
Prometheus
Jaeger
Zipkin
Tempo
我们这里当然重点需要介绍的就是 Prometheus 这个数据源了。
从数据源中查询数据,并将查询到的数据进行可视化展示。
Prometheus是一个时间序列数据库。但是,它不仅仅是一个时间序列数据库。它涵盖了可以绑定的整个生态系统工具集及其功能。Prometheus主要用于对基础设施的监控,包括服务器(CPU、MEM等)、数据库(MYSQL、PostgreSQL等)、Web服务等,几乎所有东西都可以通过Prometheus进行监控。而它的数据,则是通过配置,建立与数据源的联系来获取的。
虽然Grafana可以从多种数据(如Prometheus、MySQL/PostgreSQL、OpenTSDB)等等中获取数据,不过Prometheus天生就是为了监控而生,所以我们用的最多的还是Prometheus。这也是我们的标配哦~
在Prometheus的架构设计中,Prometheus并不直接服务监控特定的目标,就比如我们监控linux系统,Prometheus不会自己亲自去监控linux的各项指标。其主要任务负责数据的收集,存储并且对外提供数据查询支持。
因此为了能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。Exporter是一个相对开放的概念,不是专门指某一个程序。它可以是一个独立运行的程序,独立于监控目标以外(如Node Exporter程序,独立于操作系统,却能获取到系统各类指标)。也可以是直接内置在监控目标中的代码(如在项目代码层面接入普罗米修斯API,实现指标上报)。总结下来就是,只要能够向Prometheus提供标准格式的监控样本数据,那就是一个Exporter。
而Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。
对于大家常见的监控主机运行的指标如CPU, 内存,磁盘等信息,我们可以为linux系统下载Node Exporter程序,该程序会监控linux各项指标,并通过:http://:9100/metrics来展示各项指标。而其给我们返回的内容如下图所示:
上图是访问Node Exporter暴露的HTTP服务,获取到了一系列的监控指标。而这些监控指标便是Prometheus可以采集到当前主机所有监控指标的样本数据:## 含义:
图中以#开头相当于注释,我们不用太关注。图中以非#开头的每一行则表示当前Node Exporter采集到的一个监控样本。对于图中可见的node_cooling_device_max_state和node_cpu_guest_seconds_total,代表了当前监控样本的名称。紧跟指标后大括号中的键值对中的键被称为标签,它与键值对的值共同组成筛选条件,相当于Mysql里的Where后面的内容。键值对整体反映了当前样本的一些特征和维度。而右大括号后的值则是该监控样本监控下的具体值。
现在我们有了以下3个部分:
Exporter 监控工具,获取数据
Prometheus 普罗米修斯时序数据库,用来存储和查询你的监控数据
Grafana 仪表盘
>官网地址:https://grafana.com
>官方文档:https://grafana.com/docs/grafana/next/>二进制包下载:
[root@localserver /root]# wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.2.5.linux-amd64.tar.gz
[root@localserver /root]# tar xf grafana-enterprise-9.2.5.linux-amd64.tar.gz
[root@localserver /root]# mv grafana-enterprise-9.2.5 /usr/local/grafana-9.2.4
[root@localserver /root]# cd /usr/local/grafana-9.2.4/bin
[root@localserver /usr/local/grafana-9.2.4/bin]# nphup ./grafana-server web > ./grafana.log >2&1 &
浏览器输入:http://192.168.178.150:3000/login## 首次登录用户名吗、密码默认都是admin/admin
## 当然也可以在配置文件 /usr/local/grafana-9.2.4/conf/defaults.ini 中配置 admin_user 和 admin_password 两个参数来进行覆盖。

首次登录界面:
输入admin/admin会提示设置新密码,按照指引设置即可
之后,正常进入 grafana 界面:
Grafana 并不负责采集数据,只是它可以将采集来的数据通过查询进行可视化展示。
那么这个数据从何而来呢?答案就是 datasources,在可视化界面中,可以在设置中进行设置数据源,也就是后续的指标查询展示都是从这个数据源获取。
数据来源选择 Prometheus,之后设置 http url,填写部署 Prometheus 的链接即可,之后保存。
在 HTTP 项中配置 URL 地址默认为 http://localhost:9090,其实就是 Prometheus 的地址,由于我们这里 Grafana 和 Prometheus 都在同一个节点上,所以用 localhost 即可访问,当然用 IP 也可以,配置完成后,拉到最下方点击 Save & test,提示添加成功即表面数据源添加成功了。然后在数据源列表中就会出现我们刚刚添加的 Prometheus 这个数据源了:
如果想要添加其他支持的数据源则也可用同样的方式进行添加。
数据源已经配置了,那么如何才可以看到监控面板呢?
Grafana 官网有提供很多现成的 dashboard,可以直接下载使用:
地址:https://grafana.com/grafana/dashboards/
这里我们下载一个 node-exporter 来使用:
https://grafana.com/grafana/dashboards/15172-node-exporter-for-prometheus-dashboard-based-on-11074/
官网的 dashboard 就需要采用导入的方式:
导入成功,效果图如下: