Prometheus+Grafana
今天介绍Prometheus+Grafana打造高逼格监控平台。看看如何使用Grafana和Prometheus以及node_exporter对Linux服务器性能进行监控。
其实很早的时候我自己就写过一套这样的系统:n-sentinel 。主要是用Node.js实现的。思路都差不多,总结一下就是下面三点:
- 需要在每台需要监控的服务器上启动一个采集状态的程序,对外暴露API接口提供状态数据。
- 有一个中央服务,负责收集所有被监控服务器的状态数据,记录并做处理。
- 配备一套可视化的展示页面。
我们今天的主角是Prometheus,这是一个开源的服务监控系统,它通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上。特点有:
- 多维数据模型(时序列数据由metric名和一组key/value组成)
- 在多维度上灵活的查询语言(PromQl)
- 不依赖分布式存储,单主节点工作.
- 通过基于HTTP的pull方式采集时序数据
- 可以通过push gateway进行时序列数据推送(pushing)
- 可以通过服务发现或者静态配置去获取要采集的目标服务器
- 多种可视化图表及仪表盘支持
node_exporter
第一步就是在每台被监控的服务器上安装采集程序。node_exporter就是Prometheus的采集程序。
由于采用Go语言编写,很简单只需要下载、解压、运行就好了。
wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/
node_exporter-1.0.1.linux-amd64.tar.gz
tar -xzvf node_exporter-1.0.1.linux-amd64.tar.gz
./node_exporter
客户端默认监听9100端口。
Prometheus
Prometheus是服务端程序,负责收集服务器的数据。这个工具是Go语言编写的。部署也简单,下载解压,修改配置文件之后运行即可。
wget https://github.com/prometheus/prometheus/releases/download/v2.24.1/
prometheus-2.24.1.linux-amd64.tar.gz
tar -xzvf prometheus-2.24.1.linux-amd64.tar.gz
修改配置文件prometheus.yml
,简单参考如下:
|
|
运行./prometheus
启动服务,会看到日志中有Server is ready to receive web requests.
字样。说明服务启动成功了,它会启动一个后台网页,默认是9090端口,我在浏览中打开会看到一个简易的展示界面。
看一下官方网站给出的Prometheus架构图:
Grafana
Prometheus自带的展示效果比较基础,一般需要借助Grafana这种高大上的dashboard展示工具。
什么是Grafana
Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:
- 展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;
- 数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
- 通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;
- 混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;
- 注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
- 过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。
下面我们用Docker安装Grafana:
docker run -d -p 3001:3000 --name=grafana544 grafana/grafana
安装成功之后就可以访问Docker所在主机的3001端口,输入admin/admin
登录之后重置一个秘密就进入了主界面,接着就配置数据源:
直接选第一项Prometheus,URL配置成主机的IP地址http://x.x.x.x:9090
其它都是默认值(因为我们上面所有的工具都安装在一台服务器上,默认都是localhost),点击下面的Save & Test
提示成功就好了。
接下来在后面的Dashboards
Tab页面中import相应的项目:
回到首页点击搜索框,点击对应的监控项目,惊喜就出现了:
更多的数据源接入可以上网找相应的科普文章。
参考:
https://www.cnblogs.com/smallSevens/p/7805842.html
总结
Prometheus收集服务器状态数据功能非常强大;Grafana则是一款开源通用的可视化工具,可以接入非常多的常见数据源,展示效果没得说。
这样的组合绝对算的上豪华,可怜我N年前自己写的监控工具是没法和这个比的,但是自己写也有很大意义的,说不定某个地方就能用上了。
再有一点,Prometheus适合做资源类的使用情况监控;应用日志的收集并不是太合适,日志的收集推荐使用ELK。
(完)
- 原文作者: 闪电侠
- 原文链接:https://chende.ren/2021/01/31153538-prometheus-grafana.html
- 版权声明:本作品采用 开放的「署名 4.0 国际 (CC BY 4.0)」创作共享协议 进行许可