首页 > 其他分享 >《Prometheus监控实战》读书笔记

《Prometheus监控实战》读书笔记

时间:2024-08-21 17:29:20浏览次数:5  
标签:实战 读书笔记 -- mtail 指标 Prometheus 监控 日志

监控简介

Google服务层次结构图,监控是底座
在这里插入图片描述
一些监控反模式:

  • 事后监控
  • 机械式监控
  • 不(够)准确的监控
  • 静态监控:不是说超过某个绝对阈值系统就一定出现问题,更有意义的监控是对比(环比)动态监控。数据库性能分析供应商VividCortex的首席执行官Baron Schwartz对此评论道[插图]:它们比一个停摆的时钟更糟糕,至少时钟每天还会有两次准的时候
  • 不频繁的监控
  • 不能自动化或自服务的监控

应尽可能使监控系统的实施和部署自动化:

  • 应该由配置管理进行部署
  • 主机和服务的配置应该通过自动发现或自助提交来进行,这样可以自动监控新的应用程序,而不需要人为添加
  • 添加检测应该很简单,并且是基于插件模式,开发人员应该能够把它放置到库中,而不必自己配置它
  • 数据和可视化应该是自服务的。每个需要查看监控输出的人都应该能够查询和可视化这些内容

一个良好的监控系统应该能提供以下内容:

  • 全局视角,从最高层(业务)依次展开
  • 协助故障诊断
  • 作为基础设施、应用程序开发和业务人员的信息源
  • 内置于应用程序设计、开发和部署的生命周期中
  • 尽可能自动化,并提供自服务

有两类方法:探针(probing)和内省(introspection)
有两种方式:拉取(pull)和推送(push)
监控数据有两种形式:指标和日志

指标类型:

  • 测量型Gauge
  • 计数型Counter
  • 直方图Histogram

监控方法论

Prometheus简介

大多数监控查询和警报都是从最近的(通常是一天内的)数据中生成的。

可以通过多种方式来处理要监控的资源的发现:

  • 用户提供的静态资源列表
  • 基于文件的发现
  • 自动发现,查询Consul等服务注册中心进而知道需要监控哪些服务

安装和启动Prometheus

官方提供的校验工具promtool,用于。

Windows平台安装Prometheus,双击prometheus.exe即可,如果要作为服务运行,可通过NSSM(Non-Sucking Service Manager)工具来实现。还可以Chocolatey包管理器,类似于Yum,APT。

除了各大操作平台安装方式外,也可用配置管理工具来安装:Puppet、Chef、Ansible、SaltStack

监控主机和容器

服务发现

警报管理

可靠性和可扩展性

搭建Prometheus监控平台是为了监控业务系统,保证业务系统高可用和稳定性。那Prometheus自身的可靠性如何保证呢?

官方推荐的容错解决方案是并行运行两个配置相同且同时处于活动(standby)状态的Prometheus服务器,两个服务器生成的重复警报可以交由上游Alertmanager使用其分组(及抑制)功能进行处理。

监控应用程序

实用程序模式:一个metrics-utility类,它不需要实例化,只包含静态方法。

监控日志

使用Process exporter查看/proc子系统的内容。

日志处理工具有很多,如Grok Exportermtail

mtail

Google开源的基于Go语言的日志处理器,使用RE2正则表达式,

运行:
sudo mtail --progs /etc/mtail --logs '/var/log/*.log'
--progs告诉mtail在哪里找到程序,--logs告诉mtail在哪里找到要解析的日志文件。

使用glob模式来匹配/var/log目录中的所有日志文件。你可以指定以逗号分隔的文件列表,也可以多次指定--logs参数。mtail会识别到日志文件被截断,因此它可以处理停止、重新启动和日志轮换等操作。

在端口3903上启动Web服务器(可以使用--address--port参数来设置IP地址和端口)。

mtail输出指标的不同形式:JSON、varz(Google内部用于指标收集的格式)以及我们想要的格式Prometheus。

运行mtail的用户需要针对正在解析的日志文件的权限,否则mtail将无法读取文件。当无法读取文件时,你将在使用--logtostderr参数获得的mtail日志输出中看到读取错误。

探针监控

监控探针有三个约束:

  • 它们需要能够访问到被探测的资源。
  • 探针需要放置在可以测试资源的正确位置上。
  • 探针exporter的位置能够被Prometheus服务器抓取。

Blackbox exporter是Prometheus官方提供的Go语言组件,可通过HTTP、HTTPS、DNS、TCP和ICMP来探测端点,执行检查并将生成的指标返回给Prometheus。

因为基于Go语法开发,安装很简单,也支持各大系统平台,也能使用配置管理工具安装。默认端口是9115,启动成功后,可浏览器打开

配置文件prober.yml,使用模块来定义各种检查,每个模块都有一个名称和一个特定的探针。示例:

modules:
  http_2xx_check:
  	prober: http
  	timeout: 5s
  	http:
  	  valid_status_codes: ['200', '204']
  	  method: GET
  icmp_check:
    prober: icmp
    timeout: 5s
    icmp:
      preferred_ip_protocol: "ip4"
  dns_my_domain_check:
    prober: nds
    dns:
      preferred_ip_protocol: "ip4"
      query_name: "www.my.domain.com"

ICMP需要一些额外的权限。Windows上,需要管理员权限,Linux上需要root或CAP_NET_RAW权限,BSD或OS X上则需要root用户。

DNS检查会向目标发送一个ANY查询类型的请求。

推送指标和Pushgateway

