Java 関数のモニタリングとロギングの戦略: モニタリング: Cloud Monitoring API の使用: パフォーマンスと指標の可視性を提供します。カスタム メトリック データ ポイントと時系列を送信します。ロギング: Stackdriver を使用します。 ロギング: デバッグとトラブルシューティングのためにイベントを記録します。 Cloud Logging API を使用する: ログエントリを送受信します。 Stackdriver Logging を通じて: 直接記録し、便利なログ ステートメントと構成を提供します。
#Java 関数を使用したモニタリングとロギング戦略
はじめに
モニタリングとロギング安定した信頼性の高い Java 機能を維持するために重要です。この記事では、Java 関数でこれらの戦略を実装するさまざまな方法について説明します。モニタリング
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()); } }
ロギング
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()); } }
以上がJava 関数を使用するための監視およびロギング戦略は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。