resource

package
v0.0.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 27, 2025 License: AGPL-3.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PROCESS_QUERY_INFORMATION = 0x0400
	PROCESS_VM_READ           = 0x0010
)

Windows API 常量

Variables

This section is empty.

Functions

func ExampleBasicUsage

func ExampleBasicUsage()

ExampleBasicUsage 展示资源追踪器的基本用法

func ExampleMultipleResources

func ExampleMultipleResources()

ExampleMultipleResources 展示管理多种资源的用法

func ExampleResourceLeakDetection

func ExampleResourceLeakDetection()

ExampleResourceLeakDetection 展示资源泄漏检测的用法

func ExampleWithContext

func ExampleWithContext()

ExampleWithContext 展示与上下文关联的资源追踪器用法

func GetProcessChildren

func GetProcessChildren(pid int32) ([]int32, error)

GetProcessChildren 获取进程的子进程

func GetProcessNumFDs

func GetProcessNumFDs(pid int32) (int32, error)

GetProcessNumFDs 获取进程的文件描述符数量

func UpdateProcessInfo

func UpdateProcessInfo(proc *process.Process, usage *ResourceUsage) error

UpdateProcessInfo 更新进程信息 这是一个适配函数,用于在Windows平台上处理特定的进程信息更新

Types

type BaseResource

type BaseResource struct {
	// contains filtered or unexported fields
}

BaseResource 提供Resource接口的基本实现

func NewBaseResource

func NewBaseResource(id, resourceType string, closer func() error) *BaseResource

NewBaseResource 创建一个新的基础资源

func (*BaseResource) Close

func (r *BaseResource) Close() error

Close 关闭资源

func (*BaseResource) CreatedAt

func (r *BaseResource) CreatedAt() time.Time

CreatedAt 返回资源的创建时间

func (*BaseResource) ID

func (r *BaseResource) ID() string

ID 返回资源的唯一标识符

func (*BaseResource) LastUsedAt

func (r *BaseResource) LastUsedAt() time.Time

LastUsedAt 返回资源的最后使用时间

func (*BaseResource) Type

func (r *BaseResource) Type() string

Type 返回资源的类型

func (*BaseResource) UpdateLastUsed

func (r *BaseResource) UpdateLastUsed()

UpdateLastUsed 更新资源的最后使用时间

type ContextResourceTracker

type ContextResourceTracker struct {
	*ResourceTracker
	// contains filtered or unexported fields
}

ContextResourceTracker 是一个与上下文关联的资源追踪器

func WithTrackerContext

func WithTrackerContext(ctx context.Context, tracker *ResourceTracker) *ContextResourceTracker

WithTrackerContext 创建一个与上下文关联的资源追踪器

func (*ContextResourceTracker) TrackDatabase

func (ct *ContextResourceTracker) TrackDatabase(db *sql.DB, connInfo string) *DatabaseResource

TrackDatabase 追踪数据库资源

func (*ContextResourceTracker) TrackFile

func (ct *ContextResourceTracker) TrackFile(file *os.File) *FileResource

TrackFile 追踪文件资源

func (*ContextResourceTracker) TrackGeneric

func (ct *ContextResourceTracker) TrackGeneric(id, resourceType string, closer func() error) *GenericResource

TrackGeneric 追踪通用资源

func (*ContextResourceTracker) TrackNetwork

func (ct *ContextResourceTracker) TrackNetwork(conn net.Conn) *NetworkResource

TrackNetwork 追踪网络资源

type DatabaseResource

type DatabaseResource struct {
	*BaseResource
	// contains filtered or unexported fields
}

DatabaseResource 表示一个数据库资源

func NewDatabaseResource

func NewDatabaseResource(id string, db *sql.DB, connInfo string) *DatabaseResource

NewDatabaseResource 创建一个新的数据库资源

func (*DatabaseResource) Close

func (r *DatabaseResource) Close() error

Close 关闭数据库资源

func (*DatabaseResource) ConnInfo

func (r *DatabaseResource) ConnInfo() string

ConnInfo 返回连接信息

func (*DatabaseResource) DB

func (r *DatabaseResource) DB() *sql.DB

DB 返回数据库对象

