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.
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
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()); } }
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
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(); } } }
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!