演示如何写入时序数据。
深入探索
如需查看包含此代码示例的详细文档,请参阅以下内容:
代码示例
C#
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
public static object WriteTimeSeriesData(string projectId)
{
// Create client.
MetricServiceClient metricServiceClient = MetricServiceClient.Create();
// Initialize request argument(s).
ProjectName name = new ProjectName(projectId);
// Prepare a data point.
Point dataPoint = new Point();
TypedValue salesTotal = new TypedValue();
salesTotal.DoubleValue = 123.45;
dataPoint.Value = salesTotal;
Timestamp timeStamp = new Timestamp();
timeStamp.Seconds = (long)(DateTime.UtcNow - s_unixEpoch).TotalSeconds;
TimeInterval interval = new TimeInterval();
interval.EndTime = timeStamp;
dataPoint.Interval = interval;
// Prepare custom metric.
Metric metric = new Metric();
metric.Type = "custom.googleapis.com/stores/daily_sales";
metric.Labels.Add("store_id", "Pittsburgh");
// Prepare monitored resource.
MonitoredResource resource = new MonitoredResource();
resource.Type = "global";
resource.Labels.Add("project_id", projectId);
// Create a new time series using inputs.
TimeSeries timeSeriesData = new TimeSeries();
timeSeriesData.Metric = metric;
timeSeriesData.Resource = resource;
timeSeriesData.Points.Add(dataPoint);
// Add newly created time series to list of time series to be written.
IEnumerable<TimeSeries> timeSeries = new List<TimeSeries> { timeSeriesData };
// Write time series data.
metricServiceClient.CreateTimeSeries(name, timeSeries);
Console.WriteLine("Done writing time series data:");
Console.WriteLine(JObject.Parse($"{timeSeriesData}").ToString());
return 0;
}
Go
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
// writeTimeSeriesValue writes a value for the custom metric created
func writeTimeSeriesValue(projectID, metricType string) error {
ctx := context.Background()
c, err := monitoring.NewMetricClient(ctx)
if err != nil {
return err
}
defer c.Close()
now := ×tamp.Timestamp{
Seconds: time.Now().Unix(),
}
req := &monitoringpb.CreateTimeSeriesRequest{
Name: "projects/" + projectID,
TimeSeries: []*monitoringpb.TimeSeries{{
Metric: &metricpb.Metric{
Type: metricType,
Labels: map[string]string{
"environment": "STAGING",
},
},
Resource: &monitoredres.MonitoredResource{
Type: "gce_instance",
Labels: map[string]string{
"instance_id": "test-instance",
"zone": "us-central1-f",
},
},
Points: []*monitoringpb.Point{{
Interval: &monitoringpb.TimeInterval{
StartTime: now,
EndTime: now,
},
Value: &monitoringpb.TypedValue{
Value: &monitoringpb.TypedValue_Int64Value{
Int64Value: rand.Int63n(10),
},
},
}},
}},
}
log.Printf("writeTimeseriesRequest: %+v\n", req)
err = c.CreateTimeSeries(ctx, req)
if err != nil {
return fmt.Errorf("could not write time series value, %w ", err)
}
return nil
}
Java
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
String projectId = System.getProperty("projectId");
// Prepares an individual data point
TimeInterval interval =
TimeInterval.newBuilder()
.setEndTime(Timestamps.fromMillis(System.currentTimeMillis()))
.build();
TypedValue value = TypedValue.newBuilder().setDoubleValue(123.45).build();
Point point = Point.newBuilder().setInterval(interval).setValue(value).build();
List<Point> pointList = new ArrayList<>();
pointList.add(point);
ProjectName name = ProjectName.of(projectId);
// Prepares the metric descriptor
Map<String, String> metricLabels = new HashMap<>();
Metric metric =
Metric.newBuilder()
.setType("custom.googleapis.com/my_metric")
.putAllLabels(metricLabels)
.build();
// Prepares the monitored resource descriptor
Map<String, String> resourceLabels = new HashMap<>();
resourceLabels.put("instance_id", "1234567890123456789");
resourceLabels.put("zone", "us-central1-f");
MonitoredResource resource =
MonitoredResource.newBuilder().setType("gce_instance").putAllLabels(resourceLabels).build();
// Prepares the time series request
TimeSeries timeSeries =
TimeSeries.newBuilder()
.setMetric(metric)
.setResource(resource)
.addAllPoints(pointList)
.build();
List<TimeSeries> timeSeriesList = new ArrayList<>();
timeSeriesList.add(timeSeries);
CreateTimeSeriesRequest request =
CreateTimeSeriesRequest.newBuilder()
.setName(name.toString())
.addAllTimeSeries(timeSeriesList)
.build();
// Writes time series data
try (final MetricServiceClient client = MetricServiceClient.create();) {
client.createTimeSeries(request);
}
System.out.println("Done writing time series value.");
Node.js
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
// Imports the Google Cloud client library
const monitoring = require('@google-cloud/monitoring');
// Creates a client
const client = new monitoring.MetricServiceClient();
async function writeTimeSeriesData() {
/**
* TODO(developer): Uncomment and edit the following lines of code.
*/
// const projectId = 'YOUR_PROJECT_ID';
const dataPoint = {
interval: {
endTime: {
seconds: Date.now() / 1000,
},
},
value: {
doubleValue: 123.45,
},
};
const timeSeriesData = {
metric: {
type: 'custom.googleapis.com/stores/daily_sales',
labels: {
store_id: 'Pittsburgh',
},
},
resource: {
type: 'global',
labels: {
project_id: projectId,
},
},
points: [dataPoint],
};
const request = {
name: client.projectPath(projectId),
timeSeries: [timeSeriesData],
};
// Writes time series data
const result = await client.createTimeSeries(request);
console.log('Done writing time series data.', result);
}
writeTimeSeriesData();
PHP
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
use Google\Api\Metric;
use Google\Api\MonitoredResource;
use Google\Cloud\Monitoring\V3\Client\MetricServiceClient;
use Google\Cloud\Monitoring\V3\CreateTimeSeriesRequest;
use Google\Cloud\Monitoring\V3\Point;
use Google\Cloud\Monitoring\V3\TimeInterval;
use Google\Cloud\Monitoring\V3\TimeSeries;
use Google\Cloud\Monitoring\V3\TypedValue;
use Google\Protobuf\Timestamp;
/**
* Example:
* ```
* write_timeseries($projectId);
* ```
*
* @param string $projectId Your project ID
*/
function write_timeseries($projectId)
{
$metrics = new MetricServiceClient([
'projectId' => $projectId,
]);
$projectName = 'projects/' . $projectId;
$endTime = new Timestamp();
$endTime->setSeconds(time());
$interval = new TimeInterval();
$interval->setEndTime($endTime);
$value = new TypedValue();
$value->setDoubleValue(123.45);
$point = new Point();
$point->setValue($value);
$point->setInterval($interval);
$points = [$point];
$metric = new Metric();
$metric->setType('custom.googleapis.com/stores/daily_sales');
$labels = ['store_id' => 'Pittsburg'];
$metric->setLabels($labels);
$resource = new MonitoredResource();
$resource->setType('global');
$labels = ['project_id' => $projectId];
$resource->setLabels($labels);
$timeSeries = new TimeSeries();
$timeSeries->setMetric($metric);
$timeSeries->setResource($resource);
$timeSeries->setPoints($points);
$createTimeSeriesRequest = (new CreateTimeSeriesRequest())
->setName($projectName)
->setTimeSeries([$timeSeries]);
$metrics->createTimeSeries($createTimeSeriesRequest);
printf('Done writing time series data.' . PHP_EOL);
}
Python
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
from google.cloud import monitoring_v3
client = monitoring_v3.MetricServiceClient()
project_name = f"projects/{project_id}"
series = monitoring_v3.TimeSeries()
series.metric.type = "custom.googleapis.com/my_metric" + str(uuid.uuid4())
series.resource.type = "gce_instance"
series.resource.labels["instance_id"] = "1234567890123456789"
series.resource.labels["zone"] = "us-central1-c"
series.metric.labels["TestLabel"] = "My Label Data"
now = time.time()
seconds = int(now)
nanos = int((now - seconds) * 10**9)
interval = monitoring_v3.TimeInterval(
{"end_time": {"seconds": seconds, "nanos": nanos}}
)
point = monitoring_v3.Point({"interval": interval, "value": {"double_value": 3.14}})
series.points = [point]
client.create_time_series(name=project_name, time_series=[series])
Ruby
如需向 Monitoring 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
# Your Google Cloud Platform project ID
# project_id = "YOUR_PROJECT_ID"
# Example metric type
# metric_type = "custom.googleapis.com/my_metric"
client = Google::Cloud::Monitoring.metric_service
project_name = client.project_path project: project_id
series = Google::Cloud::Monitoring::V3::TimeSeries.new
series.metric = Google::Api::Metric.new type: metric_type
resource = Google::Api::MonitoredResource.new type: "global"
resource.labels["project_id"] = project_id
series.resource = resource
point = Google::Cloud::Monitoring::V3::Point.new
point.value = Google::Cloud::Monitoring::V3::TypedValue.new double_value: 3.14
now = Time.now
end_time = Google::Protobuf::Timestamp.new seconds: now.to_i, nanos: now.nsec
point.interval = Google::Cloud::Monitoring::V3::TimeInterval.new end_time: end_time
series.points << point
client.create_time_series name: project_name, time_series: [series]
p "Time series created."
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。