运维监控之-Prometheus+Grafana+node_exporter监控并报警到钉钉&邮件

环境

prometheus+grafana 192.168.1.192
agent01(被监控端) 192.168.1.22
agent02(被监控端) 192.168.1.25

一、Prometheus 简介

Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。

作为新一代的监控框架,Prometheus 具有以下特点:

  • 强大的多维度数据模型:

    1. 时间序列数据通过 metric 名和键值对来区分。

    2. 所有的 metrics 都可以设置任意的多维标签。

    3. 数据模型更随意,不需要刻意设置为以点分隔的字符串。

    4. 可以对数据模型进行聚合,切割和切片操作。

    5. 支持双精度浮点类型,标签可以设为全 unicode。

  • 灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作。

  • 易于管理: Prometheus server 是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。

  • 高效:平均每个采样点仅占 3.5 bytes,且一个 Prometheus server 可以处理数百万的 metrics。

  • 使用 pull 模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的 metrics。

  • 可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端。

  • 可以通过服务发现或者静态配置去获取监控的 targets。

  • 有多种可视化图形界面。

  • 易于伸缩。

需要指出的是,由于数据采集可能会有丢失,所以 Prometheus 不适用对采集数据要 100% 准确的情形。但如果用于记录时间序列数据,Prometheus 具有很大的查询优势,此外,Prometheus 适用于微服务的体系架构。

Prometheus 组成及架构

Prometheus 生态圈中包含了多个组件,其中许多组件是可选的:

  • Prometheus Server: 用于收集和存储时间序列数据。

  • 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: 从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件,pagerduty,OpsGenie, webhook 等。

  • 一些其他的工具。

图 1 为 Prometheus 官方文档中的架构图:

图 1. Prometheus 架构图

点击查看大图

工作流程

  • Prometheus 服务器定期从配置好的 jobs 或者 exporters 中获取度量数据;或者接收来自推送网关发送过来的 度量数据。

  • Prometheus 服务器在本地存储收集到的度量数据,并对这些数据进行聚合;

  • 运行已定义好的 alert.rules,记录新的时间序列或者向告警管理器推送警报。

  • 告警管理器根据配置文件,对接收到的警报进行处理,并通过email等途径发出告警。

  • Grafana等图形工具获取到监控数据,并以图形化的方式进行展示。

二、Prometheus安装及配置

1、下载及解压安装包

wget https://github.com/prometheus/prometheus/releases/download/v2.5.0/prometheus-2.5.0.linux-amd64.tar.gz

groupadd prometheus
useradd -g prometheus prometheus -d /software/prometheus

tar -xvf prometheus-2.5.0.linux-amd64.tar.gz
cd prometheus-2.5.0.linux-amd64/
mv * /software/prometheus/

cd /software/prometheus/
mkdir {data,cfg,logs,bin} -p
mv prometheus promtool bin/
mv prometheus.yml cfg/

chown -R prometheus.prometheus *

2 、设置环境变量

vim /etc/profile
PATH=/software/prometheus/bin:$PATH:$HOME/bin
source /etc/profile

4、创建prometheus.service 的 systemd unit 文件

vim /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/software/prometheus/bin/prometheus --config.file=/software/prometheus/cfg/prometheus.yml --storage.tsdb.path=/software/prometheus/data
Restart=on-failure

[Install]
WantedBy=multi-user.target

5、prometheus.yml配置文件

6、启动服务

systemctl daemon-reload
systemctl enable prometheus.service
systemctl start prometheus.service

7、运行状态

 

 

Prometheus自带有简单的UI, http://192.168.1.192:9090/targets

三、node_exporter安装及配置

1、下载及解压安装包

wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz

tar -xvf node_exporter-0.17.0.linux-amd64.tar.gz -C /software/prometheus/
cd  /software/prometheus/
mv node_exporter-0.17.0.linux-amd64 node_exporter

2、创建用户

groupadd prometheus
useradd -g prometheus prometheus -d /software/prometheus
chown -R prometheus.prometheus node_exporter

3、创建node_exporter.service的 systemd unit 文件

vim /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/software/prometheus/node_exporter/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target

4、启动服务

systemctl daemon-reload
systemctl enable node_exporter.service
systemctl start node_exporter.service

5、运行状态

6、客户监控端数据汇报

访问: http://192.168.1.92:9100/metrics,查看从exporter具体能抓到的数据.如下 :

 

四、Grafana安装及配置

1、下载及安装

wget https://dl.grafana.com/oss/release/grafana-5.4.0-1.x86_64.rpm
yum localinstall grafana-5.4.0-1.x86_64.rpm

2、启动服务

systemctl daemon-reload
systemctl enable grafana-server.service
systemctl start grafana-server.service

3、访问WEB界面

默认账号/密码:admin/admin

http://192.168.1.192:3000

4、Grafana添加数据源

在登陆首页,点击"Configuration-Data Sources"按钮,跳转到添加数据源页面,配置如下:
Name: prometheus
Type: prometheus
URL: http://192.168.1.192:9090/
Access: Server
取消Default的勾选,其余默认,点击"Add",如下:

