简介
Prometheus 是一个开源系统监控和报警工具包,主要用于收集和处理时间序列数据,监控分布式系统和云原生环境 。 广泛应用于微服务架构、容器化环境以及各种分布式系统的监控和告警。
主要功能
- 多维数据模(时序由 metric 名字和 k/v 的 labels 构成)。
- 灵活的查询语句(PromQL)。
- 无依赖存储,支持 local 和 remote 不同模型。
- 采用 http 协议,使用 pull 模式,拉取数据,简单易懂。
- 监控目标,可以采用服务发现或静态配置的方式。
- 支持多种统计数据模型,图形化友好。
组件
Prometheus Server
主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理
数据采集:通过 HTTP 拉取(pull)方式从各个目标端点获取监控数据。目标端点需要暴露一个符合 Prometheus 规范的 HTTP 接口(/metrics)
数据存储:将采集到的数据存储在本地的时序数据库中。
数据查询:提供 PromQL 查询语言,用户可以用它来实时查询、分析和聚合监控数据
Alertmanager
告警管理组件,用于处理 Prometheus 服务器触发的告警。
Pushgateway
Pushgateway 允许短生命周期的批处理任务推送他们的指标到 Prometheus。
- 数据推送:短期任务或批处理任务可以将数据推送到 Pushgateway,然后由 Prometheus 拉取这些数据。
- 适用场景:适用于那些不能被 Prometheus 直接拉取监控数据的短期任务。(网络环境不允许Prometheus Server和Exporter进行通信时)。
Exporters
Exporters 是用于将各种第三方系统的监控数据转换成 Prometheus 格式的工具 。
将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可以获取到需要采集的监控数据。
Prometheus Client Libraries
Prometheus 客户端库用于在应用程序中直接生成自定义的监控指标 ,通过这些库,开发者可以在其应用程序中嵌入监控代码,以收集并暴露应用程序内部的性能数据和其他指标
Client libraries | Prometheus
Prometheus UI
Prometheus 自带的用户界面,提供数据查询和简单的可视化功能 。
Grafana
Grafana | 查询、可视化、警报观测平台
Grafana 是一个开源的数据可视化和监控平台,广泛用于展示时间序列数据。
搭建过程示例:
拉取prometheus镜像
docker pull prom/prometheus
mkdir -p /server/docker/prometheus/{server,client}
touch /server/docker/prometheus/server/rules.yml
global:
scrape_interval:
external_labels:
monitor: 'codelab-monitor'
# 这里表示抓取对象的配置
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s #重写了全局抓取间隔时间,由15秒重写成5秒
static_configs:
- targets: ['localhost:9090','localhost:9100']
- job_name: 'client-node1'
static_configs:
- targets: ['192.168.137.133:9256']
修改static_configs监控目标
docker run --name prometheus -p 9090:9090
-v /server/docker/prometheus/server/prometheus.yml:/etc/prometheus/prometheus.yml
-v /server/docker/prometheus/server/rules.yml:/etc/prometheus/rules.yml
-itd prom/prometheus
–config.file=/etc/prometheus/prometheus.yml
–web.enable-lifecycle
访问页面
安装grafana
docker pull grafana/grafana
docker run --name=grafana -p 3000:3000 -itd grafana/grafana
将配置文件复制到宿主机:
docker cp grafana:/etc/grafana/grafana.ini /server/docker/prometheus/grafana/
docker rm -f grafana
启动grafana
docker run -p 3000:3000 --name grafana
-v /server/docker/prometheus/grafana/grafana.ini:/etc/grafana/grafana.ini
-v /server/docker/prometheus/grafana/data:/var/lib/grafana
-e “GF_SECURITY_ADMIN_PASSWORD=grafana123”
-itd grafana/grafana
-e “GF_SECURITY_ADMIN_PASSWORD=grafana123” 是设置grafana登陆页面的密码,如不添加这条,默认账号密码为admin/admin
启动问题
可能会有权限问题:chmod 777 /server/docker/prometheus/grafana/data
添加数据源
Docker搭建Prometheus+grafana监控系统 - 等风来~~ - 博客园 (cnblogs.com)
常用模板
https://www.jianshu.com/p/367d52fe1171 #grafana常用监控模板大全
https://grafana.com/grafana/dashboards/ #grafana官网模板
拉取 node-exporter 镜像
收集Host硬件和操作系统信息
192.168.137.131服务端 机器配置
docker pull prom/node-exporter
docker run --name=node-exporter -p 9100:9100 -itd prom/node-exporter
process-exporte
nohup ./process-exporter --config.path=./process-exporter.yml &
./process-exporter --config.path=./process-exporter.yml
配置文件 process-exporter.yml
##process-exporter.yaml
##监控所有端口
process_names:
- name: "{{.Comm}}"
cmdline:
- '.+'
访问192.168.137.133:9256/metrics
查看监控信息
windows配置
下载 prometheus Download | Prometheus
windows-exporter
https://github.com/prometheus-community/windows_exporter
https://github.com/prometheus/promu/releases
源码构建
.\windows_exporter.exe --config.file=config.yml .
localhost:9182/metrics
仅启用服务收集器并指定自定义查询
.\windows_exporter.exe --collectors.enabled “service” --collector.service.services-where “Name=‘windows_exporter’”
仅启用进程收集器并指定自定义查询
.\windows_exporter.exe --collectors.enabled “process” --collector.process.include=“firefox.+”
windows_exporter.exe --collectors.enabled “process”
grafana
模板10467
修改端口
自定义模板
查询指标
windows_process_working_set 要修改成 windows_process_working_set_bytes
13262