Documentation
¶
Index ¶
- Constants
- type BackupHostMetrics
- type BackupMetrics
- type BackupOptions
- type BackupOutput
- type BackupSessionMetrics
- type BackupSummary
- type BackupTargetMetrics
- type Command
- type DumpOptions
- type FileMetrics
- type ForgetGroup
- type MetricsOptions
- func (metricOpt *MetricsOptions) SendBackupHostMetrics(config *rest.Config, invoker apis.Invoker, targetRef api_v1beta1.TargetRef, ...) error
- func (metricOpt *MetricsOptions) SendBackupSessionMetrics(invoker apis.Invoker, status api_v1beta1.BackupSessionStatus) error
- func (metricOpt *MetricsOptions) SendBackupTargetMetrics(config *rest.Config, invoker apis.Invoker, targetRef api_v1beta1.TargetRef, ...) error
- func (metricOpt *MetricsOptions) SendRepositoryMetrics(config *rest.Config, invoker apis.Invoker, repoStats RepositoryStats) error
- func (metricOpt *MetricsOptions) SendRestoreHostMetrics(config *rest.Config, invoker apis.RestoreInvoker, ...) error
- func (metricOpt *MetricsOptions) SendRestoreSessionMetrics(invoker apis.RestoreInvoker) error
- func (metricOpt *MetricsOptions) SendRestoreTargetMetrics(config *rest.Config, invoker apis.RestoreInvoker, ...) error
- type RepositoryMetrics
- type RepositoryStats
- type ResticWrapper
- func (w *ResticWrapper) ApplyRetentionPolicies(retentionPolicy api_v1alpha1.RetentionPolicy) (*RepositoryStats, error)
- func (w *ResticWrapper) Copy() *ResticWrapper
- func (w *ResticWrapper) DeleteSnapshots(snapshotIDs []string) ([]byte, error)
- func (w *ResticWrapper) Dump(dumpOptions DumpOptions, targetRef api_v1beta1.TargetRef) (*RestoreOutput, error)
- func (w *ResticWrapper) DumpEnv(path string, dumpedFile string) error
- func (w *ResticWrapper) GetRepo() string
- func (w *ResticWrapper) GetSnapshotSize(snapshotID string) (uint64, error)
- func (w *ResticWrapper) HideCMD()
- func (w *ResticWrapper) InitializeRepository() error
- func (w *ResticWrapper) ListSnapshots(snapshotIDs []string) ([]Snapshot, error)
- func (w *ResticWrapper) ParallelDump(dumpOptions []DumpOptions, targetRef api_v1beta1.TargetRef, maxConcurrency int) (*RestoreOutput, error)
- func (w *ResticWrapper) RepositoryAlreadyExist() bool
- func (w *ResticWrapper) RunBackup(backupOption BackupOptions, targetRef api_v1beta1.TargetRef) (*BackupOutput, error)
- func (w *ResticWrapper) RunParallelBackup(backupOptions []BackupOptions, targetRef api_v1beta1.TargetRef, ...) (*BackupOutput, error)
- func (w *ResticWrapper) RunParallelRestore(restoreOptions []RestoreOptions, targetRef api_v1beta1.TargetRef, ...) (*RestoreOutput, error)
- func (w *ResticWrapper) RunRestore(restoreOptions RestoreOptions, targetRef api_v1beta1.TargetRef) (*RestoreOutput, error)
- func (w *ResticWrapper) SetEnv(key, value string)
- func (w *ResticWrapper) UnlockRepository() error
- func (w *ResticWrapper) VerifyRepositoryIntegrity() (*RepositoryStats, error)
- type RestoreHostMetrics
- type RestoreMetrics
- type RestoreOptions
- type RestoreOutput
- type RestoreSessionMetrics
- type RestoreTargetMetrics
- type SetupOptions
- type Snapshot
- type StatsContainer
Constants ¶
const ( DefaultOutputFileName = "output.json" DefaultScratchDir = "/tmp" DefaultHost = "host-0" )
const ( MetricsLabelDriver = "driver" MetricsLabelKind = "kind" MetricsLabelAppGroup = "group" MetricsLabelName = "name" MetricsLabelNamespace = "namespace" MetricsLabelRepository = "repository" MetricsLabelBackend = "backend" MetricsLabelBucket = "bucket" MetricsLabelPrefix = "prefix" MetricLabelInvokerKind = "invoker_kind" MetricLabelInvokerName = "invoker_name" MetricLabelHostname = "hostname" )
const ( RESTIC_REPOSITORY = "RESTIC_REPOSITORY" RESTIC_PASSWORD = "RESTIC_PASSWORD" TMPDIR = "TMPDIR" AWS_ACCESS_KEY_ID = "AWS_ACCESS_KEY_ID" AWS_SECRET_ACCESS_KEY = "AWS_SECRET_ACCESS_KEY" AWS_DEFAULT_REGION = "AWS_DEFAULT_REGION" GOOGLE_PROJECT_ID = "GOOGLE_PROJECT_ID" GOOGLE_SERVICE_ACCOUNT_JSON_KEY = "GOOGLE_SERVICE_ACCOUNT_JSON_KEY" GOOGLE_APPLICATION_CREDENTIALS = "GOOGLE_APPLICATION_CREDENTIALS" AZURE_ACCOUNT_NAME = "AZURE_ACCOUNT_NAME" AZURE_ACCOUNT_KEY = "AZURE_ACCOUNT_KEY" REST_SERVER_USERNAME = "REST_SERVER_USERNAME" REST_SERVER_PASSWORD = "REST_SERVER_PASSWORD" B2_ACCOUNT_ID = "B2_ACCOUNT_ID" B2_ACCOUNT_KEY = "B2_ACCOUNT_KEY" // For keystone v1 authentication ST_AUTH = "ST_AUTH" ST_USER = "ST_USER" ST_KEY = "ST_KEY" // For keystone v2 authentication (some variables are optional) OS_AUTH_URL = "OS_AUTH_URL" OS_REGION_NAME = "OS_REGION_NAME" OS_USERNAME = "OS_USERNAME" OS_PASSWORD = "OS_PASSWORD" OS_TENANT_ID = "OS_TENANT_ID" OS_TENANT_NAME = "OS_TENANT_NAME" // For keystone v3 authentication (some variables are optional) OS_USER_DOMAIN_NAME = "OS_USER_DOMAIN_NAME" OS_PROJECT_NAME = "OS_PROJECT_NAME" OS_PROJECT_DOMAIN_NAME = "OS_PROJECT_DOMAIN_NAME" // For keystone v3 application credential authentication (application credential id) OS_APPLICATION_CREDENTIAL_ID = "OS_APPLICATION_CREDENTIAL_ID" OS_APPLICATION_CREDENTIAL_SECRET = "OS_APPLICATION_CREDENTIAL_SECRET" // For keystone v3 application credential authentication (application credential name) OS_APPLICATION_CREDENTIAL_NAME = "OS_APPLICATION_CREDENTIAL_NAME" // For authentication based on tokens OS_STORAGE_URL = "OS_STORAGE_URL" OS_AUTH_TOKEN = "OS_AUTH_TOKEN" // For using certs in Minio server or REST server CA_CERT_DATA = "CA_CERT_DATA" )
const FileModeRWXAll = 0777
const (
ResticCMD = "/bin/restic_0.9.6"
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BackupHostMetrics ¶
type BackupHostMetrics struct { // BackupSuccess indicates whether the backup for a host succeeded or not BackupSuccess prometheus.Gauge // BackupDuration indicates total time taken to complete the backup process for a host BackupDuration prometheus.Gauge // DataSize indicates total size of the target data to backup for a host (in bytes) DataSize prometheus.Gauge // DataUploaded indicates the amount of data uploaded to the repository for a host (in bytes) DataUploaded prometheus.Gauge // DataProcessingTime indicates total time taken to backup the target data for a host DataProcessingTime prometheus.Gauge // FileMetrics shows information of backup files FileMetrics *FileMetrics }
BackupHostMetrics defines Prometheus metrics for individual hosts backup
type BackupMetrics ¶
type BackupMetrics struct { // BackupSessionMetrics shows metrics related to entire backup session BackupSessionMetrics *BackupSessionMetrics // BackupTargetMetrics shows metrics related to a target BackupTargetMetrics *BackupTargetMetrics // BackupHostMetrics shows backup metrics for individual hosts BackupHostMetrics *BackupHostMetrics }
BackupMetrics defines prometheus metrics for backup process
type BackupOptions ¶
type BackupOptions struct { Host string BackupPaths []string StdinPipeCommand Command StdinFileName string // default "stdin" RetentionPolicy v1alpha1.RetentionPolicy Exclude []string }
BackupOptions specifies backup information if StdinPipeCommand is specified, BackupPaths will not be used
type BackupOutput ¶
type BackupOutput struct { // BackupTargetStatus shows the status of a backup target BackupTargetStatus api_v1beta1.BackupTargetStatus `json:"targetStatus,omitempty"` }
func ReadBackupOutput ¶
func ReadBackupOutput(filename string) (*BackupOutput, error)
func (*BackupOutput) WriteOutput ¶
func (out *BackupOutput) WriteOutput(fileName string) error
WriteOutput write output of backup process into output.json file in the directory specified by outputDir parameter
type BackupSessionMetrics ¶
type BackupSessionMetrics struct { // SessionSuccess indicates whether the entire backup session was succeeded or not SessionSuccess prometheus.Gauge // SessionDuration indicates total time taken to complete the entire backup session SessionDuration prometheus.Gauge // TargetCount indicates the total number of targets that was backed up in this backup session TargetCount prometheus.Gauge // LastSuccessTime indicates the time(in unix epoch) when the last BackupSession was succeeded LastSuccessTime prometheus.Gauge }
BackupSessionMetrics defines metrics for entire backup session
type BackupSummary ¶
type BackupSummary struct { MessageType string `json:"message_type"` // "summary" FilesNew *int64 `json:"files_new"` FilesChanged *int64 `json:"files_changed"` FilesUnmodified *int64 `json:"files_unmodified"` DataAdded uint64 `json:"data_added"` TotalFilesProcessed *int64 `json:"total_files_processed"` TotalBytesProcessed uint64 `json:"total_bytes_processed"` TotalDuration float64 `json:"total_duration"` // in seconds SnapshotID string `json:"snapshot_id"` }
type BackupTargetMetrics ¶
type BackupTargetMetrics struct { // TargetBackupSucceeded indicates whether the backup for a target has succeeded or not TargetBackupSucceeded prometheus.Gauge // HostCount indicates the total number of hosts that was backed up for this target HostCount prometheus.Gauge // LastSuccessTime indicates the time (in unix epoch) when the last backup was successful for this target LastSuccessTime prometheus.Gauge }
BackupTargetMetrics defines metrics related to a target
type DumpOptions ¶
type FileMetrics ¶
type FileMetrics struct { // TotalFiles shows total number of files that has been backed up for a host TotalFiles prometheus.Gauge // NewFiles shows total number of new files that has been created since last backup for a host NewFiles prometheus.Gauge // ModifiedFiles shows total number of files that has been modified since last backup for a host ModifiedFiles prometheus.Gauge // UnmodifiedFiles shows total number of files that has not been changed since last backup for a host UnmodifiedFiles prometheus.Gauge }
FileMetrics defines Prometheus metrics for target files of a backup process for a host
type ForgetGroup ¶
type ForgetGroup struct { Keep []json.RawMessage `json:"keep"` Remove []json.RawMessage `json:"remove"` }
type MetricsOptions ¶
type MetricsOptions struct { Enabled bool PushgatewayURL string MetricFileDir string Labels []string JobName string }
func (*MetricsOptions) SendBackupHostMetrics ¶
func (metricOpt *MetricsOptions) SendBackupHostMetrics(config *rest.Config, invoker apis.Invoker, targetRef api_v1beta1.TargetRef, backupOutput *BackupOutput) error
SendBackupSessionMetrics send backup metrics for individual hosts to the Pushgateway
func (*MetricsOptions) SendBackupSessionMetrics ¶
func (metricOpt *MetricsOptions) SendBackupSessionMetrics(invoker apis.Invoker, status api_v1beta1.BackupSessionStatus) error
SendBackupSessionMetrics send backup session related metrics to the Pushgateway
func (*MetricsOptions) SendBackupTargetMetrics ¶
func (metricOpt *MetricsOptions) SendBackupTargetMetrics(config *rest.Config, invoker apis.Invoker, targetRef api_v1beta1.TargetRef, status api_v1beta1.BackupSessionStatus) error
SendBackupSessionMetrics send backup session metrics to the Pushgateway
func (*MetricsOptions) SendRepositoryMetrics ¶
func (metricOpt *MetricsOptions) SendRepositoryMetrics(config *rest.Config, invoker apis.Invoker, repoStats RepositoryStats) error
SendRepositoryMetrics send backup session related metrics to the Pushgateway
func (*MetricsOptions) SendRestoreHostMetrics ¶
func (metricOpt *MetricsOptions) SendRestoreHostMetrics(config *rest.Config, invoker apis.RestoreInvoker, targetRef api_v1beta1.TargetRef, restoreOutput *RestoreOutput) error
SendRestoreHostMetrics send restore metrics for individual hosts to the Pushgateway
func (*MetricsOptions) SendRestoreSessionMetrics ¶
func (metricOpt *MetricsOptions) SendRestoreSessionMetrics(invoker apis.RestoreInvoker) error
SendRestoreSessionMetrics send restore session related metrics to the Pushgateway
func (*MetricsOptions) SendRestoreTargetMetrics ¶
func (metricOpt *MetricsOptions) SendRestoreTargetMetrics(config *rest.Config, invoker apis.RestoreInvoker, targetRef api_v1beta1.TargetRef) error
SendRestoreTargetMetrics send restore target related metrics to the Pushgateway
type RepositoryMetrics ¶
type RepositoryMetrics struct { // RepoIntegrity shows result of repository integrity check after last backup RepoIntegrity prometheus.Gauge // RepoSize show size of repository after last backup RepoSize prometheus.Gauge // SnapshotCount shows number of snapshots stored in the repository SnapshotCount prometheus.Gauge // SnapshotsRemovedOnLastCleanup shows number of old snapshots cleaned up according to retention policy on last backup session SnapshotsRemovedOnLastCleanup prometheus.Gauge }
RepositoryMetrics defines Prometheus metrics for Repository state after each backup
type RepositoryStats ¶
type RepositoryStats struct { // Integrity shows result of repository integrity check after last backup Integrity *bool `json:"integrity,omitempty"` // Size show size of repository after last backup Size string `json:"size,omitempty"` // SnapshotCount shows number of snapshots stored in the repository SnapshotCount int64 `json:"snapshotCount,omitempty"` // SnapshotsRemovedOnLastCleanup shows number of old snapshots cleaned up according to retention policy on last backup session SnapshotsRemovedOnLastCleanup int64 `json:"snapshotsRemovedOnLastCleanup,omitempty"` }
type ResticWrapper ¶
type ResticWrapper struct {
// contains filtered or unexported fields
}
func NewResticWrapper ¶
func NewResticWrapper(options SetupOptions) (*ResticWrapper, error)
func (*ResticWrapper) ApplyRetentionPolicies ¶
func (w *ResticWrapper) ApplyRetentionPolicies(retentionPolicy api_v1alpha1.RetentionPolicy) (*RepositoryStats, error)
func (*ResticWrapper) Copy ¶
func (w *ResticWrapper) Copy() *ResticWrapper
Copy function copy input ResticWrapper and returns a new wrapper with copy of its content.
func (*ResticWrapper) DeleteSnapshots ¶
func (w *ResticWrapper) DeleteSnapshots(snapshotIDs []string) ([]byte, error)
func (*ResticWrapper) Dump ¶
func (w *ResticWrapper) Dump(dumpOptions DumpOptions, targetRef api_v1beta1.TargetRef) (*RestoreOutput, error)
Dump run restore process for a single host and output the restored files in stdout.
func (*ResticWrapper) DumpEnv ¶
func (w *ResticWrapper) DumpEnv(path string, dumpedFile string) error
func (*ResticWrapper) GetRepo ¶
func (w *ResticWrapper) GetRepo() string
func (*ResticWrapper) GetSnapshotSize ¶
func (w *ResticWrapper) GetSnapshotSize(snapshotID string) (uint64, error)
GetSnapshotSize returns size of a snapshot in bytes
func (*ResticWrapper) HideCMD ¶
func (w *ResticWrapper) HideCMD()
func (*ResticWrapper) InitializeRepository ¶
func (w *ResticWrapper) InitializeRepository() error
func (*ResticWrapper) ListSnapshots ¶
func (w *ResticWrapper) ListSnapshots(snapshotIDs []string) ([]Snapshot, error)
func (*ResticWrapper) ParallelDump ¶
func (w *ResticWrapper) ParallelDump(dumpOptions []DumpOptions, targetRef api_v1beta1.TargetRef, maxConcurrency int) (*RestoreOutput, error)
ParallelDump run dump for multiple hosts concurrently using go routine. You can control maximum number of parallel restore process using maxConcurrency parameter.
func (*ResticWrapper) RepositoryAlreadyExist ¶
func (w *ResticWrapper) RepositoryAlreadyExist() bool
func (*ResticWrapper) RunBackup ¶
func (w *ResticWrapper) RunBackup(backupOption BackupOptions, targetRef api_v1beta1.TargetRef) (*BackupOutput, error)
RunBackup takes backup, cleanup old snapshots, check repository integrity etc. It extract valuable information from respective restic command it runs and return them for further use.
func (*ResticWrapper) RunParallelBackup ¶
func (w *ResticWrapper) RunParallelBackup(backupOptions []BackupOptions, targetRef api_v1beta1.TargetRef, maxConcurrency int) (*BackupOutput, error)
RunParallelBackup runs multiple backup in parallel. Host must be different for each backup.
func (*ResticWrapper) RunParallelRestore ¶
func (w *ResticWrapper) RunParallelRestore(restoreOptions []RestoreOptions, targetRef api_v1beta1.TargetRef, maxConcurrency int) (*RestoreOutput, error)
RunParallelRestore run restore process for multiple hosts in parallel using go routine. You can control maximum number of parallel restore using maxConcurrency parameter.
func (*ResticWrapper) RunRestore ¶
func (w *ResticWrapper) RunRestore(restoreOptions RestoreOptions, targetRef api_v1beta1.TargetRef) (*RestoreOutput, error)
RunRestore run restore process for a single host.
func (*ResticWrapper) SetEnv ¶
func (w *ResticWrapper) SetEnv(key, value string)
func (*ResticWrapper) UnlockRepository ¶
func (w *ResticWrapper) UnlockRepository() error
func (*ResticWrapper) VerifyRepositoryIntegrity ¶
func (w *ResticWrapper) VerifyRepositoryIntegrity() (*RepositoryStats, error)
type RestoreHostMetrics ¶
type RestoreHostMetrics struct { // RestoreSuccess indicates whether restore was succeeded or not for a host RestoreSuccess prometheus.Gauge // RestoreDuration indicates the time taken to complete the restore process for a host RestoreDuration prometheus.Gauge }
RestoreHostMetrics defines restore metrics for the individual hosts
type RestoreMetrics ¶
type RestoreMetrics struct { // RestoreSessionMetrics shows metrics related to entire restore session RestoreSessionMetrics *RestoreSessionMetrics // RestoreTargetMetrics shows metrics related to a restore target RestoreTargetMetrics *RestoreTargetMetrics // RestoreHostMetrics shows metrics related to the individual host of a restore target RestoreHostMetrics *RestoreHostMetrics }
RestoreMetrics defines metrics for the restore process
type RestoreOptions ¶
type RestoreOptions struct { Host string SourceHost string RestorePaths []string Snapshots []string // when Snapshots are specified SourceHost and RestorePaths will not be used Destination string // destination path where snapshot will be restored, used in cli Exclude []string Include []string }
RestoreOptions specifies restore information
type RestoreOutput ¶
type RestoreOutput struct { // RestoreTargetStatus shows the status of a restore target RestoreTargetStatus api_v1beta1.RestoreMemberStatus `json:"targetStatus,omitempty"` }
func ReadRestoreOutput ¶
func ReadRestoreOutput(filename string) (*RestoreOutput, error)
func (*RestoreOutput) WriteOutput ¶
func (out *RestoreOutput) WriteOutput(fileName string) error
type RestoreSessionMetrics ¶
type RestoreSessionMetrics struct { // SessionSuccess indicates whether the restore session succeeded or not SessionSuccess prometheus.Gauge // SessionDuration indicates the total time taken to complete the entire restore session SessionDuration prometheus.Gauge // TargetCount indicates the number of targets that was restored in this restore session TargetCount prometheus.Gauge }
RestoreSessionMetrics defines metrics related to entire restore session
type RestoreTargetMetrics ¶
type RestoreTargetMetrics struct { // TargetRestoreSucceeded indicates whether the restore for a target has succeeded or not TargetRestoreSucceeded prometheus.Gauge // HostCount indicates the total number of hosts that was restored up for a restore target HostCount prometheus.Gauge }
RestoreTargetMetrics defines metrics related to a restore target
type SetupOptions ¶
type StatsContainer ¶
type StatsContainer struct {
TotalSize uint64 `json:"total_size"`
}