Filebeat 可以通过 HTTP 终点来暴露内部的指标。这些指标对于监控 Beat 的内部状态很有用。但出于安全原因,该功能默认是禁用的。要开启该功能,需要在 filebeat.yml 文件中添加以下配置项:

1
2
http:
enabled: true

开启了该功能后,在浏览器访问地址 http://localhost:5066/stats 即可查看各项统计指标。要美化 JSON 输出数据格式,可以在该地址后面加上 ?pretty ,即:http://localhost:5066/stats?pretty

需要注意的是,这个功能目前还是实验性的。

HTTP 终点配置说明

配置 可选/必填 默认 说明
http.enabled (可选) false 启用 HTTP 终点。
http.host (可选) localhost 绑定到这个主机名、IP 地址、unix 套接字(unix:///var/run/filebeat.sock)或 Windows 命名的管道(npipe:///filebeat)。建议只使用 localhost。默认为 localhost。
http.port (可选) 5066 HTTP 终点将绑定的端口。默认为 5066。
http.named_pipe.user (可选) 当前用户 用于创建命名管道的用户,只在 Windows 下工作,默认为当前用户。
http.named_pipe.security_descriptor (可选) 当前用户的读和写权限 以 SDDL 格式定义的 Windows 安全描述符字符串。默认为当前用户的读和写权限。
http.pprof.enabled (可选) false 在提供 HTTP 服务时启用 /debug/pprof/ 终点。建议只在 localhost 上启用,因为这些终点可能会泄露数据。默认为 false。
http.pprof.block_profile_rate (可选) 0 block_profile_rate 控制在 /debug/pprof/block 提供的阻塞配置文件中报告的 goroutine 阻塞事件的比例。剖析器的目标是对每一个阻塞率纳秒的阻塞事件进行平均采样。要在剖析中包括每个阻塞事件,通过率 = 1。要完全关闭剖析,pass rate ⇐ 0。 默认为 0。
http.pprof.mem_profile_rate (可选) 524288 mem_profile_rate 控制在 /debug/pprof/heap 提供的内存配置文件中记录和报告的内存分配比例。剖析器的目标是平均每分配一个 mem_profile_rate 字节就采样一次分配。要在剖析中包括每个分配的块,请将 mem_profile_rate 设置为 1。要完全关闭剖析,请将 mem_profile_rate 设置为 0。 默认值为 524288。
http.pprof.mutex_profile_rate (可选) 0 mutex_profile_rate 控制在 /debug/pprof/mutex 提供的 mutex profile 中报告的 mutex 争夺事件的比例。平均有 1/rate 的事件被报告。要完全关闭剖析,请将速率设为 0。默认值是 0。

返回示例

http://localhost:5066 返回内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"beat": "filebeat",
"binary_arch": "amd64",
"build_commit": "9b77c2c135c228c2eedc310f6e975bb1a76169b1",
"build_time": "2023-02-12T04:37:19.000Z",
"elastic_licensed": true,
"ephemeral_id": "9e04d8fb-b69b-4549-9b8e-d24628b74b9c",
"gid": "0",
"hostname": "fb-01",
"name": "fb-01",
"uid": "0",
"username": "root",
"uuid": "25b97e60-5065-43d5-bf28-75fc0a59083c",
"version": "8.6.2"
}

以上 JSON 字符串各字段的含义如下:

beat:beat 类型,这里是 filebeat;

binary_arch:处理器架构,这里是 amd64;

build_commit:Filebeat 的构建提交编号 9b77c2c135c228c2eedc310f6e975bb1a76169b1;

build_time:Filebeat 的构建时间 2023-02-12T04:37:19.000Z;

elastic_licensed:是否已购买 Elastic 许可证,此处为 true;

ephemeral_id:临时ID 1af792df-38b1-4799-be0c-f1c3f7182afa;

gid:groupid,这里是 0,即 root;

hostname:主机名;

name:计算机名称;

uid:userid,这里是 0,即 root;

username:用户名,这里是 root;

uuid:唯一标识符 cafeb55a-b083-476d-aae1-58ff02b54cda;

version:filebeat 的版本,这里是 8.6.2

http://localhost:5066/stats?pretty 返回内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
{
"beat": {
"cpu": {
"system": {
"ticks": 30670,
"time": {
"ms": 30670
}
},
"total": {
"ticks": 39480,
"time": {
"ms": 39480
},
"value": 39480
},
"user": {
"ticks": 8810,
"time": {
"ms": 8810
}
}
},
"handles": {
"limit": {
"hard": 4096,
"soft": 1024
},
"open": 13
},
"info": {
"ephemeral_id": "9e04d8fb-b69b-4549-9b8e-d24628b74b9c",
"name": "filebeat",
"uptime": {
"ms": 435000666
},
"version": "8.6.2"
},
"memstats": {
"gc_next": 19509800,
"memory_alloc": 9710592,
"memory_sys": 30229512,
"memory_total": 771926000,
"rss": 16318464
},
"runtime": {
"goroutines": 60
}
},
"filebeat": {
"events": {
"active": 0,
"added": 5,
"done": 5
},
"harvester": {
"closed": 1,
"open_files": 0,
"running": 0,
"skipped": 0,
"started": 1
},
"input": {
"log": {
"files": {
"renamed": 0,
"truncated": 0
}
},
"netflow": {
"flows": 0,
"packets": {
"dropped": 0,
"received": 0
}
}
}
},
"libbeat": {
"config": {
"module": {
"running": 0,
"starts": 0,
"stops": 0
},
"reloads": 0,
"scans": 0
},
"output": {
"events": {
"acked": 1,
"active": 0,
"batches": 1,
"dropped": 0,
"duplicates": 0,
"failed": 0,
"toomany": 0,
"total": 1
},
"read": {
"bytes": 0,
"errors": 0
},
"type": "console",
"write": {
"bytes": 9557,
"errors": 0
}
},
"pipeline": {
"clients": 7,
"events": {
"active": 0,
"dropped": 0,
"failed": 0,
"filtered": 4,
"published": 1,
"retry": 0,
"total": 5
},
"queue": {
"acked": 1,
"max_events": 4096
}
}
},
"registrar": {
"states": {
"cleanup": 0,
"current": 7,
"update": 5
},
"writes": {
"fail": 0,
"success": 3,
"total": 3
}
},
"system": {
"cpu": {
"cores": 8
},
"load": {
"1": 0.52,
"5": 0.58,
"15": 0.59,
"norm": {
"1": 0.065,
"5": 0.0725,
"15": 0.0738
}
}
}
}

返回的 JSON 字符串包含了 filebeat 进程的详细运行信息,主要包含以下几个部分:

  • beat 部分:包含 filebeat 进程基本信息,如版本、启动时间、CPU、内存使用情况等。
  • filebeat 部分:包含 filebeat 本身的运行数据,如已读取和处理的事件数、Harvester 情况、输入通道(如文件、Netflow)情况等。
  • libbeat 部分:包含 filebeat 作为 beats 的一员所共有的运行数据,如模块加载情况、输出通道情况、pipeline 情况等。
  • registrar 部分:包含 filebeat 运行期间数据发送至 registrar 的情况,如失败、成功、更新事件数等。
  • system 部分:包含宿主服务器的一些基本信息,如 CPU 核心数、负载情况等。

(END)