Prometheus企业级监控入门

1. Prometheus介绍

1.1. Prometheus简介

Prometheus 是一款基于时序数据库的开源监控告警系统,非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。Promethus有以下特点:

  • 支持多维数据模型:由度量名和键值对组成的时间序列数据
  • 内置时间序列数据库TSDB
  • 支持PromQL查询语言,可以完成非常复杂的查询和分析,对图表展示和告警非常有意义
  • 支持HTTP的Pull方式采集时间序列数据
  • 支持PushGateway采集瞬时任务的数据
  • 支持服务发现和静态配置两种方式发现目标
  • 支持接入Grafana

1.2. Prometheus架构

在这里插入图片描述
组件说明

  • prometheusserver:是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。
  • exporter:简单说是采集端,通过http服务的形式保留一个url地址,ndpoint端点,即可获取到需要采集的监控数据。
  • AlertManager:在prometheus中,支持基于PromQL创建告警规则,如果满足定义的规则,则会产生一条告警信息,进入AlertManager进行处理。可以集成邮件,微信或者通过webhook自定义报警。
  • Pushgateway:由于Prometheus数据采集采用pull方式进行设置的,内置必须保证prometheusserver和对应的exporter必须通信,当网络情况无法直接满足时,可以使用pushgateway来进行中转,可以通过pushgateway将内部网络数据主动push到gateway里面去,而prometheus采用pull方式拉取pushgateway中数据。

总结

  • prometheus负责从pushgateway和job中采集数据,存储到后端Storatge中,可以通过PromQL进行查询,推送alerts信息到AlertManager。AlertManager根据不同的路由规则进行报警通知。
1.2.1. Prometheus Server

主要负责数据采集和存储,提供PromQL查询语言的支持。包含了三个组件:

  • Retrieval: 获取监控数据
  • TSDB: 时间序列数据库(Time Series Database),我们可以简单的理解为一个优化后用来处理时间序列
  • 数据的软件,并且数据中的数组是由时间进行索引的。具备以下特点:
    • 大部分时间都是顺序写入操作,很少涉及修改数据
    • 删除操作都是删除一段时间的数据,而不涉及到删除无规律数据
    • 读操作一般都是升序或者降序
  • HTTP Server: 为告警和出图提供查询接口
1.2.2. 指标采集
  • Exporters: Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取
  • Pushgateway: 支持临时性Job主动推送指标的中间网关
1.2.3. 服务发现
  • Kubernetes_sd: 支持从Kubernetes中自动发现服务和采集信息。而Zabbix监控项原型就不适合Kubernets,因为随着Pod的重启或者升级,Pod的名称是会随机变化的。
  • file_sd: 通过配置文件来实现服务的自动发现
1.2.4. 告警管理

通过相关的告警配置,对触发阈值的告警通过页面展示、短信和邮件通知的方式告知运维人员。

1.2.5. 图形化展示

通过ProQL语句查询指标信息,并在页面展示。虽然Prometheus自带UI界面,但是大部分都是使用Grafana出图。另外第三方也可以通过 API 接口来获取监控指标。

1.3. 对比Zabbix

ZabbixPrometheus
后端用 C 开发,界面用 PHP 开发,定制化难度很高。后端用 golang 开发,前端是 Grafana,JSON 编辑即可解决。定制化难度较低。
集群规模上限为 10000 个节点。支持更大的集群规模,速度也更快。
更适合监控物理机环境,以IP地址为监控标识更适合云环境的监控,对 OpenStack,Kubernetes 有更好的集成。
监控数据存储在关系型数据库内,如 MySQL,很难从现有数据中扩展维度。监控数据存储在基于时间序列的数据库内,便于对已有数据进行新的聚合。
安装简单,zabbix-server 一个软件包中包括了所有的服务端功能。安装相对复杂,监控、告警和界面都分属于不同的组件。
图形化界面比较成熟,界面上基本上能完成全部的配置操作。界面相对较弱,很多配置需要修改配置文件。

主要使用场景区别是,Zabbix适合用于虚拟机、物理机的监控,因为每个监控指标是以 IP 地址作为标识进行区分的。而Prometheus的监控指标是由多个 label 组成,IP地址并不是唯一的区分指标,Prometheus 强大在可以支持自动发现规则,因此适合于容器环境。

从自定义监控项角度而言,Prometheus 开发难度较大,zabbix配合shell脚本更加方便。Prometheus在监控虚拟机上业务时,可能需要安装多个 exporter,而zabbix只需要安装一个 Agent。

Prometheus 采用拉数据方式,即使采用的是push-gateway,prometheus也是从push-gateway拉取数据。而Zabbix可以推可以拉。

2. Prometheus部署服务端

操作系统ip地址主机名应用
CentOS 7.8192.168.153.205grafanagrafana
CentOS 7.4192.168.153.143prometheusprometheus,alertmanager
CentOS 7.4192.168.153.144node1node_exporter

prometheus官网

2.1 下载安装

image-20211025214547541

