什么是Pormetheus
是由 SoundCloud 开源监控告警解决方案,从 2012 年开始编写代码,再到 2015 年 github 上开源以来,已经吸引了 9k+ 关注,以及很多大公司的使用;2016 年 Prometheus 成为继 k8s 后,第二名 CNCF() 成员。
作为新一代开源解决方案,很多理念与 Google SRE 运维之道不谋而合。
主要功能
-
多维 (时序由 metric 名字和 k/v 的 labels 构成)。
-
灵活的查询语句()。
-
无依赖存储,支持 local 和 remote 不同模型。
-
采用 http 协议,使用 pull 模式,拉取数据,简单易懂。
-
监控目标,可以采用服务发现或静态配置的方式。
-
支持多种统计数据模型,图形化友好。
核心组件
-
, 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。
-
,用于对接 Prometheus Server, 可以查询和上报数据。
-
,用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。
-
各种汇报数据的 ,例如汇报机器数据的 node_exporter, 汇报 MongoDB 信息的 等等。
-
用于告警通知管理的 。
基础架构
从这个架构图,也可以看出 Prometheus 的主要模块包含, Server, Exporters, Pushgateway, PromQL, Alertmanager, WebUI 等。
它大致使用逻辑是这样:
-
Prometheus server 定期从静态配置的 targets 或者服务发现的 targets 拉取数据。
-
当新拉取的数据大于配置内存缓存区的时候,Prometheus 会将数据持久化到磁盘(如果使用 remote storage 将持久化到云端)。
-
Prometheus 可以配置 rules,然后定时查询数据,当条件触发的时候,会将 alert 推送到配置的 Alertmanager。
-
Alertmanager 收到警告的时候,可以根据配置,聚合,去重,降噪,最后发送警告。
-
可以使用 API, Prometheus Console 或者 Grafana 查询和聚合数据。
Prometheus安装
我们可以到 Prometheus 二进制安装包,根据自己的操作系统选择下载对应的安装包。下面我们将以 centos 作为演示。
下载并启动Prometheus
cd /opt/ wget https://github.com/prometheus/prometheus/releases/download/v2.22.0/prometheus-2.22.0.linux-amd64.tar.gz tar -xf prometheus-2.22.0.linux-amd64.tar.gz cd prometheus-2.22.0.linux-amd64 ./prometheus --web.enable-lifecycle &
当 Prometheus 启动后,通过浏览器来访问 http://IP:9090
在默认配置中,我们已经添加了 Prometheus Server 的监控,所以我们现在可以使用 PromQL
(Prometheus Query Language)来查看,比如:
Prometheus添加机器监控
在 Prometheus 中负责数据汇报的程序统一叫做 Exporter, 而不同的 Exporter 负责不同的业务。 它们具有统一命名格式,即 xx_exporter, 例如负责主机信息收集的 node_exporter。
Prometheus 社区已经提供了很多 exporter, 详情请参考 。
这里我们使用node_exporter 监控Linux
安装启动
我们可以到 选择对应的二进制安装包,下面我将以 0.14.0
作为例子,
cd /opt/ wget https://github.com/prometheus/node_exporter/releases/download/v0.14.0/node_exporter-0.14.0.linux-amd64.tar.gz tar -xvzf node_exporter-0.14.0.linux-amd64.tar.gz ./node_exporter &
Prometheus添加node_exporter数据
打开 prometheus.yml 文件, 在 scrape_configs 中添加如下配置:
cd prometheus-2.22.0.linux-amd64/ vim prometheus.yml - job_name: "node" static_configs: - targets: ["ip:9100"] curl -XPOST http://ip:9090/-/reload #重载prometheus配置
重启加载配置,然后到 Prometheus Console 查询,你会看到 node_exporter 的数据。
安装Grafana 并添对Prometheus数据进行展示
安装启动grafana
wget https://dl.grafana.com/oss/release/grafana-7.2.1-1.x86_64.rpm yum install grafana-7.2.1-1.x86_64.rpm
granafa默认端口为3000,可以在浏览器中输入http://ip:3000/ granafa首次登录账户名和密码admin/admin,可以修改 配置数据源Data sources->Add data source -> Prometheus,输入prometheus数据源的信息,主要是输入name和url
添加 Dashboard -> New Dashboard -> Import Dashboard -> 输入11074,导入Linux监控模板. 并配置数据源为Prometheus,即上一步中的name 配置完保存后即可看到逼格非常高的系统主机节点监控信息,包括系统运行时间, 内存和CPU的配置, CPU、内存、磁盘、网络流量等信息, 以及磁盘IO、CPU温度等信息。
安装Alertmanager 添加告警规则以及告警消息通知
安装配置启动alertmanager
cd /opt/ wget https://github.com/prometheus/alertmanager/releases/download/v0.14.0/alertmanager-0.14.0.linux-amd64.tar.gz tar -xf alertmanager-0.14.0.linux-amd64.tar.gz cd alertmanager-0.14.0.linux-amd64 vim alertmanager.yml #修改配置文件 global: resolve_timeout: 5m route: group_by: ['instance'] group_wait: 10m group_interval: 10s repeat_interval: 10m receiver: 'web.hook.prometheusalert' receivers: - name: 'web.hook.prometheusalert' webhook_configs: - url: 'http://[prometheusalert_url]:8080/prometheus/alert' ./alertmanager --config.file=alertmanager.yml &
配置文件中prometheusalert_url 为后面的prometheusalert 告警发送工具,后面详细描述
启动后访问http://ip:9093 显示如下
安装PrometheusAlert 多通道告警
安装配置启动PrometheusAlert
cd /opt/ wget https://github.com/feiyu563/PrometheusAlert/releases/download/v4.1/linux.zip unzip linux.zip cd linux ./PrometheusAlert &
启动后打开http://ip:8080
Prometheus配置告警规则
cd /opt/prometheus-2.22.0.linux-amd64/ vim prometheu.yml rule_files "rules/*.rules" mkdir /rules/ vim /rules/cpu.rules groups 1. name node_alert rules 2. alert 主机CPU告警 expr node_load1 > 1 labels name prometheusalertcenter level 3 #告警级别,告警级别定义 0 信息,1 警告,2 一般严重,3 严重,4 灾难 annotations description"{{ $labels.instance }} CPU load占用过高" #告警信息 mobile 15888888881,15888888882,15888888883 #告警发送目标手机号(需要设置电话和短信告警级别) ddurl"https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #支持添加多个钉钉机器人告警,用,号分割即可,如果留空或者未填写,则默认发送到配置文件中填写的钉钉器人地址 wxurl"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx-xxxxxx-xxxxxx-xxxxxx,https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxx-xxxx-xxxxxxx-xxxxx" #支持添加多个企业微信机器人告警,用,号分割即可,如果留空或者未填写,则默认发送到配置文件中填写的企业微信机器人地址 保存后重载Prometheus配置 curl -XPOST http://ip:9090/-/reload #重载prometheus配置
查看告警效果
当Cpu达到告警界限后就会收到消息
本文主要讲了Prometheus从安装以及添加监控,配置看板,以及添加告警规则和告警通知,总体比较简单,有些深一点的没有讲,后续慢慢道来
http://kwanarch.com/支持