Rumah >Java >javaTutorial >Apakah strategi pemantauan dan pembalakan untuk menggunakan fungsi Java?

Apakah strategi pemantauan dan pembalakan untuk menggunakan fungsi Java?

王林
王林asal
2024-04-24 18:06:01862semak imbas

Strategi untuk memantau dan mengelog fungsi Java: Pemantauan: Menggunakan API Pemantauan Awan: Menyediakan keterlihatan ke dalam prestasi dan metrik. Hantar titik data metrik tersuai dan siri masa. Pengelogan: Gunakan Pengelogan Stackdriver: Log peristiwa untuk penyahpepijatan dan penyelesaian masalah. Gunakan API Pengelogan Awan: Hantar dan terima entri log. Melalui Stackdriver Logging: rakaman langsung, menyediakan penyataan dan konfigurasi log yang mudah.

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

Strategi pemantauan dan log menggunakan fungsi Java

Pengenalan

Pemantauan dan pengelogan adalah penting untuk mengekalkan fungsi Java yang stabil dan boleh dipercayai. Artikel ini membincangkan cara yang berbeza untuk melaksanakan strategi ini dalam fungsi Java.

Memantau

  • Menggunakan API Pemantauan Awan: API memberikan keterlihatan yang mendalam ke dalam prestasi fungsi dan metrik lain.
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());
  }
}
  • Gunakan Stackdriver Logging: Log peristiwa dalam pelaksanaan fungsi, memberikan cerapan berharga untuk penyahpepijatan dan penyelesaian masalah.
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

  • Menggunakan Cloud Logging API: Perkhidmatan pengelogan tujuan umum untuk menghantar dan menerima entri log daripada fungsi 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();
    }
  }
}
  • Gunakan Stackdriver Logging: Log terus ke Stackdriver Logging, menyediakan pernyataan log yang mudah dan konfigurasi log.
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());
  }
}

Dengan menggunakan strategi ini, fungsi Java boleh dipantau dan dilog dengan berkesan, meningkatkan kestabilan, mengesan ralat dan mempercepatkan penyelesaian masalah.

Atas ialah kandungan terperinci Apakah strategi pemantauan dan pembalakan untuk menggunakan fungsi Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn