Flutter监控与指标收集插件pip_services3_prometheus的使用

Flutter监控与指标收集插件pip_services3_prometheus的使用

Pip.Services Logo
Prometheus组件用于Dart语言

简介

该模块是Pip.Services多语言微服务工具包的一部分。
此模块包含与Prometheus服务交互的计数器组件。通过PrometheusCountersPrometheusMetricsService组件,您可以以客户端模式通过PushGateway进行推送,也可以作为服务运行。

模块包含以下包:

  • Build - 默认组件工厂。
  • Count - 使用PushGateway向Prometheus发送数据的计数器组件。
  • Services - 提供Prometheus服务读取计数器(指标)的服务组件。

快速链接:


使用

在项目的pubspec.yaml文件中添加依赖:

dependencies:
  pip_services3_prometheus: ^版本号

然后从命令行安装包:

pub get

开发

前置条件

开发时需要安装以下工具:

  • Dart SDK 2
  • Visual Studio Code 或其他IDE
  • Docker

安装依赖:

pub get

运行自动化测试:

pub run test

生成API文档:

./docgen.ps1

提交更改前运行容器化的构建和测试:

./build.ps1
./test.ps1
./clear.ps1

联系方式

该库由以下人员创建和维护:

  • Sergey Seroukhov
  • Levichev Dmitry

文档由以下人员编写:

  • Levichev Dmitry
  • Mark Makarychev

示例代码

以下是一个完整的示例代码,展示如何使用pip_services3_prometheus插件来监控和收集指标。

示例代码:main.dart

import 'package:pip_services3_commons/pip_services3_commons.dart';
import 'package:pip_services3_components/pip_services3_components.dart';

import 'package:pip_services3_prometheus/pip_services3_prometheus.dart';

void main() async {
  // 配置服务连接信息
  var restConfig = ConfigParams.fromTuples([
    'connection.protocol',
    'http',
    'connection.host',
    'localhost',
    'connection.port',
    3000
  ]);

  // 创建Prometheus服务和计数器实例
  PrometheusMetricsService service;
  PrometheusCounters counters;

  service = PrometheusMetricsService();
  counters = PrometheusCounters();

  // 配置服务
  service.configure(restConfig);

  // 创建上下文信息
  var contextInfo = ContextInfo();
  contextInfo.name = 'Test';
  contextInfo.description = 'This is a test container';

  // 设置引用
  var references = References.fromTuples([
    Descriptor('pip-services', 'context-info', 'default', 'default', '1.0'),
    contextInfo,
    Descriptor('pip-services', 'counters', 'prometheus', 'default', '1.0'),
    counters,
    Descriptor(
        'pip-services', 'metrics-service', 'prometheus', 'default', '1.0'),
    service
  ]);
  counters.setReferences(references);
  service.setReferences(references);

  // 打开服务和计数器
  await counters.open(null);
  await service.open(null);

  // 收集指标
  counters.incrementOne('test.counter1'); // 增加计数器值
  counters.stats('test.counter2', 2);     // 统计平均值
  counters.last('test.counter3', 3);      // 记录最新值
  counters.timestampNow('test.counter4'); // 记录时间戳

  // 指标可以通过 http://localhost:3000/metrics 访问
  // 配置Prometheus服务定期轮询此地址

  // 关闭服务和计数器
  await service.close(null);
  await counters.close(null);
}

运行效果

  1. 启动应用程序后,Prometheus服务会监听http://localhost:3000/metrics
  2. 在Prometheus配置中添加目标地址,例如:
    scrape_configs:
      - job_name: 'my_app'
        static_configs:
          - targets: ['localhost:3000']
    

更多关于Flutter监控与指标收集插件pip_services3_prometheus的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter监控与指标收集插件pip_services3_prometheus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


pip_services3_prometheus 是一个用于在 Flutter 应用程序中收集和暴露 Prometheus 监控指标的插件。Prometheus 是一个开源的系统监控和警报工具包,广泛用于监控微服务架构中的各种指标。

以下是如何在 Flutter 项目中使用 pip_services3_prometheus 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 pip_services3_prometheus 插件的依赖:

dependencies:
  pip_services3_prometheus: ^1.0.0

然后运行 flutter pub get 来安装依赖。

2. 初始化 Prometheus 监测器

在你的 Flutter 应用中,你需要初始化 PrometheusMetricsService 来收集和暴露指标。

import 'package:pip_services3_prometheus/pip_services3_prometheus.dart';

void main() async {
  // 初始化 Prometheus 监测器
  var metricsService = PrometheusMetricsService();
  metricsService.configure(ConfigParams.fromTuples([
    'source', 'my_flutter_app',
    'port', 8080
  ]));

  await metricsService.open(null);

  // 你的应用代码
}

3. 添加自定义指标

你可以使用 PrometheusMetricsService 来添加自定义指标。以下是一个简单的例子,展示如何添加一个计数器和一个仪表盘:

import 'package:pip_services3_prometheus/pip_services3_prometheus.dart';

void main() async {
  var metricsService = PrometheusMetricsService();
  metricsService.configure(ConfigParams.fromTuples([
    'source', 'my_flutter_app',
    'port', 8080
  ]));

  await metricsService.open(null);

  // 添加一个计数器
  var counter = metricsService.getCounter('my_counter', 'A simple counter');
  counter.increment();

  // 添加一个仪表盘
  var gauge = metricsService.getGauge('my_gauge', 'A simple gauge');
  gauge.set(42);

  // 你的应用代码
}

4. 暴露指标

PrometheusMetricsService 会自动在指定的端口(例如 8080)上暴露指标。你可以通过访问 http://localhost:8080/metrics 来查看暴露的指标。

5. 集成 Prometheus

在你的 Prometheus 配置文件中,添加一个新的任务来抓取 Flutter 应用的指标:

scrape_configs:
  - job_name: 'my_flutter_app'
    static_configs:
      - targets: ['localhost:8080']

6. 监控和警报

你可以使用 Prometheus 的查询语言(PromQL)来查询和可视化这些指标。你还可以配置警报规则,以便在特定条件下触发警报。

7. 关闭监测器

在应用关闭时,确保关闭 PrometheusMetricsService 以释放资源:

await metricsService.close(null);
回到顶部