type FileResource

type FileResource struct {
	*BaseResource
	// contains filtered or unexported fields
}

FileResource 表示一个文件资源

func NewFileResource

func NewFileResource(id string, file *os.File) *FileResource

NewFileResource 创建一个新的文件资源

func (*FileResource) Close

func (r *FileResource) Close() error

Close 关闭文件资源

func (*FileResource) File

func (r *FileResource) File() *os.File

File 返回文件对象

type GenericResource

type GenericResource struct {
	*BaseResource
	// contains filtered or unexported fields
}

GenericResource 表示一个通用资源

func NewGenericResource

func NewGenericResource(id, resourceType string, closer func() error) *GenericResource

NewGenericResource 创建一个新的通用资源

func (*GenericResource) Data

func (r *GenericResource) Data() interface{}

Data 获取资源数据

func (*GenericResource) SetData

func (r *GenericResource) SetData(data interface{})

SetData 设置资源数据

type NetworkResource

type NetworkResource struct {
	*BaseResource
	// contains filtered or unexported fields
}

NetworkResource 表示一个网络资源

func NewNetworkResource

func NewNetworkResource(id string, conn net.Conn) *NetworkResource

NewNetworkResource 创建一个新的网络资源

func (*NetworkResource) Close

func (r *NetworkResource) Close() error

Close 关闭网络资源

func (*NetworkResource) Conn

func (r *NetworkResource) Conn() net.Conn

Conn 返回网络连接对象

func (*NetworkResource) LocalAddr

func (r *NetworkResource) LocalAddr() net.Addr

LocalAddr 返回本地地址

func (*NetworkResource) RemoteAddr

func (r *NetworkResource) RemoteAddr() net.Addr

RemoteAddr 返回远程地址

type PROCESSENTRY32

type PROCESSENTRY32 struct {
	// contains filtered or unexported fields
}

Windows API 结构体

type Resource

type Resource interface {
	// Close 关闭资源
	Close() error
	// ID 返回资源的唯一标识符
	ID() string
	// Type 返回资源的类型
	Type() string
	// CreatedAt 返回资源的创建时间
	CreatedAt() time.Time
	// LastUsedAt 返回资源的最后使用时间
	LastUsedAt() time.Time
	// UpdateLastUsed 更新资源的最后使用时间
	UpdateLastUsed()
}

Resource 表示一个需要追踪的资源

type ResourceActionHandler

type ResourceActionHandler func(resourceType ResourceType, limit ResourceLimit, usage *ResourceUsage) error

ResourceActionHandler 资源动作处理器

type ResourceAlertHandler

type ResourceAlertHandler func(resourceType ResourceType, message string)

ResourceAlertHandler 资源告警处理器

type ResourceLimit

type ResourceLimit struct {
	ResourceType ResourceType        // 资源类型
	LimitType    ResourceLimitType   // 限制类型
	Value        uint64              // 限制值
	Action       ResourceLimitAction // 限制动作
	Duration     time.Duration       // 持续时间
}

ResourceLimit 资源限制

type ResourceLimitAction

type ResourceLimitAction string

ResourceLimitAction 资源限制动作

const (
	ResourceLimitActionNone     ResourceLimitAction = "none"     // 无动作
	ResourceLimitActionLog      ResourceLimitAction = "log"      // 记录日志
	ResourceLimitActionAlert    ResourceLimitAction = "alert"    // 发送告警
	ResourceLimitActionThrottle ResourceLimitAction = "throttle" // 限流
	ResourceLimitActionReject   ResourceLimitAction = "reject"   // 拒绝
	ResourceLimitActionRestart  ResourceLimitAction = "restart"  // 重启
	ResourceLimitActionStop     ResourceLimitAction = "stop"     // 停止
)

预定义资源限制动作

type ResourceLimitType

type ResourceLimitType string

ResourceLimitType 资源限制类型

const (
	ResourceLimitTypeSoft ResourceLimitType = "soft" // 软限制
	ResourceLimitTypeHard ResourceLimitType = "hard" // 硬限制
)

预定义资源限制类型

type ResourceLimiter

type ResourceLimiter struct {
	// contains filtered or unexported fields
}

