概念
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 这个数据源了。
监控系统组成
1. Granfana
从数据源中查询数据,并将查询到的数据进行可视化展示。
2. Prometheus
Prometheus是一个时间序列数据库。但是,它不仅仅是一个时间序列数据库。它涵盖了可以绑定的整个生态系统工具集及其功能。Prometheus主要用于对基础设施的监控,包括服务器(CPU、MEM等)、数据库(MYSQL、PostgreSQL等)、Web服务等,几乎所有东西都可以通过Prometheus进行监控。而它的数据,则是通过配置,建立与数据源的联系来获取的。
虽然Grafana可以从多种数据(如Prometheus、MySQL/PostgreSQL、OpenTSDB)等等中获取数据,不过Prometheus天生就是为了监控而生,所以我们用的最多的还是Prometheus。这也是我们的标配哦~
3. 数据源
在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后面的内容。键值对整体反映了当前样本的一些特征和维度。
而右大括号后的值则是该监控样本监控下的具体值。
4. 工作原理
现在我们有了以下3个部分:
Exporter 监控工具,获取数据
Prometheus 普罗米修斯时序数据库,用来存储和查询你的监控数据
Grafana 仪表盘
安装
1. 下载安装包
>官网地址: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 &
2. 浏览器登录
浏览器输入:http://192.168.178.150:3000/login
## 首次登录用户名吗、密码默认都是admin/admin
## 当然也可以在配置文件 /usr/local/grafana-9.2.4/conf/defaults.ini 中配置 admin_user 和 admin_password 两个参数来进行覆盖。
![在这里插入图片描述](https://img-blog.csdnimg.cn/7d98c7845a8f4420b2573a1868e9ef4c.png)
首次登录界面:
输入admin/admin会提示设置新密码,按照指引设置即可
之后,正常进入 grafana 界面:
3. 设置数据源
Grafana 并不负责采集数据,只是它可以将采集来的数据通过查询进行可视化展示。
那么这个数据从何而来呢?答案就是 datasources,在可视化界面中,可以在设置中进行设置数据源,也就是后续的指标查询展示都是从这个数据源获取。
数据来源选择 Prometheus,之后设置 http url,填写部署 Prometheus 的链接即可,之后保存。
在 HTTP 项中配置 URL 地址默认为 http://localhost:9090,其实就是 Prometheus 的地址,由于我们这里 Grafana 和 Prometheus 都在同一个节点上,所以用 localhost 即可访问,当然用 IP 也可以,配置完成后,拉到最下方点击 Save & test,提示添加成功即表面数据源添加成功了。然后在数据源列表中就会出现我们刚刚添加的 Prometheus 这个数据源了:
如果想要添加其他支持的数据源则也可用同样的方式进行添加。
4. 配置面板
数据源已经配置了,那么如何才可以看到监控面板呢?
Grafana 官网有提供很多现成的 dashboard,可以直接下载使用:
地址:https://grafana.com/grafana/dashboards/
这里我们下载一个 node-exporter 来使用:
https://grafana.com/grafana/dashboards/15172-node-exporter-for-prometheus-dashboard-based-on-11074/
官网的 dashboard 就需要采用导入的方式:
导入成功,效果图如下: