143 lines
4.1 KiB
Plaintext
143 lines
4.1 KiB
Plaintext
// ============================================================================
|
|
// Grafana Alloy 配置文件 - 用于监控 agent_runner 进程
|
|
// ============================================================================
|
|
// 此配置文件实现:
|
|
// 1. 自动发现 agent_runner 及其子进程
|
|
// 2. 使用 eBPF 进行 CPU 性能剖析
|
|
// 3. 将性能数据发送到 Pyroscope Server
|
|
// ============================================================================
|
|
|
|
// ============================================================================
|
|
// 进程发现 - 发现所有运行中的进程
|
|
// ============================================================================
|
|
discovery.process "all" {
|
|
}
|
|
|
|
// ============================================================================
|
|
// 进程过滤 - 只保留 agent_runner 相关进程
|
|
// ============================================================================
|
|
discovery.relabel "agent_runner_filter" {
|
|
targets = discovery.process.all.targets
|
|
|
|
// 规则 1: 保留 agent_runner 主进程及其所有子进程
|
|
// 匹配条件:进程名是 agent_runner 或者父进程 PID 是 1
|
|
rule {
|
|
source_labels = ["__meta_process_exe", "__meta_process_ppid"]
|
|
regex = ".*/agent_runner|;1"
|
|
action = "keep"
|
|
}
|
|
|
|
// 规则 2: 添加进程 PID 标签
|
|
rule {
|
|
source_labels = ["__meta_process_pid"]
|
|
target_label = "process_pid"
|
|
}
|
|
|
|
// 规则 3: 添加进程名称标签
|
|
rule {
|
|
source_labels = ["__meta_process_comm"]
|
|
target_label = "process_name"
|
|
}
|
|
|
|
// 规则 4: 添加完整执行路径标签
|
|
rule {
|
|
source_labels = ["__meta_process_exe"]
|
|
target_label = "process_exe"
|
|
}
|
|
|
|
// 规则 5: 添加父进程 PID 标签
|
|
rule {
|
|
source_labels = ["__meta_process_ppid"]
|
|
target_label = "parent_pid"
|
|
}
|
|
|
|
// 规则 6: 添加命令行参数标签
|
|
rule {
|
|
source_labels = ["__meta_process_cmdline"]
|
|
target_label = "process_cmdline"
|
|
}
|
|
|
|
// 规则 7: 添加环境标签
|
|
rule {
|
|
target_label = "env"
|
|
replacement = "dev"
|
|
}
|
|
|
|
// 规则 8: 添加容器 ID 标签(从环境变量动态组合)
|
|
rule {
|
|
target_label = "container_id"
|
|
replacement = "agent-${env:USER_ID}"
|
|
}
|
|
|
|
// 规则 9: 添加应用名称标签
|
|
rule {
|
|
target_label = "job"
|
|
replacement = "agent_runner"
|
|
}
|
|
|
|
// 规则 10: 添加实例标签(从环境变量动态组合)
|
|
rule {
|
|
target_label = "instance"
|
|
replacement = "agent-${env:USER_ID}"
|
|
}
|
|
|
|
// 添加集群标签
|
|
rule {
|
|
target_label = "cluster"
|
|
replacement = "rcoder"
|
|
}
|
|
|
|
// 添加数据中心标签
|
|
rule {
|
|
target_label = "datacenter"
|
|
replacement = "local"
|
|
}
|
|
}
|
|
|
|
// ============================================================================
|
|
// 写入 Pyroscope Server
|
|
// ============================================================================
|
|
pyroscope.write "remote" {
|
|
endpoint {
|
|
url = "http://pyroscope:4040"
|
|
}
|
|
|
|
external_labels = {
|
|
"env" = "dev",
|
|
"datacenter" = "local",
|
|
"cluster" = "rcoder",
|
|
}
|
|
}
|
|
|
|
// ============================================================================
|
|
// eBPF 性能分析组件
|
|
// ============================================================================
|
|
pyroscope.ebpf "agent_runner" {
|
|
forward_to = [pyroscope.write.remote.receiver]
|
|
|
|
targets = discovery.relabel.agent_runner_filter.output
|
|
|
|
sample_rate = 97
|
|
collect_interval = "15s"
|
|
|
|
collect_user_profile = true
|
|
collect_kernel_profile = false
|
|
|
|
python_enabled = true
|
|
}
|
|
|
|
// ============================================================================
|
|
// Prometheus Remote Write
|
|
// ============================================================================
|
|
prometheus.remote_write "metrics" {
|
|
endpoint {
|
|
url = "http://prometheus:9090/api/v1/write"
|
|
}
|
|
|
|
external_labels = {
|
|
"env" = "dev",
|
|
"datacenter" = "local",
|
|
"cluster" = "rcoder",
|
|
}
|
|
}
|