rbd: rbd-nbd logging the ceph-CSI way

- One logfile per device/volume
- Add ability to customize the logdir, default: /var/log/ceph

Note: if user customizes the hostpath to something else other than default
/var/log/ceph, then it is his responsibility to update the `cephLogDir`
in storageclass to reflect the same with daemon:

```
cephLogDir: "/var/log/mynewpath"
```

Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
This commit is contained in:
Prasanna Kumar Kalever 2021-08-18 12:51:23 +05:30 committed by mergify[bot]
parent 0be7024726
commit 682b3a980b
4 changed files with 30 additions and 0 deletions

View File

@ -69,6 +69,12 @@ parameters:
# on supported nodes
# mounter: rbd-nbd
# (optional) ceph client log location, eg: rbd-nbd
# By default host-path /var/log/ceph of node is bind-mounted into
# csi-rbdplugin pod at /var/log/ceph mount path. See docs/rbd-nbd.md
# for available configuration options.
# cephLogDir: /var/log/ceph
# (optional) Prefix to use for naming RBD images.
# If omitted, defaults to "csi-vol-".
# volumeNamePrefix: "foo-bar-"

View File

@ -274,6 +274,7 @@ func (ns *NodeServer) NodeStageVolume(
volOptions.MapOptions = req.GetVolumeContext()["mapOptions"]
volOptions.UnmapOptions = req.GetVolumeContext()["unmapOptions"]
volOptions.Mounter = req.GetVolumeContext()["mounter"]
volOptions.LogDir = req.GetVolumeContext()["cephLogDir"]
err = volOptions.Connect(cr)
if err != nil {

View File

@ -296,6 +296,14 @@ func createPath(ctx context.Context, volOpt *rbdVolume, device string, cr *util.
util.WarningLog(ctx, "failed to detect if image %q is thick-provisioned: %v", volOpt, err)
}
if isNbd {
if volOpt.LogDir == "" {
volOpt.LogDir = defaultLogDir
}
mapArgs = append(mapArgs, "--log-file",
getCephClientLogFileName(volOpt.VolID, volOpt.LogDir, "rbd-nbd"))
}
cli := rbd
if device != "" {
// TODO: use rbd cli for attach/detach in the future

View File

@ -50,6 +50,7 @@ const (
rbdImageWatcherSteps = 10
rbdDefaultMounter = "rbd"
rbdNbdMounter = "rbd-nbd"
defaultLogDir = "/var/log/ceph"
// Output strings returned during invocation of "ceph rbd task add remove <imagespec>" when
// command is not supported by ceph manager. Used to check errors and recover when the command
@ -136,6 +137,7 @@ type rbdVolume struct {
ReservedID string
MapOptions string
UnmapOptions string
LogDir string
VolName string `json:"volName"`
MonValueFromSecret string `json:"monValueFromSecret"`
VolSize int64 `json:"volSize"`
@ -2002,3 +2004,16 @@ func (ri *rbdImage) addSnapshotScheduling(
return nil
}
// getCephClientLogFileName compiles the complete log file path based on inputs.
func getCephClientLogFileName(id, logDir, prefix string) string {
if prefix == "" {
prefix = "ceph"
}
if logDir == "" {
logDir = defaultLogDir
}
return fmt.Sprintf("%s/%s-%s.log", logDir, prefix, id)
}