前面我们通过Prometheus获取到了node-exporter提供的主机监控指标,本文将学习如何将监控指标可视化。Prometheus自身提供了对于指标的查询以及简单的图表展示功能,但对于企业级的监控展示而言,这是远远不够的。对此,Promethes官方推荐的可视化方案是与grafana结合,来实现丰富的监控展示效果。
一. Grafana简介
Grafana是一个开源的可视化和分析工具,它支持Prometheus、elasticsearch、graphite、influxdb 等众多的数据源,并提供了强大的界面编辑器和可视化模板。
该产品具有以下几个特点:
1. 可视化:快速灵活的客户端图形和多种选项,面板插件支持多种不同的方式来可视化指标和日志,例如:热图、折线图、图表等多种展示方式;
2. 混合展示:在同一个图表中混合不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;
3. 数据源支持:支持Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,Mysql等多种数据源;
4. 告警通知: 支持以可视化方式定义警报规则,并会不断的计算数据,在指标达到阀值时通过Slack、PagerDuty、VictorOps等系统发送通知。
二. 安装部署
下载二进制包,运行安装
$ wget https://dl.grafana.com/oss/release/grafana-7.5.10-1.x86_64.rpm $ sudo yum install grafana-7.5.10-1.x86_64.rpm启动服务
$ sudo systemctl start grafana-servergrafana默认端口为3000,打开浏览器输入 http://ip:3000 访问, 默认账号密码都为admin。
登录系统后,可看到左边一排功能键,分别对应着Dashboard搜索、Dashboard创建、Dashboard管理、Explore、告警管理、系统配置、管理员选项等功能,具体的功能这里不做详细介绍,感兴趣的话可以上官网自行查阅:https://grafana.com/docs/grafana/latest/。
三. Grafana使用方法
下面我们以Prometheus为例,讲解关于Grafana的使用方法。
3.1 配置数据源
点击Configuration- Data Source,进入数据源配置页面后,点击“ADD data source”按键
在列表中可以看到grafana支持多种数据源,此处选择Prometheus
填写数据源名称与URL,完成后点击“save&test”按键,如果正常会收到Success提示。
3.2 创建Dashboard
点击“Create"- "Dashboard",创建一个新的仪表盘。
点击“Add an empty panel”,添加一个新的面板
选择数据源名称“Prometheus”,在metrics处填写监控指标的PromQL语句,此处以上篇文章中的CPU使用率公式为例。在图表右边处提供了丰富的功能,用于自定义图表类型,此处我们选择Graph类型图表。
完成后,点击右上角"Apply”按键,一个简单的图表就做好了。如果需要在仪表盘中增加更多展示图表,可点击右上角的“Add panel”继续添加。
如果需要对Dashboard进行配置,可点击右上角的“Dashboard setting”按键,进入配置界面 。在配置界面可设置Dashboard名称等基础信息,还有配置变量、权限管理、版本管理等多个功能。
配置完成后,点击“save dashboard"保存并退出。四. 下载Dashboard模板
上面介绍了关于Dashboard的配置,但考虑到监控的图表很多,如果全部手动去配置,无疑是件耗时耗力的事。在这点上,Grafana官网很贴心的提供了不少Dashboard的模板,可以下载即用,极大的提升了我们的工作效率。 浏览器打开官网:https://grafana.com,点击 “Grafana”-“Dashboards”, 按需要的模板类型进行搜索,如node。搜索后一般会出现较多的可选模板,这里可根据下载量和星数判断,推荐选择受欢迎的模板。 点击模板后,进入介绍页面,会有该模板的详细介绍。在右边会看到该模板的ID号,这个很重要,Grafana需要根据这个ID号进行模板下载。拷贝该ID号,回到grafana系统,选择”Create"-"import" ,进入模板导入界面
输入该ID号,点击”Load",进行下载加载。(grafana也支持json文件导入的方式,可将Dashboard导出为json备份,需要时再选择“Upload Json file”进行模板导入)选择Prometheus的数据源,点击"import",完成导入
查看新生成的Dashboard,顺利完成。