二进制部署Prometheus + Grafana监控集群,及各exporter安装

这篇具有很好参考价值的文章主要介绍了二进制部署Prometheus + Grafana监控集群,及各exporter安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. Prometheus 监控集群概述

Prometheus三大组件:

  1. Server 主要负责数据采集和存储,提供PromQL查询语言的支持。

  1. Alertmanager 警告管理器,用来进行报警。

  1. Push Gateway 支持临时性Job主动推送指标的中间网关。

1.1 Prometheus组件架构图

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。Prometheus的主要特点如下:

  • 多维度数据模型。

  • 灵活的查询语言。

  • 不依赖分布式存储,单个服务器节点是自主的。

  • 通过基于HTTP的pull方式采集时序数据。

  • 可以通过中间网关进行时序列数据推送。

  • 通过服务发现或者静态配置来发现目标服务对象。

  • 支持多种图形和Dashboard的展示,例如Grafana。

Prometheus根据配置的任务(job)以周期性pull的方式获取指定目标(target)上的指标(metric):

  1. Prometheus Server:主服务,接受外部http请求,根据配置完成数据采集,服务发现以及数据存储。

  1. prometheus targets:静态收集的目标服务数。

  1. service discovery:动态发现服务。

  1. Push Gateway:为应对部分push场景提供的插件,监控数据先推送到Push Gateway上,然后再由Prometheus Server端采集pull。由于存在时间较短,可能在Prometheus来pull之前,jobs就消失了。(若Prometheus Server在采集间隔期间,Push Gateway上的数据没有变化,Prometheus Server将采集到2次相同的数据,仅时间戳不同)。

  1. Exporters(探针):是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取。抓取什么样的数据,就需要什么类型的exporter,比如说抓取mysql状态的数据,就需要mysqld_exporter。

  1. Alertmanager:Prometheus server主要负责根据基于PromQL的告警规则分析数据,如果满足PromQL定义的规则,则会产生一条告警,并发送告警信息到Alertmanager,Alertmanager则是根据配置处理告警信息并发送。常见的接收方式有:电子邮件,webhook等。Alertmanager三种处理告警信息的方式:分组,抑制,静默。

grafana二进制安装,linux,centos,系统安全,Powered by 金山文档

Prometheus Daemon负责定时去目标上抓取metrics(指标)数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。Prometheus支持通过配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup等方式指定抓取目标。Prometheus采用PULL的方式进行监控,即服务器可以直接通过目标PULL数据或者间接地通过中间网关来Push数据。

Prometheus在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中。

Prometheus通过PromQL和其他API可视化地展示收集的数据。Prometheus支持很多方式的图表可视化,例如Grafana、自带的Promdash以及自身提供的模版引擎等等。Prometheus还提供HTTP API的查询方式,自定义所需要的输出。

PushGateway支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据。

Alertmanager是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。

其工作流程大致如下:

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

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

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

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

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

1.2 Grafana简介

Grafana是一个开源的度量分析与可视化套件,经常被用作基础设施的时间序列数据和应用程序分析的可视化。

Grafana支持许多不同的数据源,每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。

官方支持以下数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB。

每个数据源的查询语言和能力都是不同的,可以把来自多个数据源的数据组合到一个仪表板,但每一个面板被绑定到一个特定的数据源,它就属于一个特定的组织。

1.3 Exporter详解

随着Prometheus的流行,很多系统都已经自带了用于Prometheus监控的接口,例如etcd、Kubernetes、coreDNS等,所以这些系统可以直接被Prometheus所监控。但是有很多应用目前还没有提供用于Prometheus监控的接口,针对这这类应用Prometheus提出了Exporter的解决方案。

Exporter是一个采集被监控系统的监控数据,通过Prometheus监控规范对外提供数据的组件。简单来说,为了采集被监控系统的监控样本数据,需要安装一个程序,该程序对外暴露了一个用于获取当前监控样本数据的HTTP访问地址,这样的一个程序称为Exporter,Exporter的实例称为一个Target。Prometheus通过轮询的方式定时从Target中获取监控数据样本,并且存储在数据库当中。

