Skip to content

Commit ca6ee67

Browse files
authored
Merge pull request #238 from marceloamaral/log-verbosity
Update log lib to klog to enable log verbosity support
2 parents 80ae2a2 + 567675c commit ca6ee67

File tree

21 files changed

+110
-95
lines changed

21 files changed

+110
-95
lines changed

cmd/exporter.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package main
1919
import (
2020
"flag"
2121
"fmt"
22-
"log"
2322
"net/http"
2423

2524
"github.com/sustainable-computing-io/kepler/pkg/collector"
@@ -31,6 +30,8 @@ import (
3130
"github.com/prometheus/client_golang/prometheus"
3231
"github.com/prometheus/client_golang/prometheus/promhttp"
3332
"github.com/prometheus/common/version"
33+
34+
"k8s.io/klog/v2"
3435
)
3536

3637
var (
@@ -42,11 +43,12 @@ var (
4243
)
4344

4445
func main() {
46+
klog.InitFlags(nil)
4547
flag.Parse()
4648

4749
err := prometheus.Register(version.NewCollector("energy_stats_exporter"))
4850
if err != nil {
49-
log.Fatalf("failed to register : %v", err)
51+
klog.Fatalf("failed to register : %v", err)
5052
}
5153

5254
if *enableGPU {
@@ -65,16 +67,16 @@ func main() {
6567
defer newCollector.Destroy()
6668
defer rapl.StopPower()
6769
if err != nil {
68-
log.Panicf("%s", fmt.Sprintf("failed to create collector: %v", err))
70+
klog.Fatalf("%s", fmt.Sprintf("failed to create collector: %v", err))
6971
}
7072
err = newCollector.Attach()
7173
if err != nil {
72-
log.Panicf("%s", fmt.Sprintf("failed to attach : %v", err))
74+
klog.Fatalf("%s", fmt.Sprintf("failed to attach : %v", err))
7375
}
7476

7577
err = prometheus.Register(newCollector)
7678
if err != nil {
77-
log.Panicf("%s", fmt.Sprintf("failed to register collector: %v", err))
79+
klog.Fatalf("%s", fmt.Sprintf("failed to register collector: %v", err))
7880
}
7981

8082
http.Handle(*metricsPath, promhttp.Handler())
@@ -87,12 +89,12 @@ func main() {
8789
</body>
8890
</html>`))
8991
if err != nil {
90-
log.Panicf("%s", fmt.Sprintf("failed to write response: %v", err))
92+
klog.Fatalf("%s", fmt.Sprintf("failed to write response: %v", err))
9193
}
9294
})
9395

9496
err = http.ListenAndServe(*address, nil)
9597
if err != nil {
96-
log.Panicf("%s", fmt.Sprintf("failed to bind on %s: %v", *address, err))
98+
klog.Fatalf("%s", fmt.Sprintf("failed to bind on %s: %v", *address, err))
9799
}
98100
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ require (
1313
github.com/prometheus/common v0.37.0
1414
golang.org/x/sys v0.0.0-20220829200755-d48e67d00261
1515
k8s.io/api v0.25.0
16+
k8s.io/klog/v2 v2.70.1
1617
)
1718

1819
require (
@@ -38,7 +39,6 @@ require (
3839
gopkg.in/yaml.v2 v2.4.0 // indirect
3940
gopkg.in/yaml.v3 v3.0.1 // indirect
4041
k8s.io/apimachinery v0.25.0 // indirect
41-
k8s.io/klog/v2 v2.70.1 // indirect
4242
k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed // indirect
4343
sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect
4444
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect

manifests/kubernetes/deployment.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ spec:
6969
- 0.0.0.0:9102
7070
- -enable-gpu=true
7171
- -enable-cgroup-id=true
72+
- -v=1
7273
ports:
7374
- containerPort: 9102
7475
hostPort: 9102

pkg/attacher/bcc_attacher.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ import (
3131
"github.com/sustainable-computing-io/kepler/pkg/model"
3232

3333
bpf "github.com/iovisor/gobpf/bcc"
34+
35+
"k8s.io/klog/v2"
3436
)
3537

3638
type perfCounter struct {
@@ -81,7 +83,7 @@ func loadModule(objProg []byte, options []string) (*bpf.Module, error) {
8183
perfErr := openPerfEvent(t, counter.evType, counter.evConfig)
8284
if perfErr != nil {
8385
// some hypervisors don't expose perf counters
84-
fmt.Printf("failed to attach perf event %s: %v\n", arrayName, perfErr)
86+
klog.Infof("failed to attach perf event %s: %v\n", arrayName, perfErr)
8587
counter.enabled = false
8688
// if perf counters are not available, it is likely running on a VM
8789
model.SetVMCoeff()
@@ -106,12 +108,12 @@ func AttachBPFAssets() (*BpfModuleTables, error) {
106108
}
107109
m, err := loadModule(objProg, options)
108110
if err != nil {
109-
fmt.Printf("failed to attach perf module with options %v: %v\n", options, err)
111+
klog.Infof("failed to attach perf module with options %v: %v\n", options, err)
110112
options = []string{"-DNUM_CPUS=" + strconv.Itoa(runtime.NumCPU())}
111113
EnableCPUFreq = false
112114
m, err = loadModule(objProg, options)
113115
if err != nil {
114-
fmt.Printf("failed to attach perf module with options %v: %v\n", options, err)
116+
klog.Infof("failed to attach perf module with options %v: %v\n", options, err)
115117
// at this time, there is not much we can do with the eBPF module
116118
return nil, err
117119
}

pkg/bpfassets/perf_event_bindata.go

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/cgroup/slice_handler.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,11 @@ This file is a main file of cgroup module containing
2626
package cgroup
2727

2828
import (
29-
"log"
3029
"os"
3130
"path/filepath"
3231
"strings"
32+
33+
"k8s.io/klog/v2"
3334
)
3435

3536
const (
@@ -112,7 +113,7 @@ func InitSliceHandler() *SliceHandler {
112113
}
113114
}
114115
handler.Init()
115-
log.Printf("InitSliceHandler: %v", handler)
116+
klog.V(3).Infof("InitSliceHandler: %v", handler)
116117
return handler
117118
}
118119

pkg/collector/metrics.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import (
2222
"github.com/sustainable-computing-io/kepler/pkg/model"
2323
"github.com/sustainable-computing-io/kepler/pkg/podlister"
2424

25-
"log"
25+
"k8s.io/klog/v2"
2626
)
2727

2828
const (
@@ -59,9 +59,9 @@ func getUIntFeatures() []string {
5959
// kubelet metric
6060
metrics = append(metrics, availableKubeletMetrics...)
6161
metrics = append(metrics, iostatMetrics...)
62-
log.Printf("Available counter metrics: %v", availableCounters)
63-
log.Printf("Available cgroup metrics: %v", availableCgroupMetrics)
64-
log.Printf("Available kubelet metrics: %v", availableKubeletMetrics)
62+
klog.V(3).Infof("Available counter metrics: %v", availableCounters)
63+
klog.V(3).Infof("Available cgroup metrics: %v", availableCgroupMetrics)
64+
klog.V(3).Infof("Available kubelet metrics: %v", availableKubeletMetrics)
6565
return metrics
6666
}
6767

pkg/collector/node_energy.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"strconv"
2323

2424
"github.com/sustainable-computing-io/kepler/pkg/power/rapl/source"
25+
"k8s.io/klog/v2"
2526
)
2627

2728
var (
@@ -80,7 +81,6 @@ func (v *NodeEnergy) ResetCurr() {
8081
}
8182

8283
func (v *NodeEnergy) SetValues(sensorEnergy map[string]float64, pkgEnergy map[int]source.PackageEnergy, totalGPUDelta uint64, usage map[string]float64) {
83-
fmt.Printf("%v %v\n", sensorEnergy, pkgEnergy)
8484
for sensorID, energy := range sensorEnergy {
8585
v.SensorEnergy.AddStat(sensorID, uint64(energy))
8686
}
@@ -92,7 +92,7 @@ func (v *NodeEnergy) SetValues(sensorEnergy map[string]float64, pkgEnergy map[in
9292
v.EnergyInPkg.AddStat(key, energy.Pkg)
9393
}
9494
v.EnergyInGPU = totalGPUDelta
95-
fmt.Printf("node energy stat core %v dram %v uncore %v pkg %v gpu %v sensor %v\n", v.EnergyInCore, v.EnergyInDRAM, v.EnergyInUncore, v.EnergyInPkg, v.EnergyInGPU, v.SensorEnergy)
95+
klog.V(3).Infof("node energy stat core %v dram %v uncore %v pkg %v gpu %v sensor %v\n", v.EnergyInCore, v.EnergyInDRAM, v.EnergyInUncore, v.EnergyInPkg, v.EnergyInGPU, v.SensorEnergy)
9696
totalSensorDelta := v.SensorEnergy.Curr()
9797
totalPkgDelta := v.EnergyInPkg.Curr()
9898
if totalSensorDelta > (totalPkgDelta + totalGPUDelta) {

pkg/collector/pod_energy.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ package collector
1818

1919
import (
2020
"fmt"
21-
"log"
2221
"strconv"
2322

2423
"github.com/sustainable-computing-io/kepler/pkg/attacher"
24+
"k8s.io/klog/v2"
2525
)
2626

2727
type PodEnergy struct {
@@ -156,7 +156,7 @@ func (v *PodEnergy) extractUIntCurrAggr(metric string) (curr, aggr uint64) {
156156
return v.BytesWrite.Curr(), v.BytesWrite.Aggr()
157157
}
158158

159-
log.Printf("cannot extract: %s", metric)
159+
klog.V(4).Infof("cannot extract: %s", metric)
160160
return 0, 0
161161
}
162162

pkg/collector/reader.go

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ package collector
1919
import (
2020
"bytes"
2121
"encoding/binary"
22-
"fmt"
23-
"log"
2422
"math"
2523
"sync"
2624
"time"
@@ -34,6 +32,8 @@ import (
3432
"github.com/sustainable-computing-io/kepler/pkg/power/gpu"
3533
"github.com/sustainable-computing-io/kepler/pkg/power/rapl"
3634
"github.com/sustainable-computing-io/kepler/pkg/power/rapl/source"
35+
36+
"k8s.io/klog/v2"
3737
)
3838

3939
// #define CPU_VECTOR_SIZE 128
@@ -108,15 +108,14 @@ func (c *Collector) readBPFEvent() (pidPodName map[uint32]string, containerIDPod
108108
data := it.Leaf()
109109
err := binary.Read(bytes.NewBuffer(data), binary.LittleEndian, &ct)
110110
if err != nil {
111-
log.Printf("failed to decode received data: %v", err)
111+
klog.V(5).Infof("failed to decode received data: %v", err)
112112
continue
113113
}
114114
comm := (*C.char)(unsafe.Pointer(&ct.Command))
115-
fmt.Printf("pid %v cgroup %v cmd %v\n", ct.PID, ct.CGroupPID, C.GoString(comm))
116115
podName, err := podlister.GetPodName(ct.CGroupPID, ct.PID)
117116

118117
if err != nil {
119-
log.Printf("failed to resolve pod for cGroup ID %v: %v, set podName=%s", ct.CGroupPID, err, systemProcessName)
118+
klog.V(5).Infof("failed to resolve pod for cGroup ID %v: %v, set podName=%s", ct.CGroupPID, err, systemProcessName)
120119
podName = systemProcessName
121120
}
122121
if _, ok := podEnergy[podName]; !ok {
@@ -127,7 +126,7 @@ func (c *Collector) readBPFEvent() (pidPodName map[uint32]string, containerIDPod
127126
} else {
128127
podNamespace, err = podlister.GetPodNameSpace(ct.CGroupPID, ct.PID)
129128
if err != nil {
130-
log.Printf("failed to find namespace for cGroup ID %v: %v", ct.CGroupPID, err)
129+
klog.V(5).Infof("failed to find namespace for cGroup ID %v: %v", ct.CGroupPID, err)
131130
podNamespace = "unknown"
132131
}
133132
}
@@ -153,7 +152,7 @@ func (c *Collector) readBPFEvent() (pidPodName map[uint32]string, containerIDPod
153152
}
154153

155154
if err = podEnergy[podName].CPUTime.AddNewCurr(totalCPUTime); err != nil {
156-
log.Println(err)
155+
klog.V(5).Infoln(err)
157156
}
158157

159158
for _, counterKey := range availableCounters {
@@ -169,14 +168,14 @@ func (c *Collector) readBPFEvent() (pidPodName map[uint32]string, containerIDPod
169168
val = 0
170169
}
171170
if err = podEnergy[podName].CounterStats[counterKey].AddNewCurr(val); err != nil {
172-
log.Println(err)
171+
klog.V(5).Infoln(err)
173172
}
174173
}
175174

176175
podEnergy[podName].CurrProcesses++
177176
containerID, err := podlister.GetContainerID(ct.CGroupPID, ct.PID)
178177
if err != nil {
179-
log.Println(err)
178+
klog.V(5).Infoln(err)
180179
}
181180
// first-time found container (should not include non-container event)
182181
if _, found := containerIDPodName[containerID]; !found && podName != systemProcessName {
@@ -225,18 +224,18 @@ func (c *Collector) readCgroup(containerIDPodName map[string]string) {
225224
func (c *Collector) readKubelet() {
226225
if len(availableKubeletMetrics) == 2 {
227226
podCPU, podMem, _, _, _ := podlister.GetPodMetrics()
228-
log.Printf("Kubelet Read: %v, %v\n", podCPU, podMem)
227+
klog.V(5).Infof("Kubelet Read: %v, %v\n", podCPU, podMem)
229228
for podName, v := range podEnergy {
230229
k := v.Namespace + "/" + podName
231230
readCPU := uint64(podCPU[k])
232231
readMem := uint64(podMem[k])
233232
cpuMetricName := availableKubeletMetrics[0]
234233
memMetricName := availableKubeletMetrics[1]
235234
if err := v.KubeletStats[cpuMetricName].SetNewAggr(readCPU); err != nil {
236-
log.Println(err)
235+
klog.V(5).Infoln(err)
237236
}
238237
if err := v.KubeletStats[memMetricName].SetNewAggr(readMem); err != nil {
239-
log.Println(err)
238+
klog.V(5).Infoln(err)
240239
}
241240
}
242241
}
@@ -321,38 +320,38 @@ func (c *Collector) reader() {
321320
// set pod energy
322321
for i, podName := range podNameList {
323322
if err := podEnergy[podName].EnergyInCore.AddNewCurr(podCore[i]); err != nil {
324-
log.Println(err)
323+
klog.V(5).Infoln(err)
325324
}
326325
if err := podEnergy[podName].EnergyInDRAM.AddNewCurr(podDRAM[i]); err != nil {
327-
log.Println(err)
326+
klog.V(5).Infoln(err)
328327
}
329328
if err := podEnergy[podName].EnergyInUncore.AddNewCurr(podUncore[i]); err != nil {
330-
log.Println(err)
329+
klog.V(5).Infoln(err)
331330
}
332331
if err := podEnergy[podName].EnergyInPkg.AddNewCurr(podPkg[i]); err != nil {
333-
log.Println(err)
332+
klog.V(5).Infoln(err)
334333
}
335334
podGPU := uint64(math.Ceil(podGPUDelta[podName]))
336335
if err := podEnergy[podName].EnergyInGPU.AddNewCurr(podGPU); err != nil {
337-
log.Println(err)
336+
klog.V(5).Infoln(err)
338337
}
339338
if err := podEnergy[podName].EnergyInOther.AddNewCurr(podOther); err != nil {
340-
log.Println(err)
339+
klog.V(5).Infoln(err)
341340
}
342341
}
343342
if len(podDynamicPower) != 0 {
344343
for i, podName := range podNameList {
345344
power := uint64(podDynamicPower[i])
346345
if err := podEnergy[podName].DynEnergy.AddNewCurr(power); err != nil {
347-
log.Println(err)
346+
klog.V(5).Infoln(err)
348347
}
349348
}
350-
fmt.Printf("Get pod powers: %v \n %v from %v (%d x %d)\n", podMetricValues[0:2], podDynamicPower, metricNames, len(podMetricValues), len(podMetricValues[0]))
349+
klog.V(3).Infof("Get pod powers: %v \n %v from %v (%d x %d)\n", podMetricValues[0:2], podDynamicPower, metricNames, len(podMetricValues), len(podMetricValues[0]))
351350
}
352351
for _, v := range podEnergy {
353-
fmt.Println(v)
352+
klog.V(3).Infoln(v)
354353
}
355-
fmt.Println(nodeEnergy)
354+
klog.V(3).Infoln(nodeEnergy)
356355
lock.Unlock()
357356
}
358357
}()

0 commit comments

Comments
 (0)