什么是 prometheus?
Prometheus 是由 SoundCloud 开源监控告警解决方案, 从 2012 年开始编写代码, 再到 2015 年 GitHub 上开源以来, 已经吸引了 9k+ 关注, 以及很多大公司的使用; 2016 年 Prometheus 成为继 k8s 后, 第二名 CNCF(Cloud Native Computing Foundation) 成员.
主要功能:
多维 数据模型 (时序由 metric 名字和 k/v 的 labels 构成).
灵活的查询语句 (PromQL).
无依赖存储, 支持 local 和 remote 不同模型.
采用 http 协议, 使用 pull 模式, 拉取数据, 简单易懂.
监控目标, 可以采用服务发现或静态配置的方式.
支持多种统计数据模型, 图形化友好.
核心组建:
Prometheus Server, 主要用于抓取数据和存储时序数据, 另外还提供查询和 Alert Rule 配置管理.
client libraries, 用于对接 Prometheus Server, 可以查询和上报数据.
push gateway , 用于批量, 短期的监控数据的汇总节点, 主要用于业务数据汇报等.
exporters , 部署在客户端的 agent 例如汇报机器数据的 node_exporter, 汇报 MongoDB 信息的 MongoDB exporter 等等.
alertmanager 用于告警通知管理的
基础架构图:
从这个架构图, 也可以看出 Prometheus 的主要模块包含, Server, Exporters, Pushgateway, PromQL, Alertmanager, webUI 等.
它大致使用逻辑是这样:
Prometheus server 定期从静态配置的 targets 或者服务发现的 targets 拉取数据.
当新拉取的数据大于配置内存缓存区的时候, Prometheus 会将数据持久化到磁盘 (如果使用 remote storage 将持久化到云端).
Prometheus 可以配置 rules, 然后定时查询数据, 当条件触发的时候, 会将 alert 推送到配置的 Alertmanager.
Alertmanager 收到警告的时候, 可以根据配置, 聚合, 去重, 降噪, 最后发送警告.
可以使用 API, Prometheus Console 或者 Grafana 查询和聚合数据.
以上内容转载:
安装: prometheus
(1) 下载安装包 https://prometheus.io/download/ 至指定目录如 / Download
shell>gwet
(2) 解压 prometheus
- shell>tar -xvzf ~/Download/prometheus-2.13.1.Linux-amd64.tar.gz
- shell>mv prometheus-2.13.1.Linux-amd64 prometheus
- shell>cd prometheus
- shell>ls prometheus
prometheus 启动文件
prometheus.YAML 配置文件
data 存储文件
(3) 检查 prometheus 版本
- shell> ./prometheus version
- prometheus, version 2.13.0 (branch: HEAD, revision: 6ea4252299f542669aca11860abc2192bdc7bede)
- build user: [email protected]
- build date: 20191004-11:25:34
- go version: go1.13.1
(4) 启动 prometheus server
- shell> ./prometheus #正常启动会输出很多信息
- level=info ts=2019-10-17T09:29:45.851Z caller=main.go:332 msg="Starting Prometheus" version="(version=2.13.0, branch=HEAD, revision=6ea4252299f542669aca11860abc2192bdc7bede)"
(5) 查看端口监听, 监听端口 9090
- shell>netstat -tunlp | grep prometheus
- tcp6 0 0 :::9090 :::* LISTEN 31879/./prometheus
(6) 通过 Web 访问 http://IP:9090
(7) 以服务的方式启动
- shell>VIM /etc/systemd/system/prometheus.service
- [Unit]
- Description=Prometheus Monitoring System
- Documentation=Prometheus Monitoring System
- [Service]
- ExecStart=/Download/prometheus/prometheus --config.file /Download/prometheus/prometheus.YAML --Web.listen-address=:9090
- [Install]
- WantedBy=multi-user.target
- shell> systemctl daemon-reload
- shell> systemctl enable prometheus
- shell> systemctl start prometheus
来源: http://www.bubuko.com/infodetail-3254936.html