private async Task <List <Metric> > ReadQueueMetrics() { var metrics = new List <Metric>(); string token = null; do { var request = new ListMetricsRequest { MetricName = "ApproximateAgeOfOldestMessage", NextToken = token }; var response = await _amazonCloudWatch.ListMetricsAsync(request); if (response != null) { token = response.NextToken; metrics.AddRange(response.Metrics); } else { token = null; } } while (token != null); return(metrics); }
public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonCloudWatchConfig config = new AmazonCloudWatchConfig(); config.RegionEndpoint = region; ConfigureClient(config); AmazonCloudWatchClient client = new AmazonCloudWatchClient(creds, config); ListMetricsResponse resp = new ListMetricsResponse(); do { ListMetricsRequest req = new ListMetricsRequest { NextToken = resp.NextToken }; resp = client.ListMetrics(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.Metrics) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.NextToken)); }
protected override void ProcessRecord() { base.ProcessRecord(); ListMetricsRequest request; try { request = new ListMetricsRequest { CompartmentId = CompartmentId, ListMetricsDetails = ListMetricsDetails, OpcRequestId = OpcRequestId, Page = Page, Limit = Limit, CompartmentIdInSubtree = CompartmentIdInSubtree }; IEnumerable <ListMetricsResponse> responses = GetRequestDelegate().Invoke(request); foreach (var item in responses) { response = item; WriteOutput(response, response.Items, true); } if (!ParameterSetName.Equals(AllPageSet) && !ParameterSetName.Equals(LimitSet) && response.OpcNextPage != null) { WriteWarning("This operation supports pagination and not all resources were returned. Re-run using the -All option to auto paginate and list all resources."); } FinishProcessing(response); } catch (Exception ex) { TerminatingErrorDuringExecution(ex); } }
protected override void ProcessRecord() { base.ProcessRecord(); ListMetricsRequest request; try { request = new ListMetricsRequest { CompartmentId = CompartmentId, ListMetricsDetails = ListMetricsDetails, OpcRequestId = OpcRequestId, Page = Page, Limit = Limit, CompartmentIdInSubtree = CompartmentIdInSubtree }; IEnumerable <ListMetricsResponse> responses = GetRequestDelegate().Invoke(request); foreach (var item in responses) { response = item; WriteOutput(response, response.Items, true); } FinishProcessing(response); } catch (Exception ex) { TerminatingErrorDuringExecution(ex); } }
public async Task <List <Metric> > GetMetrics(string region, string nameSpace, string metric, List <string> dimensions) { cloudWatchRepository.Region = region; var dimensionFilter = new List <DimensionFilter>(); dimensions.ForEach(x => { dimensionFilter.Add(new DimensionFilter() { Name = MonitoringConstants.nameSpaceIdentifiers[nameSpace], Value = x }); }); var request = new ListMetricsRequest() { Namespace = nameSpace, MetricName = metric, Dimensions = dimensionFilter }; var response = new ListMetricsResponse(); do { response = await cloudWatchRepository.ListMetrics(request); request.NextToken = response.NextToken; } while (!string.IsNullOrEmpty(request.NextToken)); return(response.Metrics); }
private async Task <List <Metric> > ReadStreamMetrics() { var metrics = new List <Metric>(); string token = null; do { var request = new ListMetricsRequest { MetricName = "GetRecords.IteratorAgeMilliseconds", NextToken = token }; var response = await _amazonCloudWatch.ListMetricsAsync(request); if (response != null) { token = response.NextToken; metrics.AddRange(response.Metrics); } else { token = null; } }while (token != null); return(metrics); }
/// <summary> /// Returns metric definitions that match the criteria specified in the request. Compartment OCID required. /// For information about metrics, see [Metrics Overview](https://docs.cloud.oracle.com/iaas/Content/Monitoring/Concepts/monitoringoverview.htm#MetricsOverview). /// For important limits information, see [Limits on Monitoring](https://docs.cloud.oracle.com/iaas/Content/Monitoring/Concepts/monitoringoverview.htm#Limits). /// <br/> /// Transactions Per Second (TPS) per-tenancy limit for this operation: 10. /// /// </summary> /// <param name="request">The request object containing the details to send. Required.</param> /// <param name="retryConfiguration">The retry configuration that will be used by to send this request. Optional.</param> /// <param name="cancellationToken">The cancellation token to cancel this operation. Optional.</param> /// <returns>A response object containing details about the completed operation</returns> /// <example>Click <a href="https://docs.cloud.oracle.com/en-us/iaas/tools/dot-net-examples/latest/monitoring/ListMetrics.cs.html">here</a> to see an example of how to use ListMetrics API.</example> public async Task <ListMetricsResponse> ListMetrics(ListMetricsRequest request, RetryConfiguration retryConfiguration = null, CancellationToken cancellationToken = default) { logger.Trace("Called listMetrics"); Uri uri = new Uri(this.restClient.GetEndpoint(), System.IO.Path.Combine(basePathWithoutHost, "/metrics/actions/listMetrics".Trim('/'))); HttpMethod method = new HttpMethod("POST"); HttpRequestMessage requestMessage = Converter.ToHttpRequestMessage(uri, method, request); requestMessage.Headers.Add("Accept", "application/json"); GenericRetrier retryingClient = Retrier.GetPreferredRetrier(retryConfiguration, this.retryConfiguration); HttpResponseMessage responseMessage; try { if (retryingClient != null) { responseMessage = await retryingClient.MakeRetryingCall(this.restClient.HttpSend, requestMessage, cancellationToken).ConfigureAwait(false); } else { responseMessage = await this.restClient.HttpSend(requestMessage).ConfigureAwait(false); } this.restClient.CheckHttpResponseMessage(requestMessage, responseMessage); return(Converter.FromHttpResponseMessage <ListMetricsResponse>(responseMessage)); } catch (Exception e) { logger.Error($"ListMetrics failed with error: {e.Message}"); throw; } }
/// <summary> /// 查询指标列表 /// </summary> public async Task <ListMetricsResponse> ListMetricsAsync(ListMetricsRequest listMetricsRequest) { Dictionary <string, string> urlParam = new Dictionary <string, string>(); string urlPath = HttpUtils.AddUrlPath("/V1.0/{project_id}/metrics", urlParam); SdkRequest request = HttpUtils.InitSdkRequest(urlPath, listMetricsRequest); HttpResponseMessage response = await DoHttpRequestAsync("GET", request); return(JsonUtils.DeSerialize <ListMetricsResponse>(response)); }
public async Task <ListMetricsResponse> ListMetrics(ListMetricsRequest listMetricsRequest) { using (var amazonCloudWatchClient = new AmazonCloudWatchClient(awsCredentials, RegionEndpoint.GetBySystemName(Region))) { var response = await amazonCloudWatchClient.ListMetricsAsync(listMetricsRequest); return(response); } }
public static void CWListMetrics() { #region CWListMetrics var client = new AmazonCloudWatchClient(); var filter = new DimensionFilter { Name = "InstanceType", Value = "t1.micro" }; var request = new ListMetricsRequest { Dimensions = new List <DimensionFilter>() { filter }, MetricName = "CPUUtilization", Namespace = "AWS/EC2" }; var response = new ListMetricsResponse(); do { response = client.ListMetrics(request); if (response.Metrics.Count > 0) { foreach (var metric in response.Metrics) { Console.WriteLine(metric.MetricName + " (" + metric.Namespace + ")"); foreach (var dimension in metric.Dimensions) { Console.WriteLine(" " + dimension.Name + ": " + dimension.Value); } } } else { Console.WriteLine("No metrics found."); } request.NextToken = response.NextToken; } while (!string.IsNullOrEmpty(response.NextToken)); #endregion Console.ReadLine(); }
public override AsyncUnaryCall <ListMetricsResponse> ListMetricsAsync(ListMetricsRequest request, Metadata headers = null, DateTime?deadline = null, CancellationToken cancellationToken = default) { DateTimeOffset endDateTime; if (string.IsNullOrEmpty(request.PageToken)) { endDateTime = request.EndTime?.ToDateTimeOffset() ?? DateTimeOffset.UtcNow; } else { endDateTime = DateTimeOffset.Parse(request.PageToken, CultureInfo.InvariantCulture); } endDateTime = endDateTime.ToUniversalTime(); var startDateTime = request.StartTime?.ToDateTime(); var metrics = new List <Metric>(request.PageSize); for (int i = 0; i < request.PageSize; i++) { endDateTime = endDateTime.Subtract(TimeSpan.FromSeconds(5)); if (startDateTime.HasValue && startDateTime > endDateTime) { break; } metrics.Add(new Metric { CreateTime = Timestamp.FromDateTimeOffset(endDateTime), InputWaterCelsiusDegree = RandomUtils.NextFloat(10, 20), OutputWaterCelsiusDegree = RandomUtils.NextFloat(10, 20), HeaterOutputWaterCelsiusDegree = RandomUtils.NextFloat(10, 20), EnvironmentCelsiusDegree = RandomUtils.NextFloat(10, 20), HeaterPowerKilowatt = RandomUtils.NextFloat(0, 12), WaterPumpFlowRateCubicMeterPerHour = RandomUtils.NextFloat(1, 3), }); } var response = new ListMetricsResponse { NextPageToken = endDateTime.ToUniversalTime().ToString(CultureInfo.InvariantCulture), }; response.Metrics.AddRange(metrics); return(TestCalls.AsyncUnaryCall( Task.FromResult(response), Task.FromResult(new Metadata()), () => Status.DefaultSuccess, () => new Metadata(), () => { })); }
/// <summary> /// Creates a new enumerable which will iterate over the responses received from the ListMetrics operation. This enumerable /// will fetch more data from the server as needed. /// </summary> /// <param name="request">The request object containing the details to send</param> /// <param name="retryConfiguration">The configuration for retrying, may be null</param> /// <param name="cancellationToken">The cancellation token object</param> /// <returns>The enumerator, which supports a simple iteration over a collection of a specified type</returns> public IEnumerable <ListMetricsResponse> ListMetricsResponseEnumerator(ListMetricsRequest request, Common.Retry.RetryConfiguration retryConfiguration = null, CancellationToken cancellationToken = default) { return(new Common.Utils.ResponseEnumerable <ListMetricsRequest, ListMetricsResponse>( response => response.OpcNextPage, input => { if (!string.IsNullOrEmpty(input)) { request.Page = input; } return request; }, request => client.ListMetrics(request, retryConfiguration, cancellationToken) )); }
public override Task <ListMetricsResponse> ListMetrics(ListMetricsRequest request, ServerCallContext context) { string id = BitConverter.ToString(request.DeviceId.ToByteArray()); DateTimeOffset endDateTime; if (string.IsNullOrEmpty(request.PageToken)) { endDateTime = request.EndTime?.ToDateTimeOffset() ?? DateTimeOffset.UtcNow; } else { endDateTime = DateTimeOffset.Parse(request.PageToken, CultureInfo.InvariantCulture); } endDateTime = endDateTime.ToUniversalTime(); DateTimeOffset?startDateTime = request.StartTime?.ToDateTimeOffset().ToUniversalTime(); var response = new ListMetricsResponse(); using (BjdireContext db = this.serviceProvider.GetRequiredService <BjdireContext>()) { var metrics = (from m in db.Metrics where m.DeviceId == id && (startDateTime == null || startDateTime <= m.Timestamp) && m.Timestamp <= endDateTime orderby m.Timestamp descending select m) .Take(request.PageSize) .ToList(); response.Metrics.AddRange(metrics.Select(metric => { var m = new GrpcMetric(); m.AssignFrom(metric); return(m); })); if (metrics.Count == request.PageSize && metrics.Last().Timestamp > startDateTime) { response.NextPageToken = metrics.Last().Timestamp .ToUniversalTime() .ToString(CultureInfo.InvariantCulture); } } return(Task.FromResult(response)); }
public async Task <List <Metric> > GetMetrics(string region, string nameSpace, string metric) { cloudWatchRepository.Region = region; var request = new ListMetricsRequest() { Namespace = nameSpace, MetricName = metric }; var response = new ListMetricsResponse(); do { response = await cloudWatchRepository.ListMetrics(request); request.NextToken = response.NextToken; } while (!string.IsNullOrEmpty(request.NextToken)); return(response.Metrics); }
/// <summary> /// Retrieve CloudWatch metrics using the supplied filter, metrics name, /// and namespace. /// </summary> /// <param name="client">An initialized CloudWatch client.</param> /// <param name="filter">The filter to apply in retrieving metrics.</param> /// <param name="metricName">The metric name for which to retrieve /// information.</param> /// <param name="nameSpaceName">The name of the namespace from which /// to retrieve metric information.</param> public static async Task ListMetricsAsync( IAmazonCloudWatch client, DimensionFilter filter, string metricName, string nameSpaceName) { var request = new ListMetricsRequest { Dimensions = new List <DimensionFilter>() { filter }, MetricName = metricName, Namespace = nameSpaceName, }; var response = new ListMetricsResponse(); do { response = await client.ListMetricsAsync(request); if (response.Metrics.Count > 0) { foreach (var metric in response.Metrics) { Console.WriteLine(metric.MetricName + " (" + metric.Namespace + ")"); foreach (var dimension in metric.Dimensions) { Console.WriteLine(" " + dimension.Name + ": " + dimension.Value); } } } else { Console.WriteLine("No metrics found."); } request.NextToken = response.NextToken; } while (!string.IsNullOrEmpty(response.NextToken)); }
/// <summary> /// Returns metric definitions that match the criteria specified in the request. /// Compartment OCID required. For information about metrics, see Metrics Overview. /// For important limits information, see Limits on Monitoring. /// Transactions Per Second (TPS) per-tenancy limit for this operation: 1. /// </summary> /// <param name="param"></param> /// <returns></returns> public async Task <ListMetricsResponse> ListMetrics(ListMetricsRequest param) { var uri = new Uri($"{GetEndPoint(MonitoringServices.Metrics, this.Region)}/actions/listMetrics?{param.GetOptionQuery()}"); using (var webResponse = await this.RestClientAsync.Post(uri, param.ListMetricsDetails, new HttpRequestHeaderParam() { OpcRequestId = param.OpcRequestId })) using (var stream = webResponse.GetResponseStream()) using (var reader = new StreamReader(stream)) { var response = await reader.ReadToEndAsync(); return(new ListMetricsResponse() { Items = JsonSerializer.Deserialize <List <MetricModel> >(response), OpcNextPage = webResponse.Headers.Get("opc-next-page"), OpcRequestId = webResponse.Headers.Get("opc-request-id") }); } }
/// <summary> /// 查询系统当前可监控指标列表,可以指定指标命名空间、指标名称、维度、排序方式,起始记录和最大记录条数过滤查询结果。 /// </summary> /// <param name="cesV1Client"></param> private static void ListMetrics(CesClient cesClient) { ListMetricsRequest listMetricsRequest = new ListMetricsRequest() { MetricName = "cpu_util", Namespace = "SYS.ECS", // Dim0 = "", // Dim1 = "", // Dim2 = "", // Start = "", Limit = 100, Order = ListMetricsRequest.OrderEnum.ASC }; try { ListMetricsResponse metricList = cesClient.ListMetrics(listMetricsRequest); foreach (var metric in metricList.Metrics) { Console.WriteLine(metric.ToString()); } } catch (RequestTimeoutException requestTimeoutException) { Console.WriteLine(requestTimeoutException.ErrorMessage); } catch (ServiceResponseException clientRequestException) { Console.WriteLine(clientRequestException.HttpStatusCode); Console.WriteLine(clientRequestException.ErrorCode); Console.WriteLine(clientRequestException.ErrorMsg); } catch (ConnectionException connectionException) { Console.WriteLine(connectionException.ErrorMessage); } }
public static void MonitoringResourceExample(ClientConfig config) { // create client var identityClient = new IdentityClient(config); var computeClient = new ComputeClient(config); var monitoringClient = new MonitoringClient(config); var listCompartmenRequest = new ListCompartmentRequest() { CompartmentId = identityClient.Config.TenancyId, CompartmentIdInSubtree = true, AccessLevel = ListCompartmentRequest.AccessLevels.ACCESSIBLE, Limit = 10 }; // get compartment var listCompartment = identityClient.ListCompartment(listCompartmenRequest).Items; Console.WriteLine("* List Instance Metrics------------------------"); foreach (var compartment in listCompartment) { if (!compartment.IsAccessible.HasValue || !compartment.IsAccessible.Value) { continue; } var listInstanceRequest = new ListInstancesRequest() { CompartmentId = compartment.Id, Limit = 50, LifecycleState = ListInstancesRequest.LifecycleStates.RUNNING, SortOrder = SortOrder.ASC }; var now = DateTime.UtcNow.AddHours(-2); var endTime = DateTime.UtcNow; // get instance var listInstance = computeClient.ListInstances(listInstanceRequest).Items; foreach (var instance in listInstance) { Console.WriteLine($" |-{instance.DisplayName}------------"); // get all computeagent var listMetricsRequest = new ListMetricsRequest() { CompartmentId = compartment.Id, CompartmentIdInSubtree = compartment.CompartmentId == config.TenancyId, ListMetricsDetails = new ListMetricsDetails() { Namespace = "oci_computeagent", DimensionFilters = new DimensionFilter() { ResourceId = instance.Id } } }; // get Metrics try { var listMetrics = monitoringClient.ListMetrics(listMetricsRequest).Items; foreach (var metrics in listMetrics) { Console.WriteLine($"\t| Mertics: {metrics.Name}"); Console.WriteLine($"\t| NameSpace: {metrics.Namespace}"); // metric dimensions //Console.WriteLine($"\t| {metrics.Dimensions}".Replace("\n", "")); var summarizeMetricsDataRequest = new SummarizeMetricsDataRequest() { CompartmentId = compartment.Id, CompartmentIdInSubtree = compartment.CompartmentId == config.TenancyId, SummarizeMetricsDataDetails = new SummarizeMetricsDataDetails() { Namespace = metrics.Namespace, Query = metrics.Name + "[1h]{resourceId = \"" + instance.Id + "\"}.mean()", StartTime = now.ToString("yyyy-MM-ddThh:MM:ssZ"), EndTime = endTime.ToString("yyyy-MM-ddThh:MM:ssZ") } }; var SummarizeMetricsDatas = monitoringClient.SummarizeMetricsData(summarizeMetricsDataRequest).Items; foreach (var summaryData in SummarizeMetricsDatas) { foreach (var aggregatedDatapoint in summaryData.AggregatedDatapoints) { Console.WriteLine("\t| {"); Console.WriteLine($"\t| \tTimeStamp: {aggregatedDatapoint.Timestamp}"); Console.WriteLine($"\t| \tValue: {aggregatedDatapoint.Value}"); Console.WriteLine("\t| }"); } } } } catch (WebException we) { Console.WriteLine($"notfund:{we.Message}"); } } } Console.WriteLine("* List compartment Alarms------------------------"); foreach (var compartment in listCompartment) { Console.WriteLine(" Alarm status------------------------"); var listAlarmsStatusRequest = new ListAlarmsStatusRequest() { CompartmentId = compartment.Id, Limit = 1000 }; var alarmStatus = monitoringClient.ListAlarmsStatus(listAlarmsStatusRequest); if (alarmStatus.Items.Count > 0) { Console.WriteLine($" |-{compartment.Name}------------"); foreach (var alarm in alarmStatus.Items) { Console.WriteLine($"\tid:{alarm.Id}"); Console.WriteLine($"\tname:{alarm.DisplayName}"); Console.WriteLine($"\tstatus:{alarm.Status}"); Console.WriteLine($"\tseverity:{alarm.Severity}"); } } var listAlarmsRequest = new ListAlarmsRequest() { CompartmentId = compartment.Id, Limit = 10 }; Console.WriteLine(" Alarm logs------------------------"); var listAlarms = monitoringClient.ListAlarms(listAlarmsRequest); if (listAlarms.Items.Count > 0) { Console.WriteLine($" |-{compartment.Name}------------"); foreach (var alarm in listAlarms.Items) { Console.WriteLine($"\tid:{alarm.Id}"); Console.WriteLine($"\tname:{alarm.DisplayName}"); Console.WriteLine($"\tdestinations:{alarm.Destinations}"); Console.WriteLine($"\tenable:{alarm.IsEnabled}"); Console.WriteLine($"\tstate:{alarm.LifecycleState}"); var getAlarmHistoryRequest = new GetAlarmHistoryRequest() { AlarmId = alarm.Id, TimestampGreaterThanOrEqualTo = DateTime.UtcNow.ToString() }; var history = monitoringClient.GetAlarmHistory(getAlarmHistoryRequest); foreach (var his in history.AlarmHistoryCollection.Entries) { Console.WriteLine($"\t\t|-summary:{his.Summary}"); Console.WriteLine($"\t\t| timestamp:{his.Timestamp}"); Console.WriteLine($"\t\t| timestampTriggered:{his.TimestampTriggered}"); } } } // Transactions Per Second (TPS) per-tenancy limit for this operation: 1. System.Threading.Thread.Sleep(1000); } }