本文共 4342 字,大约阅读时间需要 14 分钟。
Prometheus 是一个开源的系统监控和报警系统,主要由 Go 语言开发。它不仅是一套监控框架,还内置了一个时序列数据库(TSDB)。Prometheus 的主要特点是通过 HTTP 协议周期性地从被监控组件(称为 exporter)拉取数据,因此无需依赖 SDK 或其他复杂集成过程,特别适合用于虚拟化环境的监控,如 VM、Docker 和 Kubernetes 等。
Prometheus 的基本工作原理是通过 HTTP 协议定期从 exporter 接收数据。任何提供标准 HTTP 接口的组件都可以接入监控,无需额外的 SDK 或集成步骤。这种设计使得 Prometheus 在虚拟化环境的监控中特别高效,例如用于监控 VM、Docker 容器或 Kubernetes 集群。
Prometheus 的组件包括:
Prometheus 服务器:核心组件,用于收集目标数据并存储在本地磁盘的时序数据库中,同时支持数据查询和自定义 PromeQL 语言。
Client Library:用于在应用程序中集成监控功能,向 Prometheus 提供 metric 数据类型。
Exporter:数据采集器,通过 HTTP 接口(如 /metrics)向 Prometheus 服务器提交数据。
Pushgateway:用于处理短期或批量任务的数据汇聚节点。Prometheus 默认通过 pull 方式从 exporter 获取数据,而 Pushgateway 则通过 push 方式向 Prometheus 服务器提交数据。
Alertmanager:负责处理和路由告警信息,支持多种告警接收方式(如邮箱、钉钉等)。
Service Discovery:动态发现待监控目标,简化监控配置。
Prometheus 不直接监控特定目标,而是依赖 exporter 提供数据。Exporter 可以是独立运行的程序,也可以内置在监控目标中,只要能够提供标准格式的监控数据即可。
Node_Exporter 是一个常用的 exporter,通过 HTTP 接口(如 /metrics)暴露监控数据,Prometheus服务器定期从此接口拉取数据。
Grafana 是一个开源的可视化工具,用于展示 Prometheus 的监控数据。使用步骤如下:
在 Grafana 中添加 Prometheus 作为数据源,配置查询语句以获取所需数据。
创建仪表盘并添加图表,Grafana 会根据查询语句从 Prometheus 获取数据并进行可视化。
拉取 Node_Exporter 镜像:
docker pull prom/node-exporter
启动 Node_Exporter:
docker run -d -p 9100:9100 --name=node_exporter --restart=always -v /proc:/host/proc:ro -v /sys:/host/sys:ro -v /: /rootfs:ro --net=host prom/node-exporter
访问 Node_Exporter 界面:
http://localhost:9100使用 Homebrew 安装:
brew install node_exporter
启动服务:
brew services start node_exporter
访问 Node_Exporter 界面:
http://localhost:9100在 Prometheus 配置文件中添加 Node_Exporter 的配置:
scrape_configs: - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] - job_name: "node_exporter" static_configs: - targets: ["localhost:9100"]
使用 Homebrew 安装:
brew install prometheus
查看安装目录:
which prometheus
启动 Prometheus:
nohup ./prometheus --config.file=/opt/homebrew/etc/prometheus.yml &
启动成功:
cat nohup.out 查看启动日志。使用 Homebrew 安装:
brew install grafana
启动 Grafana:
grafana-server --config=/opt/homebrew/etc/grafana/grafana.ini --homepath=/opt/homebrew/share/grafana --packaging=brew cfg:default.paths.logs=/opt/homebrew/var/log/grafana cfg:default.paths.data=/opt/homebrew/var/lib/grafana cfg:default.paths.plugins=/opt/homebrew/var/lib/grafana/plugins
访问 Grafana 界面:
http://localhost:3000创建配置文件:
mkdir -p ~/env/prometheusvim ~/env/prometheus/prometheus.yml
添加 Node_Exporter 配置:
global: scrape_interval: 15s evaluation_interval: 15sscrape_configs: - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] - job_name: "node_exporter" static_configs: - targets: ["localhost:9100"]
重载 Prometheus 配置:
kill -f prometheus./prometheus --config.file=/opt/homebrew/etc/prometheus.yml
测试 Node_Exporter:
http://localhost:9100拉取 Prometheus 镜像:
docker pull prom/prometheus
创建配置文件:
mkdir -p ~/env/prometheusvim ~/env/prometheus/prometheus.yml
启动 Prometheus:
docker run -d --name=prometheus --restart=always -p 9090:9090 -v ~/env/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
访问 Prometheus 界面:
http://env-base:9090拉取 Grafana 镜像:
docker pull grafana/grafana
启动 Grafana:
docker run -d --name=grafana --restart=always -p 3000:3000 -v ~/env/grafana:/var/lib/grafana grafana/grafana
访问 Grafana 界面:
http://env-base:3000拉取 Node_Exporter 镜像:
docker pull prom/node-exporter
启动 Node_Exporter:
docker run -d -p 9100:9100 --name=node_exporter --restart=always -v /proc:/host/proc:ro -v /sys:/host/sys:ro -v /: /rootfs:ro --net=host prom/node-exporter
访问 Node_Exporter 界面:
http://env-base:9100在 Docker 环境下配置 Prometheus.yml:
global: scrape_interval: 15s evaluation_interval: 15sscrape_configs: - job_name: "prometheus" static_configs: - targets: ['env-base:9090'] - job_name: "grafana" static_configs: - targets: ['env-base:3000'] - job_name: "node_exporter" static_configs: - targets: ['env-base:9100']
在 Grafana 中添加数据源:
选择 Prometheus,配置 URL 和查询语句。创建仪表盘:
添加图表并配置查询,Grafana 会从 Prometheus 获取数据并进行可视化。在 Grafana 中找到喜欢的仪表盘,复制其 ID。
将 ID粘贴到目标仪表盘的路径中,完成引入。
通过以上步骤,可以完成 Prometheus 生态的安装和配置,包括 Grafana 的可视化展示。
转载地址:http://lhxfk.baihongyu.com/