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采用的是key-value对的形式存储指标数据,每个指标都可以包含多个标签(labels),这样可以更加灵活地描述指标数据 高效的存储和查询:Prometheus使用自己的时间序列数据库,可以高效地存储和查询大量的指标数据。 强大的可视化和告警功能:Prometheus提供了Web界面和API,可以方便地展示和查询监控数据。 可扩展性强:Prometheus的架构非常灵活,可以根据需要选择合适的组件进行配置。 CNCF的成员项目:Prometheus作为CNCF的项目之一,得到了广泛的关注和支持,并且得到了来自全球各地的贡献者的积极参与和开发。
Prometheus介绍
下载
docker pull prom/prometheus:v2.43.0
复制

配置
创建文件夹data
创建配置文件prometheus.yml
,可以根据需要进行调整
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090'复制
注意:授权文件权限,不然会报错
sudo chown -R 65534:65534 /root/prometheus
sudo chmod -R 777 /root/prometheus复制
启动
docker run --name prometheus -d -p 9090:9090 \
-v /root/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /root/prometheus:/prometheus \
--user 65534:65534 \
prom/prometheus:v2.43.0复制


Grafana安装
下载
docker pull grafana/grafana-enterprise:8.5.22
复制

启动
docker run -d --name=grafana -p 3000:3000 grafana/grafana-enterprise:8.5.2
复制
浏览器输入:ip:3000,默认账号密码都是admin,第一次登录需要修改密码
复制
配置数据源


Linux服务器资源监控
下载node-exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-arm64.tar.gz
复制
如果下载太慢,可以使用
链接:https://pan.baidu.com/s/1JBseazd_LzR6YzjWyaYtDQ?pwd=dgs6
提取码:dgs6
tar -xvf node_exporter-1.6.1.linux-amd64.tar.gz复制
node_exporter
文件暴漏9100端口,即可采集到监控信息


安装node-exporter
由于直接启动node-exporter
关闭窗口此进程就会挂掉,不能满足需求,因此可以采用systemctl方式进行配置
在/usr/lib/systemd/system/
目录,创建node_exporter.service
文件,内容如下,ExecStart指向的就是node_exporter
执行文件
[Unit]
Description=Node Exporter
[Service]
ExecStart=/root/prometheus/node_exporter-1.6.1.linux-amd64/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.targe复制
执行systemctl daemon-reload
执行systemctl start node_exporter启动node_exporter
修改prometheus配置文件
- job_name: 'linux'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['10.211.55.4:9100']复制
重启prometheus
docker restart prometheus
复制

Grafana文件配置
访问https://grafana.com/grafana/dashboards/,下载node_export配置文件
点击右边的DownloadJson文件进行下载
将下载文件导入到Grafana

选中datasources
导入完成以后,可以看到相关数据已采集。
总结
在本文中,我们介绍了什么是Prometheus,如何安装Prometheus,以及使用Prometheus的Pull(拉取)模式来采集Linux服务器资源,并在Grafana进行展现。
---THE END---