在"Dashboards"页签下"import"自带的模版,如下:

五、 安装PromDash

虽然Prometheus服务器允许您查看图形和实验表达式,但它通常仅用于调试目的或运行一次性查询。 在Prometheus的时间序列数据库中可视化数据的首选方法是使用PromDash,这是一个工具,允许您创建自定义仪表板,它不仅高度可配置,而且更好看。

进入Prometheus目录:

cd ~/Prometheus

PromDash是一个Ruby on Rails应用程序,其源文件在GitHub上可用。 为了下载和运行它,你需要安装Git,Ruby和一些构建工具。 使用yum这样做。

sudo yum install git ruby ruby-devel sqlite-devel zlib-devel gcc gcc-c++ automake patch

您现在可以使用git命令来下载源文件。

git clone https://github.com/prometheus/promdash.git

进入promdash目录。

cd ~/Prometheus/promdash

PromDash取决于几个RubyGem。 为了自动化这些Gem的安装,你应该安装一个名为Gembundler 。

gem install bundler

现在,您可以使用bundle命令来安装所有PromDash需要Ruby的Gem。 正如我们将设置PromDash在本教程中使用sqlite3的工作,请确保您排除MySQL和PostgreSQL使用的Gem--without参数:

bundle install --without mysql postgresql

您可能需要等待几分钟才能完成此命令。 完成后,您应该会看到以下消息:

捆绑输出

. . .
Your bundle is complete!
Gems in the groups mysql and postgresql were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

 

 

六 、 设置Rails环境

创建一个目录来存储与PromDash相关联的SQLite3数据库。

mkdir ~/Prometheus/databases

PromDash使用称为环境变量DATABASE_URL以确定与之相关的数据库的名称。 键入使PromDash创建一个名为sqlite3的数据库以下mydb.sqlite3内部databases目录:

echo "export DATABASE_URL=sqlite3:$HOME/Prometheus/databases/mydb.sqlite3" >> ~/.bashrc

在本教程中,你将在生产模式下运行PromDash,所以设置RAILS_ENV环境变量来production 。

echo "export RAILS_ENV=production" >> ~/.bashrc

应用我们对所做的更改.bashrc文件。

. ~/.bashrc

其次,在使用的sqlite3的数据库中创建PromDash的表rake工具。

rake db:migrate

因为PromDash使用Rails Asset Pipeline,所以PromDash项目的所有资源(CSS文件,图像和Javascript文件)都应该预编译。 键入以下内容:

rake assets:precompile

七、启动和配置PromDash

PromDash在Thin(轻量级Web服务器)上运行。 通过键入以下命令作为守护程序启动服务器:

bundle exec thin start -d

等待几秒钟,服务器启动,然后访问http:// your_server_ip :3000/查看PromDash的主页。

PromDash的主页

在开始创建自定义仪表板之前,您应该让PromDash知道您的Prometheus服务器的URL。 您可以通过点击顶部的服务器选项卡上这样做。 单击新服务器 ,然后在形式,给予任何名义到你的Prometheus服务器。 设置的URL字段来http:// your_server_ip :9090和服务器类型字段Prometheus 。

PromDash的创建服务器屏幕

最后,点击创建服务器来完成配置。 您的网页会说服务器已成功创建。你可以在主菜单中单击后退到仪表板 。

八 、 创建仪表板

由于Promdash仪表盘应该属于一个Promdash目录,首先通过点击新建目录创建一个新的目录。 在显示出来的形式,提供一个名称的目录,如我的仪表盘 ,然后单击创建目录 。

提交表单后,您将被带回首页。 点击新建按钮, 仪表板现在创建一个新的仪表板。 在所示的形式,提供一个名称您的仪表板,喜欢简单仪表板并选择您刚刚从下拉菜单中创建的目录。

提交表单后,您将可以看到新的信息中心。

空控制板

您的信息中心已有一个图形,但需要进行配置。 悬停在图表的标题(它说标题 ),就会发现,让您配置图形各种图标。 要改变它的标题,您可以点击图和轴设置图标(第四从左边),然后键入在图表标题领域的新头衔。

点击数据源的图标,这是第二次到左侧,以一个或多个表达式添加到图表。 单击添加表达 ,并在上面写着输入表达式,输入运行节点特效领域。

添加表达式

现在点击图中的头球刷新图标(最左边的一个)来更新图表。 您的信息中心现在包含一个完全配置的图表。 您可以通过点击底部的添加图形按钮添加更多的图表。

完成所有变更后,请务必点击保存更改按钮上进行永久更改的权利。 下次访问PromDash的首页时,您将可以看到信息中心的链接:

PromDash仪表板

九、报警到各渠道

1、钉钉报警

2、邮件

结论

您现在已在CentOS 7服务器上运行一个功能齐全的Prometheus生态系统,您可以使用PromDash创建适合您需求的监控仪表板。

即使您安装一个CentOS的机器上的所有组件,您可以轻松地对他们每个人只安装节点出口商,并添加新节点出口商到的网址,监督更多的机器targets阵列prometheus.yml 。

您可以通过参考其更多地了解Prometheus文档 。

 

  • 14
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值