Linux企业实战之监控(九)——Prometheus

Prometheus

1、Prometheus 概述

Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud 公司开发的。现在最常见的 Docker、Mesos、Kubernetes 容器管理系统中,通常会搭配Prometheus 进行监控。

  • Prometheus 基本原理是通过 HTTP 协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供 HTTP 接口就可以接入监控系统,不需要任何 SDK 或者其他的集成过程。这样做非常适合虚拟化,环境比如 VM 或者 Docker 。
  • 输出被监控组件信息的 HTTP 接口被叫做 exporter。目前互联网公司常用的组件大部分都有
    exporter 可以直接使用,比如 Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、
    内存、CPU、网络等等),具体支持的源看:https://github.com/prometheus

2、Prometheus 架构图解

在这里插入图片描述
Prometheus 各组件运行流程如下:

  • 1、Prometheus Server:Prometheus Sever 是 Prometheus 组件中的核心部分,负责实现对监控数据的获取,存储及查询。Prometheus Server 可以通过静态配置管理监控目标,也可以配合使用Service Discovery(服务发现)的方式动态管理监控目标,并从这些监控目标中获取数据。其次Prometheus Sever 需要对采集到的数据进行存储,Prometheus Server 本身就是一个实时数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。Prometheus Server 对外提供了自义的PromQL,实现对数据的查询以及分析。另外 Prometheus Server 的联合集群能力可以使其从其他的Prometheus Server 实例中获取数据。

  • 2、Exporters:Exporter将监控数据采集的端点通过 HTTP 服务的形式暴露给Prometheus Server,Prometheus Server 通过访问该 Exporter 提供的 Endpoint 端点,即可以获取到需要采集的监控数据。
    可以将 Exporter 分为 2 类:

    • (1)、直接采集:这一类 Exporter 直接内置了对 Prometheus 监控的支持,比如 cAdvisor,Kubernetes,Etcd,Gokit 等,都直接内置了用于向 Prometheus 暴露监控数据的端点。
    • (2)、间接采集:原有监控目标并丌直接支持 Prometheus,因此需要通过 Prometheus 提供的 Client Library 编写该监控目标的监控采集程序。例如:Mysql Exporter,JMX Exporter,Consul Exporter等。
  • 3、AlertManager:在 Prometheus Server 中支持基于 Prom QL 创建告警原则,如果满足 Prom QL 定义的觃则,则会产生一条告警。常见的接收斱方式有:电子邮件,webhook 等。

  • 4、PushGateway:Prometheus 数据采集基于 Prometheus Server 从 Exporter pull 数据,因此当网络环境允许 Prometheus Server和 Exporter 进行通信时,可以使用 PushGateway 来进行中转。
    AlertManager:在 Prometheus Server 中支持基于 Prom QL 创建告警,如果满足 Prom QL 定义的觃则,则会产生一条告警。常见的接收斱式有:电子邮件,webhook 等。

3、Prometheus 的工作流程

  • 1、Prometheus server 定期从配置好的 jobs 和 exporters 中拉取 metrics,或者接收来自Pushgateway 发送过来的 metrics,或者从其它的 Prometheus server 中拉metrics。
  • 2、Prometheus server 在本地存储收集到的 metrics,并运行定义好的 alerts.rules,记录新的时间序列或者向 Alert manager 推送警报。
  • 3、Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警。
  • 4、在图形界面中,可规化采集数据。

4、搭建Prometheus过程

  • 步骤一:配置epel源
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    步骤二:安装并且配置Prometheus
yum install go -y       #安装go语言,因为Prometheus是用go语言写的
tar zxvf prometheus-2.7.1.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
cd prometheus-2.7.1.linux-amd64/
vim prometheus.yml

 30   - job_name: system-status  #每一个job_name都是一个监控项,这里代表监控操作系统状态
 31     static_configs:
 32       - targets: ['192.168.0.103:9100']   #被监控主机IP地址和端口
 33         labels:
 34           instance: server3     #实例名称,在grafana中表示对应的主机
 35 
 36   - job_name: mysql-status   #监控mysql数据库状态
 37     static_configs:
 38       - targets: ['192.168.0.103:9104']   #目标主机IP地址和端口
 39         labels:
 40           instance: server3-mysql  #实例名称,在 grafana 中表示对应的主机

在这里插入图片描述
在这里插入图片描述

./prometheus  --config.file=prometheus.yml &

在这里插入图片描述

  • 步骤三:在浏览器中输入http://192.168.0.102:9090
    在这里插入图片描述
  • 步骤四:启动用于采集linux系统的exporter服务
    在这里插入图片描述
  • 步骤五:在server3上安装数据库,并且配置mysqld_exporter用于监控 server3上的mysql服务
yum install -y mariadb-server mariadb 
systemctl start mariadb
mysql_secure_installation
mysql -uroot -predhat
GRANT REPLICATION CLIENT,PROCESS ON *.* TO 'mysql_monitor'@'localhost' 
    -> identified by '123456';

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在 web 界面,再次查看监控信息已经成功添加linux和mysql节点,已经up了
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值