本文整理汇总了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
}