从广义的层面上讲,任何遵循Prometheus数据格式 ,可对其提供监控指标的程序都可以称为Exporter。Prometheus官方和社区提供了非常丰富的Exporter,例如Node Exporter、HAProxy Exporter、MySQL Exporter、Redis Exporter和Rabbitmq Exporter等等。

这些Exporter主要通过被监控对象提供的监控相关的接口获取监控数据,通过例如以下几种方式获取到被监控对象的监控指标:

  1. HTTP/HTTPs:例如Rabbitmq Exporter通过HTTPs接口获取监控数据。

  1. TCP:例如Redis Exporter通过Redis提供的系统监控相关命令获取监控指标,MySQL Server Exporter通过MySQL开放的监控相关的表获取监控指标

  1. 本地文件:例如Node Exporter通过读取整个proc文件系统下的文件,得到整个系统的当前状态。

  1. 标准协议:例如IPMI Exporter通过IPMI协议获取硬件相关信息,并将这些信息的格式进行转化,输出为Prometheus能够识别的监控数据格式,从而扩大Prometheus的数据采集能力。

所有的Exporter程序都需要按照Prometheus的规范返回监控的样本数据。

1.3.1 Exporter运行方式

  1. 独立运行

以待会后面会使用的node_exporter为例,由于操作系统本身并不直接支持Prometheus,因此,只能通过一个独立运行的程序,从操作系统提供的相关接口将系统的状态参数转换为可供Prometheus读取的监控指标。

除了操作系统外,如Mysql、kafka、Redis等介质,都是通过这种方式实现的。这类Exporter承担了一个中间代理的角色。

  1. 应用集成

由于Prometheus项目的火热,目前有部分开源产品直接在代码层面使用Prometheus的Client Library,提供了在监控上的直接支持,如kubernetes、ETCD等产品。

这类产品自身提供对应的metrics接口,Prometheus可通过接口直接获取相关的系统指标数据。这种方式打破了监控的界限,应用程序本身做为一个Exporter提供功能。

1.3.2 常用的Exporter

下面表格是一些较常使用到的Exporter,内容覆盖了数据库、主机、HTTP、云平台等多个层面。

类型

监控介质

Exporter

数据库

Mysql

MySQL server exporter

Elasticsearch

Elasticsearch exporter

Mongodb

MongoDB exporter

Redis

Redis exporter

PostgreSQL

PostgreSQL exporter

硬件/操作系统

主机/Linux

Node exporter

GPU

NVIDIA GPU exporter

Windows

Windows exporter

IPMI

IPMI exporter

网络设备

SNMP exporter

消息队列

RabbitMQ

RabbitMQ exporter

Kafka

Kafka exporter

RocketMQ

RocketMQ exporter

HTTP

Apache

Apache exporter

HAProxy

HAProxy exporter

Nginx

Nginx exporter

云平台

阿里云

Alibaba Cloudmonitor exporter

AWS

AWS CloudWatch exporter

Azure

Azure Monitor exporter

华为云

Huawei Cloudeye exporter

腾讯云

TencentCloud monitor exporter

其他

探针检测

Blackbox exporter

容器

cArdviso

SSH

SSH exporter

除以上这些外,还有很多其他用途的Exporter,有兴趣的朋友可以自行查看官网:https://prometheus.io/docs/instrumenting/exporters/。

1.4 Prometheus命令参数详解

  1. Prometheus启动参数配置及释义文章来源地址https://www.toymoban.com/news/detail-644703.html

