运维从入门到跑路 – 监控篇 – Prometheus

释放双眼,带上耳机,听听看~!

什么是Pormetheus

Prometheus 是由 SoundCloud 开源监控告警解决方案,从 2012 年开始编写代码,再到 2015 年 github 上开源以来,已经吸引了 9k+ 关注,以及很多大公司的使用;2016 年 Prometheus 成为继 k8s 后,第二名 CNCF(Cloud Native Computing Foundation) 成员。

作为新一代开源解决方案,很多理念与 Google SRE 运维之道不谋而合。

主要功能

  • 多维 数据模型(时序由 metric 名字和 k/v 的 labels 构成)。

  • 灵活的查询语句(PromQL)。

  • 无依赖存储,支持 local 和 remote 不同模型。

  • 采用 http 协议,使用 pull 模式,拉取数据,简单易懂。

  • 监控目标,可以采用服务发现或静态配置的方式。

  • 支持多种统计数据模型,图形化友好。

核心组件

  • Prometheus Server, 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。

  • client libraries,用于对接 Prometheus Server, 可以查询和上报数据。

  • push gateway ,用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。

  • 各种汇报数据的 exporters ,例如汇报机器数据的 node_exporter, 汇报 MongoDB 信息的 MongoDB exporter 等等。

  • 用于告警通知管理的 alertmanager

基础架构

运维从入门到跑路 – 监控篇 – Prometheus插图

从这个架构图,也可以看出 Prometheus 的主要模块包含, Server, Exporters, Pushgateway, PromQL, Alertmanager, WebUI 等。

它大致使用逻辑是这样:

  1. Prometheus server 定期从静态配置的 targets 或者服务发现的 targets 拉取数据。

  2. 当新拉取的数据大于配置内存缓存区的时候,Prometheus 会将数据持久化到磁盘(如果使用 remote storage 将持久化到云端)。

  3. Prometheus 可以配置 rules,然后定时查询数据,当条件触发的时候,会将 alert 推送到配置的 Alertmanager。

  4. Alertmanager 收到警告的时候,可以根据配置,聚合,去重,降噪,最后发送警告。

  5. 可以使用 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插图(1)

在默认配置中,我们已经添加了 Prometheus Server 的监控,所以我们现在可以使用 PromQL (Prometheus Query Language)来查看,比如:

运维从入门到跑路 – 监控篇 – Prometheus插图(2)

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

运维从入门到跑路 – 监控篇 – Prometheus插图(3)

添加 Dashboard -> New Dashboard -> Import Dashboard -> 输入11074,导入Linux监控模板. 并配置数据源为Prometheus,即上一步中的name 配置完保存后即可看到逼格非常高的系统主机节点监控信息,包括系统运行时间, 内存和CPU的配置, CPU、内存、磁盘、网络流量等信息, 以及磁盘IO、CPU温度等信息。

运维从入门到跑路 – 监控篇 – Prometheus插图(4) 运维从入门到跑路 – 监控篇 – Prometheus插图(5)

运维从入门到跑路 – 监控篇 – Prometheus插图(6)

安装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 显示如下

运维从入门到跑路 – 监控篇 – Prometheus插图(7)

安装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插图(8)

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插图(9)

本文主要讲了Prometheus从安装以及添加监控,配置看板,以及添加告警规则和告警通知,总体比较简单,有些深一点的没有讲,后续慢慢道来

人已赞赏
Linux学习笔记技术杂烩转载

四种方法解决宝塔强制登陆

2020-10-10 18:54:38

Linux学习笔记技术杂烩杂七杂八网站建设软件开发

Windows一键重装系统为Linux (netboot,网络安装)

2020-10-22 2:58:56

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索