监控工具部署

V8 detecting

一 概述

本文主要记录下如何使用 Prometheus +Grafana 基于kubernetes容器搭建对各种服务的性能监控

prometheus 官网地址:https://prometheus.io/

Github 地址:https://github.com/prometheus/prometheus

Grafana 官网地址 https://grafana.com/

Grafana dashboards模板地址 https://grafana.com/grafana/dashboards/

架构图

descript

监控组件部署

prometheus-server部署

部署说明:

  • 监控数据持久化,建议修改部署文件中 - mountPath: /prometheus到nfs 等持久化存储
  • 配置引用configMap,便于维护
  • namespace命名空间自定义
  • 配置修改参见官网地址:https://prometheus.io/
  • 容器pod 节点node采用自动发现功能
  • 请注意,Prometheus要求主机时间和浏览器时间一致,如不一致请同步: ntpdate time1.aliyun.com

部署文件:

对部分标红处修改实际需要值、配置持久化存储,使用kubectl apply -f xxx.yaml进行部署

自动发现配置说明

服务发现机制

prometheus默认是采用pull方式定时去目标拉取数据,每个被抓取目标向prometheus提供一个http接口,prometheus需要知道向哪个地址拉取数据,通过prometheus.yml中scrape_configs定义的job来实现目标的定义.这样就无法感知到新加入的变更信息.

通过daemonset实现在k8s环境中,当有新节点加入node-exporter和cadvisor的自动安装.

如果是传统方式,需要手动将新地址加入,并重启prometheus.

动态服务发现能够自动发现集群中的新端点,并加入配置中,通过服务发现,prometheus能够查询到需要监控的Target列表,然后轮询这个Target获取监控数据.

添加数据源的方法有很多种,常见的有静态配置和服务发现配置.

prometheus支持多种服务发现,常见的有:

kubernetes_sd_configs: kubernetes服务发现,让prometheus动态发现kubernetes中被监控的目标

static_configs: 静态服务发现,基于prometheus配置文件指定监控目标

dns_sd_configs: DNS服务发现监控目标

consul_sd_configs: Consul服务发现,基于consul服务动态发现监控目标

file_sd_configs: 基于指定的文件事先服务发现,prometheus定时读取文件如果发生变化则加载新目标

标签重写

prometheus的relabeling(标签重写)可以在抓取到目标实例之前把目标实例的元数据标签动态修改,动态添加或覆盖.

Prometheus在加载Target成功之后,在Taret实例中,都包含一些Metadata标签信息,默认标签有:

标签 含义
_address_ 以:格式显示targets的地址
_scheme_ 采用的目标服务地址的Scheme形式,HTTP或者HTTPS
_metrics_path_ 采用的目标服务的访问路径

修改标签的时机:

relabel_configs: 在抓取数据之前,可以使用relabel_configs添加一些标签,也可以值采集特定目标或过滤目标

metric_relabel_configs: 在抓取数据之后,可以使用metric_relabel_configs做最后的重新标记和过滤

descript

  • label

source_labels: 源标签,没有经过relabel处理之前的名字

target_labels: 通过action处理之后的新标签名字

regex: 正则表达式,匹配源标签

replacement: 通过分组替换后标签(target_label)对应的值

  • action

    标签 含义

    replace 替换标签值,根据regex正则匹配到源标签的值,使用replacement来引用表达式匹配的分组

    keep 满足regex正则条件的实例进行采集,把source_labels中没有匹配到regex正则内容的target实例丢弃,只采集匹配成功的实例

    drop 满足regex正则匹配条件的不采集,把source_labels中匹配到regex正则内容的Target丢弃,只采集没有匹配到的实例

    Hashmod 使用Hashmod计算source_labels的Hash值并进行对比,基于自定义的模数取模,以实现对目标进行分类,重新赋值等功能

    labelmap 匹配regex所有标签名称,然后赋值匹配标签的值进行分组,通过replacement分组引用替代

    labelkeep 匹配regex所有标签名称,其他不匹配的标签都将从标签集中删除

    labeldrop 匹配regex所有标签名称,其他匹配的标签都将从标签集中删除

  • 常见发现类型(如上配置)

    • node

    • service

    • endpoint

    • pod

      注意:监控目标pod中需要配置prometheus注解

配置nacos采集应用指标埋点

修改nacos 中对应环境的配置列表,找到DataId 为public记录,编辑配置,设置 seeyon.system.metric 为true,重新部署应用生效。

grafana部署

使用kubectl apply -f xxx.yaml进行部署

alertmanager 部署

告警方式及规则

对部分标红处修改实际需要值,使用kubectl apply -f xxx.yaml进行部署

prometheus-pushgateway 部署

使用kubectl apply -f xxx.yaml进行部署

node-exporter部署

  • node-exporter

可配置自动发现,也可以使用demonset方式

redis-exporter部署

对部分标红处修改实际需要值,使用kubectl apply -f xxx.yaml进行部署

kafka-exporter部署

对部分标红处修改实际需要值,使用kubectl apply -f xxx.yaml进行部署

mysql-exporter部署

对部分标红处修改实际需要值,使用kubectl apply -f xxx.yaml进行部署

grafana配置

准备配置文件

前往http://gitlab.seeyon.com/a9/devops/a9c_install.git下载最新配置文件,克隆a9c_install仓库,进入monitor/grafana-dashboards目录,该目录下的文件为grafana监控大盘配置文件。

登录grafana

descript

默认用户名:admin 密码:admin

配置数据源

进入系统,点击配置->数据源->添加数据源。

descript

数据源类型选择Prometheus,在URL中填入prometheus-server地址。

descript

导入仪表盘

进入如下界面,导入第一步准备好的grafana大盘配置文件。

descript

选择上一步配置的数据源。

descript

查看V8应用监控

descript

点击应用名称进入应用指标明细界面。

descript

最后修改 August 16, 2024: 微服务部署目录顺序调整 (22e8d0d)