Prometheus +grafana监控系统搭建

389 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天

作者按:

随着科技发展,开发的应用也越来越智能,各大公司生产环境的服务也是越来越多,架构也很复杂庞大,这时候就不得不加强监控的力度,保持运行稳定。

相较于以前,对于硬件监控较多,会使用zabbix,现在随着云原生的发展,各种应用容器化、微服务流行,这里就诞生了新一代监控,prometheus应运而生。

1、Prometheus是什么?

是基于时序数据库开源监控告警系统,由go语言开发,很多理念和google的sre相符合,2016年5月之后继K8s成为第二个正式加入CNCF基金会的项目,成为新一代的云原生监控系统。

截一张官网的架构图

2、以往监控存在的问题

(1)与业务脱离,客户只关注服务的可用性,以及服务的SLA登记(3个9、4个9等等),但是监控只能根据服务器的负载产生告警

(2)运维管理难度大,需要专业人员安装配置管理,过程不容易

(3)扩展性比较低,自身难扩展,无法使用监控规模变化

(4)问题定位难,主机负载异常增加,但客户还是看不到具体的运行情况,告警信息不能有效支持用户定位分析

3、prometheus优势

(1)易于管理,核心只有一个单独二级制文件,不存在第三方依赖,不会有潜在的级联风险

(2)监控服务内部运行状态,基于丰富的client库,可以在应用中添加prometheus的支持,获取应用内部运行状态

(3)强大的数据模型,采集的监控数据,用指标metric形式保存在内置的时间序列数据库TSDB中,每一条时间序列由metreic那么以及一组标签labels唯一标识,按照时间先后顺序存储监控值。

(4)强大的promql查询语言,内置的查询语言,可以实现对监控数据的查询聚合。

(5)高效,单一的peometheus server可实现百万级别监控指标,每秒处理数十万数据点

(6)可扩展,多个prometheus示例产生一个逻辑集群,一个sever任务量过大,可以扩展分担(sharding+federation)

(7)容易集成。支持java、python、go、ruby等客户端SDK,提供第三方数据采集支持。

(8)可视化,自带prometheus ui ,通过ui方便直接对数据查询,支持图形化展示。Grafana也支持prometheus

4、安装部署prometheus+nodeexporter

(1)本文运行一个server加一两个node exporter采集主机资源,并用grafana进行数据可视化展示。安装主要模块:

Prometheus server

Exporter

Grafana

(2)环境:centos7.9 prometheus V2.37.0 (截止2022年7月5日)

(3)本文选用手动部署,docker安装更加快速便捷,就另外再写一篇详叙。首先上prometheus官网下载最新的安装包,如图中红框所选,选择linux版本

(4)因为监控主机资源,选择下载nodeexporter采集agent

(5)下载完成后上传服务器,或者直接在服务其中wget 安装包url,解压到自定义目录中即可

(6)进入软件目录,修改默认的prometheus配置文件prometheus.url,添加监控地址,我这边已添加好

(7)采集数据默认以文件形式存储本地,默认存储在/data,若无目录,可手动创建

(8)执行运行软件./Prometheus,查看ui界面,访问localhost:9090,出现以下界面,代表运行成功

(9)为了能够采集到主机资源指标,使用node exporter,解压下载好后的安装包,进入目录运行./exporter,可以加入systemd管理,也可以搞个软连接运行,这边运行后查看端口为9100,访问localhost:9100 ,出现以下界面代表运行正常,查看节点up正常

5、可视化安装Grafana

(1)还是上官网下载安装包,可以下载后上传服务器或者直接服务器下载

(2)官网标注了个系统版本如何下载使用,我们安装最新版9.0.2

(3)下载rpm包后,直接yum install 安装即可

(4)开箱即用,systemctl start grafan-server即可

(5)访问localhost:3000 出现以下界面,admin/admin登录即可

(6)登录进去之后添加数据源prometheus

(7)prometheus刚才运行地址端口就是本机的9090,添加此地址,就可以save&test

出现下图表示添加成功

(8)安装可视化dahboard模板,这个可以大家自己制作,也可以直接import或者下载,在这个grafana网站直接使用

引入之后出现下图,说明到此一个基本主机资源监控系统搭建完成了,看起来漂亮吧。

好了,Prometheus +grafana监控系统搭建到此结结束了,下次分享promql以及告警处理的使用。