ResourceLimiter 资源限制器

func NewResourceLimiter

func NewResourceLimiter(tracker *ResourceUsageTracker, logger hclog.Logger) *ResourceLimiter

NewResourceLimiter 创建资源限制器

func (*ResourceLimiter) AddLimit

func (l *ResourceLimiter) AddLimit(limit ResourceLimit)

AddLimit 添加资源限制

func (*ResourceLimiter) Check

func (l *ResourceLimiter) Check() error

Check 检查资源限制

func (*ResourceLimiter) GetLimits

func (l *ResourceLimiter) GetLimits() map[ResourceType][]ResourceLimit

GetLimits 获取资源限制

func (*ResourceLimiter) GetResourceAlerts

func (l *ResourceLimiter) GetResourceAlerts() map[ResourceType][]string

GetResourceAlerts 获取资源告警

func (*ResourceLimiter) GetResourceStats

func (l *ResourceLimiter) GetResourceStats() map[string]interface{}

GetResourceStats 获取资源统计信息

func (*ResourceLimiter) GetResourceUsage

func (l *ResourceLimiter) GetResourceUsage() *ResourceUsage

GetResourceUsage 获取资源使用情况

func (*ResourceLimiter) GetResourceUsageHistory

func (l *ResourceLimiter) GetResourceUsageHistory() []*ResourceUsage

GetResourceUsageHistory 获取资源使用历史

func (*ResourceLimiter) LimitCPU

func (l *ResourceLimiter) LimitCPU(percent float64, action ResourceLimitAction)

LimitCPU 限制CPU使用

func (*ResourceLimiter) LimitDisk

func (l *ResourceLimiter) LimitDisk(bytes uint64, action ResourceLimitAction)

LimitDisk 限制磁盘使用

func (*ResourceLimiter) LimitMemory

func (l *ResourceLimiter) LimitMemory(bytes uint64, action ResourceLimitAction)

LimitMemory 限制内存使用

func (*ResourceLimiter) LimitNetwork

func (l *ResourceLimiter) LimitNetwork(bytesPerSecond uint64, action ResourceLimitAction)

LimitNetwork 限制网络使用

func (*ResourceLimiter) RegisterActionHandler

func (l *ResourceLimiter) RegisterActionHandler(action ResourceLimitAction, handler ResourceActionHandler)

RegisterActionHandler 注册动作处理器

func (*ResourceLimiter) RegisterAlertHandler

func (l *ResourceLimiter) RegisterAlertHandler(handler ResourceAlertHandler)

RegisterAlertHandler 注册告警处理器

func (*ResourceLimiter) RemoveLimit

func (l *ResourceLimiter) RemoveLimit(resourceType ResourceType, limitType ResourceLimitType)

RemoveLimit 移除资源限制

func (*ResourceLimiter) SetGOMAXPROCS

func (l *ResourceLimiter) SetGOMAXPROCS(n int)

SetGOMAXPROCS 设置GOMAXPROCS

func (*ResourceLimiter) SetProcessPriority

func (l *ResourceLimiter) SetProcessPriority(priority int) error

SetProcessPriority 设置进程优先级

func (*ResourceLimiter) Start

func (l *ResourceLimiter) Start()

Start 启动资源限制器

func (*ResourceLimiter) Stop

func (l *ResourceLimiter) Stop()

Stop 停止资源限制器

type ResourceManager

type ResourceManager struct {
	// contains filtered or unexported fields
}

ResourceManager 资源管理器

func NewResourceManager

func NewResourceManager(options ...ResourceManagerOption) *ResourceManager

NewResourceManager 创建资源管理器

func (*ResourceManager) GetProcessInfo

func (rm *ResourceManager) GetProcessInfo() (map[string]interface{}, error)

GetProcessInfo 获取进程信息

func (*ResourceManager) GetResourceAlerts

func (rm *ResourceManager) GetResourceAlerts() map[ResourceType][]string

GetResourceAlerts 获取资源告警

func (*ResourceManager) GetResourceLimits

func (rm *ResourceManager) GetResourceLimits() map[ResourceType][]ResourceLimit

GetResourceLimits 获取资源限制

