从零开始:使用Prometheus与Grafana搭建监控系统

在本文中,我们介绍了什么是Prometheus,如何安装Prometheus,以及使用Prometh
首页 新闻资讯 行业资讯 从零开始:使用Prometheus与Grafana搭建监控系统

438cb3b28cd90111c6539033c6f516f555a256.png

Prometheus是一款开源的监控系统,主要用于收集、存储和查询时间序列数据,以便于对系统进行监控和分析。

Prometheus的架构由四个主要组件组成:

  • Prometheus Server :Prometheus Server是Prometheus的核心组件,主要负责从各个目标(target)中收集指标(metrics)数据,并对这些数据进行存储、聚合和查询。

  • Client Libraries:Prometheus提供了多种客户端库,用于在应用程序中嵌入Prometheus的指标收集功能。

  • Exporters:Exporters是用于将第三方系统的监控数据导出为Prometheus格式的组件。Prometheus支持多种Exporters,例如Node Exporter、MySQL Exporter、HAProxy Exporter等。

  • Alertmanager:Alertmanager是Prometheus的告警组件,用于根据用户定义的规则对监控数据进行告警。

同时Prometheus有以下优点:

  • 灵活的数据模型:Prometheus采用的是key-value对的形式存储指标数据,每个指标都可以包含多个标签(labels),这样可以更加灵活地描述指标数据

  • 高效的存储和查询:Prometheus使用自己的时间序列数据库,可以高效地存储和查询大量的指标数据。

  • 强大的可视化和告警功能:Prometheus提供了Web界面和API,可以方便地展示和查询监控数据。

  • 可扩展性强:Prometheus的架构非常灵活,可以根据需要选择合适的组件进行配置。CNCF的成员项目:Prometheus作为CNCF的项目之一,得到了广泛的关注和支持,并且得到了来自全球各地的贡献者的积极参与和开发。

Prometheus介绍

下面就Prometheus基于本地环境进行监控报警进行讲解。

1.下载

docker pull prom/prometheus:v2.43.0

e5e22344624d35b864e35275b1e7b3bf19c760.png

2.配置

创建文件夹data

f68137c506f7d6ee683612fa9b96c36c725790.png

创建配置文件prometheus.yml,可以根据需要进行调整:

global:scrape_interval:15s # Bydefault,scrape targets every15seconds.# Attach these labels to any time series or alerts when communicatingwith# externalsystems(federation,remote storage,Alertmanager).external_labels:monitor:'codelab-monitor'#Ascrape configuration containing exactly one endpoint to scrape:# Here it's Prometheus itself.scrape_configs:# The job name is addedasa label`job=<job_name>`to any timeseries scraped fromthisconfig.-job_name:'prometheus'# Override the globaldefaultand scrape targets fromthisjob every5seconds.scrape_interval:5sstatic_configs:-targets:['localhost:9090']

因为路径过长,创建软链目录/data/prometheus:

ln-s/Users/weizhao.dong/Documents/soft/prometheus/data/prometheus

3.启动

docker run--name prometheus-d-p9090:9090-v/data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml-v/data/prometheus:/prometheus prom/prometheus:v2.43.0

c8d839633347df06a52434dfea78b6d1a94ede.png

21a9c0307ac4748207f3435d8c19c210eed4b2.png

Grafana安装

1.下载

docker pull grafana/grafana-enterprise:8.5.22

85f877c812210072fdf410880ff93b13d79332.png

2.启动

docker run-d--name=grafana-p3000:3000grafana/grafana-enterprise:8.5.22

58cc1c95473b048ecfa462c50247fc4b7a9e89.png

3.配置数据源

添加prometheus数据源:

224f00a18b8080438f52977a036b9ba0b07229.png

b74becf137fde2db26d006e3f684e1e7d3c5e6.png

Linux服务器资源监控

1.下载node-exporter

选择指定版本,并下载:

wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-arm64.tar.gz

下载解压执行node_exporter文件暴漏9100端口,即可采集到监控信息

0464e65866ce3310142097eee5d7b05b7a1827.png

a55143b99928d0dc3c7017cf0adc5fe4beb87e.png

2.安装node-exporter

由于直接启动node-exporter关闭窗口此进程就会挂掉,不能满足需求,因此可以采用systemctl方式进行配置。

(1) 在/usr/lib/systemd/system/目录,创建node_exporter.service文件,内容如下,ExecStart指向的就是node_exporter执行文件:;

[Unit]Description=Node Exporter[Service]ExecStart=/usr/local/node_exporter
Restart=on-failure[Install]WantedBy=multi-user.target

(2) 执行systemctl daemon-reload

(3) 执行systemctl start node_exporter启动node_exporter

(4) 执行netstat -aon|grep 9100查看9100是否启动成功

5668fea8231f960f9ac54817b1d41a3afed45e.png

3.修改prometheus配置文件

增加以下任务,5s采集一次,这种方式属于Promethues的Pull 模式,即主动发起请求拉取目标数据:

-job_name:'linux'# Override the globaldefaultand scrape targets fromthisjob every5seconds.scrape_interval:5sstatic_configs:-targets:['10.211.55.4:9100']

24e1b3a98103396ae3091773a0c65b99969c09.png

4.重启prometheus

docker restart prometheus

c39190e29a1225cbc6843614169432d9e7eb19.png

26c001603a327ba30459468619d98fb6a9f1d8.png

5.Grafana文件配置

访问https://grafana.com/grafana/dashboards/,下载node_export配置文件:

d46141a2598c68abd8e14058dedf97546f84f4.png

点击右边的DownloadJson文件进行下载:

87b88a09161ec0f1bb414338aa80caed2a924a.png

将下载文件导入到Grafana:

4127a2902cfc5888ef0993be39c21dd2bfcd2b.png

导入完成以后,可以看到相关数据已采集。

59ca76898d15cc86986899fe4e195d3c73affe.png

总结

在本文中,我们介绍了什么是Prometheus,如何安装Prometheus,以及使用Prometheus的Pull(拉取)模式来采集Linux服务器资源,并在Grafana进行展现。

25    2023-12-27 08:47:41    Prometheus Linux 架构