在某些情况下,抓取指标无法实现:

  • 安全性或连接性问题,使你无法访问目标资源。这是一种非常常见的情况,比如服务或应用程序仅允许特定端口或路径访问。
  • 目标资源的生命周期太短,例如容器的启动、执行和停止。在这种情况下,Prometheus作业将会发现目标已完成执行并且不再可以被抓取。
  • 目标资源没有可以抓取的端点,例如批处理作业。批处理作业不太可能具有可被抓取的HTTP服务,即使假设作业运行的时间足够长。

因此需要推送指标,即需要Push。

Pushgateway,简写PG,基于Go语言。默认端口9091,使用--web.listen-address参数来覆盖地址和端口,可浏览器打开http://localhost:9091。默认将所有指标存储在内存中,如果PG停止或重新启动,则将丢失内存中的所有指标,指定--persistence.file参数将指标持久存储于磁盘路径。默认每五分钟持久化写入文件一次,使用--persistence.interval参数指定想要的频率。

PushProx是监控这些不可访问资源的一个工具,旨在抓取通过NAT连接的指标。

监控Kubernetes

kops

kops创建集群命令:

kops create cluster --node-count 6 --zones zone1,zone2,zone3 --master-zones zone1,zone2,zone3 \
--node-size t2.micro --master-size t2.micro --topology private --networking kopeio-vxlan \
--api-loadbalancer-type=public --bastion www.aaa.com

监控Tornado

sidecar,也叫sidekicks模式。

监控MySQL,可使用官方提供的MySQLd exporter

要从MySQL服务器查询所需数据,你需要向用户授予PROCESS、REPLICATION CLIENT和SELECT权限。

监控Redis,到目前为止都没有提供官方实现,可以选择第三方实现,如exporter,GitHub 2.9k Star还是非常不错的。exporter从INFO命令导出大部分条目,其中包含服务器、客户端、内存和CPU使用情况的详细信息。在每个数据库中,还有用于键总数、过期键和键的平均TTL的指

标签:实战,读书笔记,--,mtail,指标,Prometheus,监控,日志
From: https://www.cnblogs.com/johnny-wong/p/18372142

相关文章

  • MySQL子查询、WITH AS、LAG查询统计数据实战
    需求给出一个比较常见的统计类业务需求:统计App(包括iOS和Android两大类)每日新注册用户数、以及累计注册用户数。数据库采用MySQL,根据上面的需求,不难设计表如下:createtableos_day_count(stat_datevarchar(10)notnullcomment'统计日期',osvarcha......
  • 从零到一,全面掌握Apache DolphinScheduler发版流程,实战派经验分享!
    引言ApacheDolphinScheduler的发版流程对于确保软件质量和社区协作至关重要,社区Committer王兴杰为我们详细介绍了ApacheDolphinScheduler的发版流程,包括环境准备、流程文档、基础工具准备、依赖包确认等关键步骤,并指出了发版流程中可能会遇到的麻烦以及相应的解决方案,欢迎学习......
  • 豆瓣评分9.0!Python3网络爬虫开发实战,堪称教学典范!
    今天我们所处的时代是信息化时代,是数据驱动的人工智能时代。在人工智能、物联网时代,万物互联和物理世界的全面数字化使得人工智能可以基于这些数据产生优质的决策,从而对人类的生产生活产生巨大价值。在这个以数据驱动为特征的时代,数据是最基础的。数据既可以通过研发产品获得,......
  • SAFe大规模敏捷企业级实战演练培训
    ​课程简介SAFe–ScaledAgileFramework是目前全球运用最广泛的大规模敏捷框架,也是成长最快、最被认可、最有价值的规模化敏捷框架,目前全球SAFe认证专业人士已达80万人,福布斯100强的70%都在实施SAFe。本课程是一个2天的SAFe权威培训课程,在课程中,学员将系统地学习大规模敏捷......
  • 一次实战压测流程及问题梳理
    1、背景及目的在动手之前,先要想清楚我们期望从压测中获取的价值是什么。这次压测的背景,主要是为了应对旺季到来,避免旺季的大量流量和高并发造成服务不可用,提升稳定性。而在稳定性建设中,也会从事前、事中及事后来看,包含的维度包含风险识别、监控告警、应急流程及故障复盘等不同的......
  • 【python】Python实现XGBoost算法的详细理论讲解与应用实战
    ✨✨欢迎大家来到景天科技苑✨✨......
  • Zookeeper应用场景实战二
    目录1.Zookeeper分布式锁实战1.1什么是分布式锁1.2基于数据库设计思路1.3基于Zookeeper设计思路一1.4基于Zookeeper设计思路二Curator分布式锁示例1.5Curator可重入分布式锁工作流程1.6总结2.基于Zookeeper实现服务的注册与发现2.1设计思路2.2Zo......
  • Prometheus部署教程——基于 HELM 方式
    作者乐维社区(forum.lwops.cn)许远背景随着容器化技术的飞速发展,Kubernetes已成为企业级容器编排的事实标准。为了确保容器化应用的稳定性和性能,有效的监控和告警系统显得尤为重要。因容器监控需要,某公司拟在k8s集群中搭建prometheus,计划通过Helm进行部署。Kubernetes原生应用......
  • 计算机毕业设计-基于Python+Django的基于知识图谱的医疗问答系统项目开发实战(附源码+
    大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。......
  • 计算机毕业设计-基于Python+Flask的基于深度学习的电影评论情感分析系统项目开发实战(
    大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。......