func (*ResourceManager) GetResourceStats

func (rm *ResourceManager) GetResourceStats() map[string]interface{}

GetResourceStats 获取资源统计信息

func (*ResourceManager) GetResourceUsage

func (rm *ResourceManager) GetResourceUsage() *ResourceUsage

GetResourceUsage 获取资源使用情况

func (*ResourceManager) GetResourceUsageHistory

func (rm *ResourceManager) GetResourceUsageHistory() []*ResourceUsage

GetResourceUsageHistory 获取资源使用历史

func (*ResourceManager) GetSystemInfo

func (rm *ResourceManager) GetSystemInfo() map[string]interface{}

GetSystemInfo 获取系统信息

func (*ResourceManager) LimitCPU

func (rm *ResourceManager) LimitCPU(percent float64, action ResourceLimitAction)

LimitCPU 限制CPU使用

func (*ResourceManager) LimitDisk

func (rm *ResourceManager) LimitDisk(bytes uint64, action ResourceLimitAction)

LimitDisk 限制磁盘使用

func (*ResourceManager) LimitMemory

func (rm *ResourceManager) LimitMemory(bytes uint64, action ResourceLimitAction)

LimitMemory 限制内存使用

func (*ResourceManager) LimitNetwork

func (rm *ResourceManager) LimitNetwork(bytesPerSecond uint64, action ResourceLimitAction)

LimitNetwork 限制网络使用

func (*ResourceManager) OptimizeCPUUsage

func (rm *ResourceManager) OptimizeCPUUsage()

OptimizeCPUUsage 优化CPU使用

func (*ResourceManager) OptimizeMemoryUsage

func (rm *ResourceManager) OptimizeMemoryUsage()

OptimizeMemoryUsage 优化内存使用

func (*ResourceManager) OptimizeResourceUsage

func (rm *ResourceManager) OptimizeResourceUsage()

OptimizeResourceUsage 优化资源使用

func (*ResourceManager) RegisterActionHandler

func (rm *ResourceManager) RegisterActionHandler(action ResourceLimitAction, handler ResourceActionHandler)

RegisterActionHandler 注册动作处理器

func (*ResourceManager) RegisterAlertHandler

func (rm *ResourceManager) RegisterAlertHandler(handler ResourceAlertHandler)

RegisterAlertHandler 注册告警处理器

func (*ResourceManager) RemoveLimit

func (rm *ResourceManager) RemoveLimit(resourceType ResourceType, limitType ResourceLimitType)

RemoveLimit 移除资源限制

func (*ResourceManager) SetGOMAXPROCS

func (rm *ResourceManager) SetGOMAXPROCS(n int)

SetGOMAXPROCS 设置GOMAXPROCS

func (*ResourceManager) SetProcessPriority

func (rm *ResourceManager) SetProcessPriority(priority int) error

SetProcessPriority 设置进程优先级

func (*ResourceManager) Start

func (rm *ResourceManager) Start()

Start 启动资源管理器

func (*ResourceManager) Stop

func (rm *ResourceManager) Stop()

Stop 停止资源管理器

type ResourceManagerOption

type ResourceManagerOption func(*ResourceManager)

ResourceManagerOption 资源管理器选项

func WithContext

func WithContext(ctx context.Context) ResourceManagerOption

WithContext 设置上下文

func WithDiskPaths

func WithDiskPaths(paths []string) ResourceManagerOption

WithDiskPaths 设置磁盘路径

func WithHistoryLimit

func WithHistoryLimit(limit int) ResourceManagerOption

WithHistoryLimit 设置历史记录限制

func WithLogger

func WithLogger(logger hclog.Logger) ResourceManagerOption

WithLogger 设置日志记录器

func WithNetworkInterfaces

func WithNetworkInterfaces(ifaces []string) ResourceManagerOption

WithNetworkInterfaces 设置网络接口

func WithProcessID

func WithProcessID(pid int32) ResourceManagerOption

WithProcessID 设置进程ID

func WithUpdateInterval

func WithUpdateInterval(interval time.Duration) ResourceManagerOption

WithUpdateInterval 设置更新间隔

type ResourceStats

