近期项目需要引入监控系统,一番折腾后搭建成功。这里总结一下搭建的过程。本文旨在引导整合并打通整个监控系统各个环节,适合新手及需求急切的开发者快速搭建监控系统的基础。

1、MicroMeter

    官网:micrometer

    micrometer号称监控界的SLF4J,主要用来以极低极低的消耗来给Java程序提供对指标的监控。

    micrometer支持接入多种数据库,这里我使用的是prometheus。

1、引入jar包:

    maven项目:

<dependency>

  <groupId>io.micrometer</groupId>

  <artifactId>micrometer-registry-prometheus</artifactId>

  <version>${micrometer.version}</version>

</dependency>

    gradle项目:

compile 'io.micrometer:micrometer-registry-prometheus:latest.release'

2、使用注册表

    注册表是用来管理一系列指标的工具,尤其在micrometer-prometheus的项目,PrometheusMeterRegistry的scrape()方法已经封装好了生成给prometheus传递的信息的代码,我们只需要在servlet中调用该方法响应prometheus的抓取即可。


    1)定义注册表:为了方便管理,将注册表封装到一个类里面统一管理。


public class PrometheusMeterManager {

 

  private static PrometheusMeterRegistry registry = null;

 

  public static void init() {

    registry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);

  }

 

  public static PrometheusMeterRegistry register() {

    if (registry == null) {

      init();

    }

    return registry;

  }

}


    2)向Prometheus反馈注册表的内容:在servlet中调用注册表的scrape()方法作为返回结果,prometheus会去配置的 {服务地址、端口、路径} 组合下获取指标信息。如下是servlet的示例:

public class PrometheusMeterServlet extends HttpServlet {

  @Override

  public void doGet(HttpServletRequest httpRequest, HttpServletResponse httpResponse) {

    PrometheusMeterRegistry registry = PrometheusMeterManager.register();

    String meterResponse = registry.scrape();

    try {

      httpResponse.getWriter().print(meterResponse);

    } catch (IOException e) {

      e.printStackTrace();

    }

  }

}

3、添加监控指标

    micrometer的指标包括counter、gauge、timer和distribution summaries这4种。这里以counter为例:

    1)根据注册表获取counter的实例。

MeterRegistry registry = PrometheusMeterManager.register();

Counter counter = registry.counter("post_request_number");

    2)调用counter的方法达到预期目的:

    Counter定义了4个方法:

increment():counter计数加1;

increment(double amount):计数加amount;

count():counter的累积值;

measure():counter的累积值

2、Prometheus

1、安装

    Prometheus官网下载传送门:Prometheus下载,下载后解压即可完成安装。

2、配置

    在解压目录中找到并配置prometheus.yml:

global:

  scrape_interval:     15s 

  evaluation_interval: 15s 

alerting:

  alertmanagers:

  – static_configs:

    – targets:

'evaluation_interval'.

rule_files:

 

scrape_configs:

  – job_name: 'prometheus'

    metrics_path: /prometheus

    static_configs:

     – targets: ['localhost:9000']


    一般来说,我们只需要配置scrape_configs下的抓取目标。示例中的是对特定url的配置,还可以通过consul实现对集群的配置。Prometheus会自动去配置的目标中抓取信息。

3、运行

    在Prometheus的解压目录中运行prometheus,即可启动程序。Prometheus的默认运行端口是9090,如果是在本机安装,可以在浏览器输入localhost:9090打开Prometheus的界面:

image.png

    在graph界面中(图示界面),可以在Expression中输入函数和指标进行查询;也可以在Status中查看相关配置。

3、grafana

1、安装运行

    grafana的安装同样非常简单,官方针对不同操作系统的安装都要非常详细的安装步骤,戳grafana安装。我的是Mac系统,在官网安装教程的下面能找到启动方法。启动grafana。

    grafana的默认运行端口是3000,在浏览器输入localhost:3000,默认初始账号密码是admin/admin,进入grafana界面。

image.png

2、添加数据源

    首先点击左边的齿轮,配置数据源:Configuration –> Data Sources –> add data source –> prometheus,在里面添加url。这里我添加的是本地的prometheus数据源:

image.png

3、创建Dashboard

    点击左上角的加号,创建新的Dashboard,在新的Dashboard中可以去创建各种图标。这里选择Graph。Graph是目前唯一一个支持告警的图表。

image.png

    上面是新创建的graph。点击图表标题会出现功能菜单,选择edit,进入编辑界面,就是grafana强大的编辑界面:

image.png

    在编辑界面中,分别可以对图表UI、对指标、对坐标刻度等等信息进行编辑,还能在Alert中设置指标告警,告警还可以邮件推送或者推送到钉钉群。上述界面是设置显示的指标,因为前面设置的数据源是prometheus,所以这里可以使用prometheus的查询语法设置指标。例如这里查询了post_request_number指标的汇总值。

    当然,如果对图表显示的时长不满意,还可以点击右上角的返回按钮回到Dashboard界面,在右上角设置显示时间。

image.png

    这样,整个监控系统的各个环节,就已经打通了。

————————————————

版权声明:本文为CSDN博主「夜雨落花」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_38569499/article/details/85344317

 赞(0)