Skip to content

Commit

Permalink
pod-metrics: add shared folder to report metrics
Browse files Browse the repository at this point in the history
At the moment, pod export their metrics using a file in a shared
directory.
To support that, virt-launcher needs to setup that directory.

Much like kubevirt is already doing, we setup the directory in tmpfs.

This patch laid the foundations; future work will enable more features
like automated cleanup.

Signed-off-by: Francesco Romani <fromani@redhat.com>
  • Loading branch information
ffromani committed Sep 5, 2018
1 parent 13ea5ac commit 3292207
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 1 deletion.
61 changes: 61 additions & 0 deletions pkg/pod-metrics/metrics.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/*
* This file is part of the kubevirt project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright 2017-2018 Red Hat, Inc.
*
*/

package metrics

import (
"path/filepath"

"kubevirt.io/kubevirt/pkg/api/v1"
diskutils "kubevirt.io/kubevirt/pkg/ephemeral-disk-utils"
"kubevirt.io/kubevirt/pkg/log"
"kubevirt.io/kubevirt/pkg/precond"
)

func MetricsFileDirectory(baseDir string) string {
return filepath.Join(baseDir, "metrics-files")
}

func MetricsFileFromNamespaceName(baseDir string, namespace string, name string) string {
metricsFile := namespace + "_" + name
return filepath.Join(baseDir, "metrics-files", metricsFile)
}

func MetricsFileRemove(baseDir string, vmi *v1.VirtualMachineInstance) error {
namespace := precond.MustNotBeEmpty(vmi.GetObjectMeta().GetNamespace())
domain := precond.MustNotBeEmpty(vmi.GetObjectMeta().GetName())

file := MetricsFileFromNamespaceName(baseDir, namespace, domain)

return diskutils.RemoveFile(file)
}

func MetricsFileExists(baseDir string, vmi *v1.VirtualMachineInstance) (bool, error) {
namespace := precond.MustNotBeEmpty(vmi.GetObjectMeta().GetNamespace())
domain := precond.MustNotBeEmpty(vmi.GetObjectMeta().GetName())

filePath := MetricsFileFromNamespaceName(baseDir, namespace, domain)
exists, err := diskutils.FileExists(filePath)
if err != nil {
log.Log.Reason(err).Errorf("Error encountered while attempting to verify if metrics file at path %s exists.", filePath)

return false, err
}
return exists, nil
}
6 changes: 5 additions & 1 deletion pkg/virt-launcher/monitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import (
"kubevirt.io/kubevirt/pkg/api/v1"
diskutils "kubevirt.io/kubevirt/pkg/ephemeral-disk-utils"
"kubevirt.io/kubevirt/pkg/log"
metrics "kubevirt.io/kubevirt/pkg/pod-metrics"
"kubevirt.io/kubevirt/pkg/precond"
cmdclient "kubevirt.io/kubevirt/pkg/virt-handler/cmd-client"
watchdog "kubevirt.io/kubevirt/pkg/watchdog"
Expand Down Expand Up @@ -155,7 +156,6 @@ func InitializeSharedDirectories(baseDir string) error {
if err != nil {
return err
}

err = os.MkdirAll(GracefulShutdownTriggerDir(baseDir), 0755)
if err != nil {
return err
Expand All @@ -164,6 +164,10 @@ func InitializeSharedDirectories(baseDir string) error {
if err != nil {
return err
}
err = os.MkdirAll(metrics.MetricsFileDirectory(baseDir), 0755)
if err != nil {
return err
}
return nil
}

Expand Down

0 comments on commit 3292207

Please sign in to comment.