feat: adding log forwarding features
This commit is contained in:
@@ -18,12 +18,14 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"os/signal"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/shuffle/shuffle-shared"
|
"github.com/shuffle/shuffle-shared"
|
||||||
@@ -2092,6 +2094,66 @@ func cleanup() {
|
|||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func StartAgent() {
|
||||||
|
log.Printf("[INFO] Starting Orborus agent mode")
|
||||||
|
|
||||||
|
auditLogEnabled := os.Getenv("SHUFFLE_AUDIT_LOG_ENABLED") == "true"
|
||||||
|
|
||||||
|
if auditLogEnabled {
|
||||||
|
log.Printf("[INFO] Audit log monitoring is enabled")
|
||||||
|
|
||||||
|
// Initialize telemetry configuration
|
||||||
|
telemetryConfig := shuffle.TelemetryConfig{
|
||||||
|
Enabled: true,
|
||||||
|
Modes: []string{"audit_log"},
|
||||||
|
BufferSize: 1000,
|
||||||
|
FlushInterval: 10 * time.Second,
|
||||||
|
}
|
||||||
|
|
||||||
|
if excludePatterns := os.Getenv("SHUFFLE_AUDIT_LOG_EXCLUDE"); excludePatterns != "" {
|
||||||
|
patterns := strings.Split(excludePatterns, ",")
|
||||||
|
telemetryConfig.Filters = append(telemetryConfig.Filters, shuffle.TelemetryFilter{
|
||||||
|
Type: "message",
|
||||||
|
Exclude: patterns,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if includePatterns := os.Getenv("SHUFFLE_AUDIT_LOG_INCLUDE"); includePatterns != "" {
|
||||||
|
patterns := strings.Split(includePatterns, ",")
|
||||||
|
telemetryConfig.Filters = append(telemetryConfig.Filters, shuffle.TelemetryFilter{
|
||||||
|
Type: "message",
|
||||||
|
Include: patterns,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
collector, err := shuffle.NewAuditLogCollector(telemetryConfig)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("[ERROR] Failed to create audit log collector: %v", err)
|
||||||
|
} else {
|
||||||
|
ctx := context.Background()
|
||||||
|
if err := collector.LogCollectorStart(ctx); err != nil {
|
||||||
|
log.Printf("[ERROR] Failed to start audit log collector: %v", err)
|
||||||
|
} else {
|
||||||
|
log.Printf("[INFO] Audit log collector started successfully")
|
||||||
|
|
||||||
|
sigChan := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
<-sigChan
|
||||||
|
log.Printf("[INFO] Received shutdown signal, stopping audit log collector...")
|
||||||
|
collector.Stop()
|
||||||
|
|
||||||
|
os.Exit(0)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.Printf("[INFO] Audit log monitoring is disabled")
|
||||||
|
}
|
||||||
|
select {}
|
||||||
|
}
|
||||||
|
|
||||||
// Initial loop etc
|
// Initial loop etc
|
||||||
func main() {
|
func main() {
|
||||||
// Get arch. amd64 or arm64
|
// Get arch. amd64 or arm64
|
||||||
@@ -2100,6 +2162,13 @@ func main() {
|
|||||||
//signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)
|
//signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)
|
||||||
//defer cleanup()
|
//defer cleanup()
|
||||||
|
|
||||||
|
agentMode := os.Getenv("SHUFFLE_AGENT_MODE")
|
||||||
|
if agentMode == "true" {
|
||||||
|
log.Printf("[INFO] Running in agent mode. Starting the agent.")
|
||||||
|
StartAgent()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Block until a signal is received
|
// Block until a signal is received
|
||||||
if shuffle.IsRunningInCluster() {
|
if shuffle.IsRunningInCluster() {
|
||||||
log.Printf("[INFO] Running inside k8s cluster")
|
log.Printf("[INFO] Running inside k8s cluster")
|
||||||
|
|||||||
Reference in New Issue
Block a user