到了这里,关于二进制部署Prometheus + Grafana监控集群,及各exporter安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 二进制搭建Kubernetes集群(一)——部署etcd集群和单master

    注意:生产环境中,etcd集群和master、node节点都应该部署在不同的机器上,此处为了实验方便,将三台etcd节点分别部署在了master和node节点上了 k8s集群master01:192.168.126.27    kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02:192.168.80.21 k8s集群node01:192.168.80.11    

    2024年02月10日
    浏览(50)
  • Kubernetes高可用集群二进制部署(Runtime Containerd)

    Kubernetes(简称为:k8s)是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了资源调度、部署管理、服务发现、扩容缩容、监控,维护等一整套功能

    2024年02月08日
    浏览(89)
  • k8s1.23.15集群二进制部署

    一、前言     二进制部署1.23.15版本k8s集群,etcd集群部署与k8s集群节点复用,手动颁发集群证书     主机信息如下 主机名称 ip地址 服务 k8s-master01 10.1.60.125 docker、etcd、kube-apiserver、kube-schduler、kube-controller-manage、kubelet、kube-proxy k8s-node01 10.1.60.126 docker、etcd、kubelet、kube-proxy

    2024年03月13日
    浏览(49)
  • Kubernetes高可用集群二进制部署(三)部署api-server

    Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署(二)ETCD集群部署 Kubernetes高可用集群二进制部署(三)部署api-server Kubernetes高可用集群二进制部署(四)部署kubectl和kube-controller-man

    2024年02月11日
    浏览(40)
  • [kubernetes]二进制部署k8s集群-基于containerd

    k8s从1.24版本开始不再直接支持docker,但可以自行调整相关配置,实现1.24版本后的k8s还能调用docker。其实docker自身也是调用containerd,与其k8s通过docker再调用containerd,不如k8s直接调用containerd,以减少性能损耗。 除了containerd,比较流行的容器运行时还有podman,但是podman官方安装

    2024年02月12日
    浏览(57)
  • k8s1.27.2版本二进制高可用集群部署

    说明:本次实验共有5台主机,3台master节点同时又是worker,os128、os129、os130 节点主机容器运行时用的containerd,worker131、worker132主机的用的docker 主机名 IP 组件 系统 os128 192.168.177.128 etcd、kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy、containerd CentOS7.9 os129 192.16

    2024年01月22日
    浏览(91)
  • 基于ansible的自动化二进制模式部署高可用Kubernetes集群

    【说明】 本文档详细描述了在openEuler 22.03 LTS上通过ansible以二进制模式自动化部署高可用Kubernetes集群(适用k8s v1.26版本)。 本文档参考了小陈运维的ansible剧本,并进行了适当改造,使之适用于openEuler 22.03 LTS,并改用nginx实现高可用;仅采用containerd作为容器运行时;采用ca

    2024年02月08日
    浏览(95)
  • 【云原生】二进制部署k8s集群(中)搭建node节点

    在上文已经成功部署了etcd分布式数据库、master01节点, 本文将承接上文的内容,继续部署Kubernetes集群中的 worker node 节点和 CNI 网络插件 kubelet 采用 TLS Bootstrapping 机制,自动完成到 kube-apiserver 的注册,在 node 节点量较大或者后期自动扩容时非常有用。   Master apiserver 启用 T

    2024年02月09日
    浏览(59)
  • 【云原生】二进制k8s集群(下)部署高可用master节点

     在上一篇文章中,就已经完成了二进制k8s集群部署的搭建,但是单机master并不适用于企业的实际运用(因为单机master中,仅仅只有一台master作为节点服务器的调度指挥,一旦宕机。就意味着整个集群的瘫痪,所以成熟的k8s的集群一定要考虑到master的高可用。)企业的运用一

    2024年02月12日
    浏览(59)
  • 二进制部署高可用k8s集群V1.20.11版本

    单master架构图 master节点 node1节点 node2节点   Etcd是一个分布式键值存储系统, K8s使用Etcd进行数据存储 ,所以先准备一个Etcd数据库,为解决Etcd单点故障,应采用集群方式进行部署,这里使用3台组件集群,可容忍1台机器故障,当然 也可以使用5台组件集群,可容忍2台机器故

    2024年01月22日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包