所在的位置: mysql >> mysql发展 >> PrometheusGrafanaA

PrometheusGrafanaA

北京中科白殿疯醫院 https://wapjbk.39.net/yiyuanfengcai/video_bjzkbdfyy/

前言

本文主要介绍的是Prometheus采集数据,通过Grafana加上PromQL语句实现数据可视化以及通过Alertmanage实现告警推送功能。温馨提示,本篇文章特长,2w多的文字加上几十张图片,建议收藏观看。

Prometheus介绍

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

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

强大的多维度数据模型:时间序列数据通过metric名和键值对来区分。所有的metrics都可以设置任意的多维标签。数据模型更随意,不需要刻意设置为以点分隔的字符串。可以对数据模型进行聚合,切割和切片操作。支持双精度浮点类型,标签可以设为全unicode。灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个metrics进行乘法、加法、连接、取分数位等操作。易于管理:Prometheusserver是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。高效:平均每个采样点仅占3.5bytes,且一个Prometheusserver可以处理数百万的metrics。使用pull模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的metrics。可以采用pushgateway的方式把时间序列数据推送至Prometheusserver端。可以通过服务发现或者静态配置去获取监控的targets。有多种可视化图形界面。易于伸缩。需要指出的是,由于数据采集可能会有丢失,所以Prometheus不适用对采集数据要%准确的情形。但如果用于记录时间序列数据,Prometheus具有很大的查询优势,此外,Prometheus适用于微服务的体系架构。示例图:

Prometheus的适用场景

在选择Prometheus作为监控工具前,要明确它的适用范围,以及不适用的场景。Prometheus在记录纯数值时间序列方面表现非常好。它既适用于以服务器为中心的监控,也适用于高动态的面向服务架构的监控。在微服务的监控上,Prometheus对多维度数据采集及查询的支持也是特殊的优势。Prometheus更强调可靠性,即使在故障的情况下也能查看系统的统计信息。权衡利弊,以可能丢失少量数据为代价确保整个系统的可用性。因此,它不适用于对数据准确率要求%的系统,比如实时计费系统(涉及到钱)。

Prometheus核心组件介绍

PrometheusServer:

PrometheusServer是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。PrometheusServer可以通过静态配置管理监控目标,也可以配合使用ServiceDiscovery的方式动态管理监控目标,并从这些监控目标中获取数据。其次PrometheusServer需要对采集到的监控数据进行存储,PrometheusServer本身就是一个时序数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。最后PrometheusServer对外提供了自定义的PromQL语言,实现对数据的查询以及分析。PrometheusServer内置的ExpressBrowserUI,通过这个UI可以直接通过PromQL实现数据的查询以及可视化。PrometheusServer的联邦集群能力可以使其从其他的PrometheusServer实例中获取数据,因此在大规模监控的情况下,可以通过联邦集群以及功能分区的方式对PrometheusServer进行扩展。

Exporters:

Exporter将监控数据采集的端点通过HTTP服务的形式暴露给PrometheusServer,PrometheusServer通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。一般来说可以将Exporter分为2类:直接采集:这一类Exporter直接内置了对Prometheus监控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接内置了用于向Prometheus暴露监控数据的端点。间接采集:间接采集,原有监控目标并不直接支持Prometheus,因此我们需要通过Prometheus提供的ClientLibrary编写该监控目标的监控采集程序。例如:MysqlExporter,JMXExporter,ConsulExporter等。

PushGateway:

在PrometheusServer中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理。在AlertManager中我们可以与邮件,Slack等等内置的通知方式进行集成,也可以通过Webhook自定义告警处理方式。

ServiceDiscovery:

服务发现在Prometheus中是特别重要的一个部分,基于Pull模型的抓取方式,需要在Prometheus中配置大量的抓取节点信息才可以进行数据收集。有了服务发现后,用户通过服务发现和注册的工具对成百上千的节点进行服务注册,并最终将注册中心的地址配置在Prometheus的配置文件中,大大简化了配置文件的复杂程度,也可以更好的管理各种服务。在众多云平台中(AWS,OpenStack),Prometheus可以通过平台自身的API直接自动发现运行于平台上的各种服务,并抓取他们的信息Kubernetes掌握并管理着所有的容器以及服务信息,那此时Prometheus只需要与Kubernetes打交道就可以找到所有需要监控的容器以及服务对象.Consul(官方推荐)等服务发现注册软件通过DNS进行服务发现通过静态配置文件(在服务节点规模不大的情况下)

PrometheusUI

PrometheusUI是Prometheus内置的一个可视化管理界面,通过PrometheusUI用户能够轻松的了解Prometheus当前的配置,监控任务运行状态等。通过Graph面板,用户还能直接使用PromQL实时查询监控数据。访问ServerIP:/graph打开WEB页面,通过PromQL可以查询数据,可以进行基础的数据展示。

如下所示,查询主机负载变化情况,可以使用关键字node_load1可以查询出Prometheus采集到的主机负载的样本数据,这些样本数据按照时间先后顺序展示,形成了主机负载随时间变化的趋势图表:

Grafana介绍

Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示。Grafana提供了对prometheus的友好支持,各种工具帮助你构建更加炫酷的数据可视化。

Grafana特点

可视化:快速和灵活的客户端图形具有多种选项。面板插件为许多不同的方式可视化指标和日志。报警:可视化地为最重要的指标定义警报规则。Grafana将持续评估它们,并发送通知。通知:警报更改状态时,它会发出通知。接收电子邮件通知。动态仪表盘:使用模板变量创建动态和可重用的仪表板,这些模板变量作为下拉菜单出现在仪表板顶部。混合数据源:在同一个图中混合不同的数据源!可以根据每个查询指定数据源。这甚至适用于自定义数据源。注释:注释来自不同数据源图表。将鼠标悬停在事件上可以显示完整的事件元数据和标记。过滤器:过滤器允许您动态创建新的键/值过滤器,这些过滤器将自动应用于使用该数据源的所有查询。这里我们使用上面Prometheus使用关键字node_load1来使用Grafana进行可视化,点击侧边栏的加号图标,然后单击Dashboard点击创建,然后把刚刚Prometheus使用的查询语句放到Metries,点击右上角的apply即可。

示例图:

GrafanaUI

上面的示例中我们通过prometheus+grafana通过PromQL进行了简单的服务器负载的监控可视化。我们也可以通过第三方提供可视化JSON文件来帮助我们快速实现服务器、Elasticsearch、MYSQL等等监控。这里我们在grafana提供的第三方dashboards的地址      个人博客出处:


转载请注明:http://www.aierlanlan.com/tzrz/2827.html