[root@prometheus ~]#cd /usr/local/src/
[root@prometheus ~]#wget https://github.com/prometheus/prometheus/releases/download/v2.31.0-rc.0/prometheus-2.31.0-rc.0.linux-amd64.tar.gz
[root@prometheus ~]# tar -xzvf prometheus-2.31.0-rc.0.linux-amd64.tar.gz  -C /usr/local/
[root@prometheus local]# mv prometheus-2.31.0-rc.0.linux-amd64/ prometheus
[root@prometheus local]# cd prometheus/
[root@prometheus prometheus]# mkdir data #创建数据存放目录

2.2 创建Prometheus用户

[root@prometheus ~]#groupadd prometheus
[root@prometheus ~]#useradd -g prometheus -m -d /var/lib/prometheus -s /sbin/nologin prometheus

2.3 配置systemctl管理

[root@prometheus prometheus]# vim /usr/lib/systemd/system/prometheus.service
[root@prometheus prometheus]# cat /usr/lib/systemd/system/prometheus.service
[Unit]
Description=https://prometheus.io

[Service]
Restart=on-failure
ExecStart=/usr/local/prometheus/prometheus --storage.tsdb.path=/usr/local/prometheus/data --config.file=/usr/local/prometheus/prometheus.yml

[Install]
WantedBy=multi-user.target
[root@prometheus prometheus]# cp prometheus.yml prometheus.yml.bak
[root@prometheus prometheus]# systemctl start prometheus

image-20211025215554489

image-20211025215610597

image-20211025215645441

3. 部署监控端node_exporter

3.1 下载安装包

[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 0
[root@node1 ~]# cd /usr/local/src/
[root@node1 ~]# wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz

3.2 创建Prometheus用户

[root@node1 ~]#groupadd prometheus
[root@node1 ~]# useradd -g prometheus -m -d /var/lib/prometheus -s /sbin/nologin prometheus

3.3 解压安装包

[root@node1 ~]# tar -xvzf node_exporter-1.2.2.linux-amd64.tar.gz  -C /usr/local/
[root@node1 ~]# cd /usr/local/
[root@node1 local]# mv node_exporter-1.2.2.linux-amd64/ node_exporter
[root@node1 node_exporter]# nohup ./node_exporter & #这样启动也可以,但是我不是
[root@node1 node_exporter]# netstat -tnlp

image-20211025222353855

3.4 配置systemctl管理

[root@node1 node_exporter]# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=Prometheusnode_exporter

[Service]
User=nobody
ExecStart=/usr/local/node_exporter/node_exporter --log.level=error
ExecStop=/usr/bin/killallnode_exporter

[Install]
WantedBy=default.target
[root@node1 node_exporter]# systemctl start node_exporter  #配置完成之后,这样启动

3.5 配置Prometheus配置文件

#来到监控节点
[root@prometheus prometheus]# pwd
/usr/local/prometheus
[root@prometheus prometheus]# vim prometheus.yml  #在最后面添加监控主机
  - job_name: "node1"
    static_configs:
      - targets: ["192.168.153.144:9100"]

image-20211025223001485

[root@prometheus prometheus]# ./promtool check config prometheus.yml #检查配置文件语法有无问题

image-20211025223313248

[root@prometheus prometheus]# systemctl restart prometheus
image-20211025223125090

4. 部署Grafana

安装方式:

  • 选择rpm安装。

  • 二进制安装。(我这里是rpm安装)

4.1 下载Grafana

image-20211027094943445

[root@grafana ~]# wget https://dl.grafana.com/oss/release/grafana-7.5.2-1.x86_64.rpm
[root@grafana ~]# yum -y install grafana-7.5.2-1.x86_64.rpm
[root@grafana ~]# systemctl start grafana-server
[root@grafana ~]# netstat -tnlp

image-20211027095323233

默认账号:admin ; 默认密码:admin

登录之后,需要修改密码,自行修改即可

image-20211027095415346

image-20211027095447598

下面我们把prometheus服务器收集的数据做为一个数据源添加到 grafana,让grafana可以得到prometheus的数据。

image-20211027100410970

image-20211027100442307

image-20211027100555345

image-20211027100631382

image-20211027101141842

4.2 导入官网的Dashboard(仪表盘)

在这里插入图片描述

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

4.3 配置自己的Dashboard(仪表盘)

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

5. 扩展

5.1 Grafana显示错误----Panel plugin not found:table-old

Grafana导入node_exporter图标后,显示Panel plugin not found:table-old.
通常这种情况为Import获取官方模板造成的情况 原因为不兼容,下载版本高的grafana即可

  • 如图中报错版本为:grafana-5.3.4-1
  • 升级grafana版本为:grafana-7.5.4-1

下载地址:https://wget.52liangzy.top/prom/grafana-7.5.4-1.x86_64.rpm

查看自己的Grafana版本

[root@lzy prom]#grafana-server -v

升级步骤:

[root@lzy prom]# wget https://wget.52liangzy.top/prom/grafana-7.5.4-1.x86_64.rpm 

[root@lzy prom]# yum install initscripts fontconfig

[root@lzy prom]# rpm -Uvh grafana-7.5.4-1.x86_64.rpm   //升级grafana,源数据会保留

[root@lzy prom]# systemcat restart grafana

访问grafana:

解决问题!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值