本文整理匯總了Golang中github.com/cloudfoundry/noaa/events.Envelope.GetContainerMetric方法的典型用法代碼示例。如果您正苦於以下問題:Golang Envelope.GetContainerMetric方法的具體用法?Golang Envelope.GetContainerMetric怎麽用?Golang Envelope.GetContainerMetric使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/cloudfoundry/noaa/events.Envelope
的用法示例。
在下文中一共展示了Envelope.GetContainerMetric方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Process
func (p *ContainerMetricProcessor) Process(e *events.Envelope) []metrics.WMetric {
processedMetrics := make([]metrics.WMetric, 3)
containerMetricEvent := e.GetContainerMetric()
processedMetrics[0] = *p.ProcessContainerMetricCPU(containerMetricEvent)
processedMetrics[1] = *p.ProcessContainerMetricMemory(containerMetricEvent)
processedMetrics[2] = *p.ProcessContainerMetricDisk(containerMetricEvent)
return processedMetrics
}
示例2: ContainerMetric
func ContainerMetric(msg *events.Envelope) Event {
containerMetric := msg.GetContainerMetric()
fields := logrus.Fields{
"origin": msg.GetOrigin(),
"cf_app_id": containerMetric.GetApplicationId(),
"cpu_percentage": containerMetric.GetCpuPercentage(),
"disk_bytes": containerMetric.GetDiskBytes(),
"instance_index": containerMetric.GetInstanceIndex(),
"memory_bytes": containerMetric.GetMemoryBytes(),
}
return Event{
Fields: fields,
Msg: "",
Type: msg.GetEventType().String(),
}
}
示例3: ContainerMetrics
// ContainerMetrics connects to traffic controller via its 'containermetrics' http(s) endpoint and returns the most recent messages for an app.
// The returned metrics will be sorted by InstanceIndex.
func (cnsmr *Consumer) ContainerMetrics(appGuid string, authToken string) ([]*events.ContainerMetric, error) {
resp, err := cnsmr.makeHttpRequestToTrafficController(appGuid, authToken, "containermetrics")
if err != nil {
return nil, errors.New(fmt.Sprintf("Error dialing traffic controller server: %s.\nPlease ask your Cloud Foundry Operator to check the platform configuration (traffic controller endpoint is %s).", err.Error(), cnsmr.trafficControllerUrl))
}
defer resp.Body.Close()
err = checkForErrors(resp)
if err != nil {
return nil, err
}
reader, err := checkContentsAndFindBoundaries(resp)
if err != nil {
return nil, err
}
var buffer bytes.Buffer
messages := make([]*events.ContainerMetric, 0, 200)
for part, loopErr := reader.NextPart(); loopErr == nil; part, loopErr = reader.NextPart() {
buffer.Reset()
msg := new(events.Envelope)
_, err := buffer.ReadFrom(part)
if err != nil {
break
}
proto.Unmarshal(buffer.Bytes(), msg)
if msg.GetEventType() == events.Envelope_LogMessage {
return []*events.ContainerMetric{}, errors.New(fmt.Sprintf("Upstream error: %s", msg.GetLogMessage().GetMessage()))
}
messages = append(messages, msg.GetContainerMetric())
}
SortContainerMetrics(messages)
return messages, err
}