Maison  >  Article  >  Java  >  Quelles sont les stratégies de surveillance et de journalisation pour l’utilisation des fonctions Java ?

Quelles sont les stratégies de surveillance et de journalisation pour l’utilisation des fonctions Java ?

王林
王林original
2024-04-24 18:06:01778parcourir

Stratégie de surveillance et de journalisation des fonctions Java : Surveillance : utilisation de l'API Cloud Monitoring : offre une visibilité sur les performances et les métriques. Envoyez des points de données métriques personnalisés et des séries chronologiques. Journalisation : utilisez Stackdriver Logging : enregistrez les événements pour le débogage et le dépannage. Utilisez l'API Cloud Logging : envoyez et recevez des entrées de journal. Via Stackdriver Logging : enregistrement direct, fournissant des instructions et une configuration de journal pratiques.

使用 Java 函数的监控和日志记录策略有哪些?

Stratégies de surveillance et de journalisation utilisant les fonctions Java

Introduction

La surveillance et la journalisation sont essentielles au maintien de fonctions Java stables et fiables. Cet article traite des différentes manières d'implémenter ces stratégies dans les fonctions Java.

Surveillance

  • Utilisation de l'API Cloud Monitoring : L'API offre une visibilité approfondie sur les performances des fonctions et d'autres mesures.
import com.google.cloud.functions.HttpFunction;
import com.google.cloud.functions.HttpRequest;
import com.google.cloud.functions.HttpResponse;
import com.google.cloud.monitoring.v3.MetricServiceClient;
import com.google.monitoring.v3.CustomMetric;
import com.google.monitoring.v3.ProjectName;
import com.google.monitoring.v3.TimeInterval;
import com.google.monitoring.v3.TimeSeries;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

public class Monitor implements HttpFunction {

  private static final String projectId = System.getenv("GOOGLE_CLOUD_PROJECT");
  private static final MetricServiceClient metricClient = MetricServiceClient.create();
  private static final ProjectName projectName = ProjectName.of(projectId);

  @Override
  public void service(HttpRequest request, HttpResponse response)
      throws IOException {
    var writer = new PrintWriter(response.getWriter());

    // 创建一个自定义指标
    var metric =
        CustomMetric.newBuilder()
            .setType("custom.googleapis.com/my_metric")
            .setMetricKind(CustomMetric.MetricKind.GAUGE)
            .setValueType(CustomMetric.ValueType.DOUBLE)
            .build();

    // 发送指标数据点
    var requestBuilder = TimeSeries.newBuilder()
        .setMetric(metric.getName())
        .setResource(projectName.toString())
        .addMetrics(
            CustomMetric.newBuilder()
                .setDoubleValue(Math.random() * 100)
                .build());

    var timestamp = new Date().getTime() / 1000.0;
    requestBuilder.setInterval(
        TimeInterval.newBuilder()
            .setStartTime(com.google.protobuf.Timestamp.newBuilder().setSeconds(timestamp).build())
            .setEndTime(com.google.protobuf.Timestamp.newBuilder().setSeconds(timestamp).build())
            .build());

    TimeSeries series = requestBuilder.build();

    metricClient.createTimeSeries(projectName, series);
    writer.printf("Metric sent at: %s\n", new Date());
  }
}
  • Utilisez Stackdriver Logging : Enregistrez les événements lors de l'exécution de la fonction, fournissant ainsi des informations précieuses pour le débogage et le dépannage.
import com.google.cloud.functions.HttpFunction;
import com.google.cloud.functions.HttpRequest;
import com.google.cloud.functions.HttpResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Logger;

public class Log implements HttpFunction {

  private static final Logger logger = Logger.getLogger(Log.class.getName());

  @Override
  public void service(HttpRequest request, HttpResponse response)
      throws IOException {
    var writer = new PrintWriter(response.getWriter());

    // 记录信息级别日志消息
    logger.info("Function executed successfully.");
    writer.printf("Logged at: %s\n", new Date());
  }
}

Logging

  • Utilisation de l'API Cloud Logging : Un service de journalisation à usage général pour envoyer et recevoir des entrées de journal à partir de fonctions Java.
import com.google.api.gax.rpc.ApiException;
import com.google.cloud.functions.BackgroundFunction;
import com.google.cloud.functions.Context;
import com.google.cloud.logging.LogEntry;
import com.google.cloud.logging.Logging;
import com.google.cloud.logging.LoggingOptions;
import java.util.HashMap;
import java.util.Map;

public class CloudLog implements BackgroundFunction<Object> {

  private static final Logging logging = LoggingOptions.getDefaultInstance().getService();

  @Override
  public void accept(Object message, Context context) {
    var payload = (Map<String, Object>) message;

    // 创建一个日志条目
    Map<String, String> labels = new HashMap<>();
    labels.put("function", context.getFunctionName());
    labels.put("region", context.getRegion());
    LogEntry entry =
        LogEntry.newBuilder(payload.toString())
            .setSeverity(LogEntry.Severity.INFO)
            .setLabels(labels)
            .build();

    // 发送日志条目
    try {
      logging.write(LogEntry.of(entry));
    } catch (ApiException e) {
      e.printStackTrace();
    }
  }
}
  • Utilisez Stackdriver Logging : Connectez-vous directement à Stackdriver Logging, fournissant des instructions de journalisation et une configuration de journalisation pratiques.
import com.google.cloud.functions.HttpFunction;
import com.google.cloud.functions.HttpRequest;
import com.google.cloud.functions.HttpResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Log implements HttpFunction {

  private static final Logger logger = Logger.getLogger(Log.class.getName());

  @Override
  public void service(HttpRequest request, HttpResponse response)
      throws IOException {
    var writer = new PrintWriter(response.getWriter());

    // 记录警告级别日志消息
    logger.log(Level.WARNING, "Function encountered an issue.");
    writer.printf("Logged at: %s\n", new Date());
  }
}

En utilisant ces stratégies, les fonctions Java peuvent être surveillées et enregistrées efficacement, améliorant ainsi la stabilité, détectant les erreurs et accélérant le dépannage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn