prometheus架构图
prometheus 各组件介绍
- Prometheus Server: 使用pull方式采集监控数据,在该组件上配置监控数据的采集和告警规则。
- Client Library: 客户端库,为需要监控的服务生成相应的 metrics 并暴露给 prometheus server。当 prometheus server 来 pull 时,直接返回实时状态的 metrics。
- Push Gateway: 主要用于短期的 jobs。由于这类 jobs 存在时间较短,可能在prometheus来pull之前就消失了。为此,这次 jobs 可以直接向 Prometheus server 端推送它们的 metrics。这种方式主要用于服务层面的 metrics,对于机器层面的 metrices,需要使用 node exporter。
- Exporters: 用于暴露已有的第三方服务的 metrics 给 Prometheus。
- Alertmanager: 用于接收promethues发出的告警做进一步处理,对告警进行聚合、下发、抑制等。常见的告警方式有:邮件,钉钉,webhook 等一些其他的工具。
安装prometheus
# wget https://github.com/prometheus/prometheus/releases/download/v2.8.1/prometheus-2.8.1.linux-amd64.tar.gz
# tar xzvf prometheus-2.8.1.linux-amd64.tar.gz
# mv prometheus-2.8.1.linux-amd64 /usr/local/promethues
配置文件prometheus.yml
global: #全局配置 scrape_interval: 15s # 收集数据的间隔时间,默认为1m scrape_timeout: 10s #请求接口获取metrics数据的超时时间 evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. #alerting: #告警配置 # alertmanagers: # - static_configs: # - targets: ['127.0.0.1:9093'] #rule_files: #告警规则配置 # - "rules/*.yml" scrape_configs: #配置被监控端 - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] # - job_name: 'test-node' # file_sd_configs: # - files: ['/usr/local/prometheus/sd_config/node.yml'] # refresh_interval: 5s
#remote_write: #配置远程存储
# [ - <remote_write> ...]
#remote_read:
# [ - <remote_read> ...]
检查配置文件有没有错误:
# ./promtool check config prometheus.yml
重载prometheus配置文件的两种方法:
- 1,通过HTTP API向/-/reload发送POST请求,例:curl -X POST http://localhost:9090/-/reload (这种方式必须在prometheus启动参数里面加上参数:--web.enable-lifecycle)
- 2,prometheus进程发送SIGHUP信号 # kill -HUP `pgrep prometheus`
启动
以守护进程的方式启动:
[Unit] Description=prometheus [Service] Restart=on-failure ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml [Install] WantedBy=multi-user.target