type ResourceStats struct {
	TotalCreated  int64
	TotalClosed   int64
	CurrentActive int64
	ClosureErrors int64
}

ResourceStats 资源统计信息

type ResourceTracker

type ResourceTracker struct {
	// contains filtered or unexported fields
}

ResourceTracker 管理和追踪系统中的资源

func NewResourceTracker

func NewResourceTracker(options ...ResourceTrackerOption) *ResourceTracker

NewResourceTracker 创建一个新的资源追踪器

func (*ResourceTracker) CleanupIdleResources

func (rt *ResourceTracker) CleanupIdleResources(idleTimeout time.Duration) []error

CleanupIdleResources 清理空闲资源

func (*ResourceTracker) Get

func (rt *ResourceTracker) Get(id string) (Resource, bool)

Get 获取一个资源

func (*ResourceTracker) GetStats

func (rt *ResourceTracker) GetStats() ResourceStats

GetStats 获取资源统计信息

func (*ResourceTracker) ListResources

func (rt *ResourceTracker) ListResources() []Resource

ListResources 列出所有资源

func (*ResourceTracker) Release

func (rt *ResourceTracker) Release(id string) error

Release 释放一个资源

func (*ResourceTracker) ReleaseAll

func (rt *ResourceTracker) ReleaseAll() []error

ReleaseAll 释放所有资源

func (*ResourceTracker) ReleaseByType

func (rt *ResourceTracker) ReleaseByType(resourceType string) []error

ReleaseByType 释放指定类型的所有资源

func (*ResourceTracker) Stop

func (rt *ResourceTracker) Stop()

Stop 停止资源追踪器

func (*ResourceTracker) Track

func (rt *ResourceTracker) Track(resource Resource)

Track 追踪一个资源

func (*ResourceTracker) TrackDatabase

func (rt *ResourceTracker) TrackDatabase(db *sql.DB, connInfo string) *DatabaseResource

TrackDatabase 追踪数据库资源

func (*ResourceTracker) TrackFile

func (rt *ResourceTracker) TrackFile(file *os.File) *FileResource

TrackFile 追踪文件资源

func (*ResourceTracker) TrackGeneric

func (rt *ResourceTracker) TrackGeneric(id, resourceType string, closer func() error) *GenericResource

TrackGeneric 追踪通用资源

func (*ResourceTracker) TrackNetwork

func (rt *ResourceTracker) TrackNetwork(conn net.Conn) *NetworkResource

TrackNetwork 追踪网络资源

type ResourceTrackerOption

type ResourceTrackerOption func(*ResourceTracker)

ResourceTrackerOption 资源追踪器配置选项

func WithCleanupInterval

func WithCleanupInterval(interval time.Duration) ResourceTrackerOption

WithCleanupInterval 设置自动清理间隔

func WithTrackerLogger

func WithTrackerLogger(logger hclog.Logger) ResourceTrackerOption

WithTrackerLogger 设置日志记录器

type ResourceType

type ResourceType string

ResourceType 资源类型

const (
	ResourceTypeCPU     ResourceType = "cpu"     // CPU
	ResourceTypeMemory  ResourceType = "memory"  // 内存
	ResourceTypeDisk    ResourceType = "disk"    // 磁盘
	ResourceTypeNetwork ResourceType = "network" // 网络
)

预定义资源类型

type ResourceUsage

type ResourceUsage struct {
	// CPU使用情况
	CPUUsage      float64   // CPU使用率(百分比)
	CPUTime       float64   // CPU时间(秒)
	CPUUserTime   float64   // CPU用户时间(秒)
	CPUSystemTime float64   // CPU系统时间(秒)
	CPUCount      int       // CPU核心数
	CPUPercent    []float64 // 每个CPU核心的使用率

	// 内存使用情况
	MemoryUsage     uint64  // 内存使用量(字节)
	MemoryPercent   float64 // 内存使用率(百分比)
	MemoryRSS       uint64  // 常驻内存集(字节)
	MemoryVMS       uint64  // 虚拟内存大小(字节)
	MemorySwap      uint64  // 交换内存使用量(字节)
	MemoryTotal     uint64  // 总内存(字节)
	MemoryFree      uint64  // 空闲内存(字节)
	MemoryAvailable uint64  // 可用内存(字节)

	// 磁盘使用情况
	DiskUsage      uint64  // 磁盘使用量(字节)
	DiskPercent    float64 // 磁盘使用率(百分比)
	DiskTotal      uint64  // 总磁盘空间(字节)
	DiskFree       uint64  // 空闲磁盘空间(字节)
	DiskReadBytes  uint64  // 磁盘读取字节数
	DiskWriteBytes uint64  // 磁盘写入字节数
	DiskReadCount  uint64  // 磁盘读取次数
	DiskWriteCount uint64  // 磁盘写入次数
	DiskReadTime   uint64  // 磁盘读取时间(毫秒)
	DiskWriteTime  uint64  // 磁盘写入时间(毫秒)

	// 网络使用情况
	NetworkSentBytes      uint64 // 发送字节数
	NetworkReceivedBytes  uint64 // 接收字节数
	NetworkSentPackets    uint64 // 发送数据包数
	NetworkRecvPackets    uint64 // 接收数据包数
	NetworkDroppedPackets uint64 // 丢弃数据包数
	NetworkErrorPackets   uint64 // 错误数据包数

	// 进程信息
	ProcessID         int32   // 进程ID
	ProcessName       string  // 进程名称
	ProcessStatus     string  // 进程状态
	ProcessCreateTime int64   // 进程创建时间(Unix时间戳)
	ProcessThreads    int32   // 进程线程数
	ProcessFDs        int32   // 进程文件描述符数
	ProcessChildren   []int32 // 子进程ID列表

	// 时间信息
	Timestamp time.Time // 时间戳
}

ResourceUsage 资源使用情况

func NewResourceUsage

func NewResourceUsage() *ResourceUsage

NewResourceUsage 创建资源使用情况

type ResourceUsageSnapshot

type ResourceUsageSnapshot struct {
	Current  *ResourceUsage            // 当前资源使用情况
	Previous *ResourceUsage            // 上一次资源使用情况
	Delta    *ResourceUsage            // 资源使用变化
	History  []*ResourceUsage          // 历史资源使用情况
	Stats    map[string]interface{}    // 统计信息
	Limits   map[ResourceType]uint64   // 资源限制
	Alerts   map[ResourceType][]string // 资源告警
}

ResourceUsageSnapshot 资源使用快照

func NewResourceUsageSnapshot

func NewResourceUsageSnapshot() *ResourceUsageSnapshot

NewResourceUsageSnapshot 创建资源使用快照

type ResourceUsageTracker

type ResourceUsageTracker struct {
	// contains filtered or unexported fields
}

ResourceUsageTracker 资源使用跟踪器

func NewResourceUsageTracker

func NewResourceUsageTracker(processID int32, historyLimit int) *ResourceUsageTracker

NewResourceUsageTracker 创建资源使用跟踪器

func (*ResourceUsageTracker) GetResourceLimit

func (t *ResourceUsageTracker) GetResourceLimit(resourceType ResourceType) (uint64, bool)

GetResourceLimit 获取资源限制

func (*ResourceUsageTracker) GetSnapshot

func (t *ResourceUsageTracker) GetSnapshot() *ResourceUsageSnapshot

GetSnapshot 获取资源使用快照

func (*ResourceUsageTracker) RemoveResourceLimit

func (t *ResourceUsageTracker) RemoveResourceLimit(resourceType ResourceType)

RemoveResourceLimit 移除资源限制

func (*ResourceUsageTracker) SetDiskPaths

func (t *ResourceUsageTracker) SetDiskPaths(paths []string)

SetDiskPaths 设置磁盘路径

func (*ResourceUsageTracker) SetNetworkInterfaces

func (t *ResourceUsageTracker) SetNetworkInterfaces(ifaces []string)

SetNetworkInterfaces 设置网络接口

func (*ResourceUsageTracker) SetResourceLimit

func (t *ResourceUsageTracker) SetResourceLimit(resourceType ResourceType, limit uint64)

SetResourceLimit 设置资源限制

func (*ResourceUsageTracker) Update

func (t *ResourceUsageTracker) Update() error

Update 更新资源使用情况

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL