-
Notifications
You must be signed in to change notification settings - Fork 255
Runner之系统信息采集配置
除了日志收集之外,logkit还提供系统信息采集的功能,方便安装了logkit的用户可以同时把logkit作为机器的agent,采集机器以及机器上部署的常见基础组件的各类指标。
目前支持收集的监控内容信息包括:
- system: 监控 load1、load5、load15、用户数、cpu核数以及系统启动时间等;
- processes: 监控处于各种状态的进程数量, 比如运行中/暂停/可中断/空闲的进程数量等;
- netstat: 监控处于各种状态的网络连接数, 比如Syn send/Syn Recv 等状态的网络连接数;
- net: 监控网络设备的状态,比如收发包的数量、收发包的字节数等;
- mem: 监控内存的实时状态;
- swap: 监控 swap 分区的状态,比如换入换出、使用率、空闲大小等;
- cpu: 监控 cpu 的实时状态,包括用量,中断时间占比等;
- kernel: 监控内核中断次数、上下文切换次数、fork 的进程数等;
- disk: 监控磁盘的使用情况, 包括磁盘用量、inode使用情况等;
- diskio: 监控磁盘读写状态, 包括读写次数、总用时等;
- http: 监控某个或者某些http请求;
- procstat: 监控某个或者某些进程的信息,包括cpu,内存,磁盘io,资源限制等;
- memcached: 监控 memcached 实例统计信息,包括运行时间、请求量、连接数等;
{
"type":"system",
"attributes":{
"system_load1": true,
"system_load5": true,
"system_load15": true,
"system_n_users": true,
"system_n_cpus": true,
"system_uptime": true,
"system_uptime_format": true
}
}
attributes
代表收集的字段,当显式配置某字段为 false
时,将不再收集该字段的值,不配置或者配置字段值为true
时,收集该字段的值。各个字段的含义如下:
- "system_load1": 1分钟平均
- "system_load5": 5分钟平均load值
- "system_load15": 15分钟的平均load值
- "system_n_users": 用户数
- "system_n_cpus": CPU核数
- "system_uptime": 系统启动时间
- "system_uptime_format": 格式化的系统运行时间
{
"type":"processes",
"attributes":{
"processes_blocked": true,
"processes_zombies": true,
"processes_stopped": true,
"processes_running": true,
"processes_sleeping": true,
"processes_total": true,
"processes_unknown": true,
"processes_idle": true,
"processes_wait": true,
"processes_dead": true,
"processes_paging": true,
"processes_total_threads": true
}
}
attributes
代表收集的字段,当显式配置某字段为 false
时,将不再收集该字段的值,不配置或者配置字段值为true
时,收集该字段的值。各个字段的含义如下:
- "processes_blocked": 不可中断的睡眠状态下的进程数, 进程标志位为:
'U', 'D', 'L'
- "processes_zombies": 僵尸态进程数, 进程标志位为:
'Z'
- "processes_stopped": 暂停状态进程数,进程标志位为:
'T'
- "processes_running": 运行中的进程数,进程标志位为:
'R'
- "processes_sleeping": 可中断进程数,进程标志位为:
'S'
- "processes_total": 总进程数
- "processes_unknown": 未知状态进程数
- "processes_idle": 挂起的空闲进程数,进程标志位为:
'I'
- "processes_wait": 等待中的进程数,进程标志位为:
'W'
- "processes_idle": 挂起的空闲进程数,进程标志位为:
'I'
- "processes_idle": 挂起的空闲进程数,进程标志位为:
'I'
- "processes_dead": 回收中的进程数,进程标志位为:
'X'
- "processes_paging": 等待中的进程数,进程标志位为:
'W'
- "processes_total_threads": 总线程数
{
"type":"netstat",
"attributes":{
"netstat_tcp_established": true,
"netstat_tcp_syn_sent": true,
"netstat_tcp_syn_recv": true,
"netstat_tcp_fin_wait1": true,
"netstat_tcp_fin_wait2": true,
"netstat_tcp_time_wait": true,
"netstat_tcp_close": true,
"netstat_tcp_close_wait": true,
"netstat_tcp_last_ack": true,
"netstat_tcp_listen": true,
"netstat_tcp_closing": true,
"netstat_tcp_none": true,
"netstat_udp_socket": true
}
}
attributes
代表收集的字段,当显式配置某字段为 false
时,将不再收集该字段的值,不配置或者配置字段值为true
时,收集该字段的值。各个字段的含义如下:
- "netstat_tcp_established":
ESTABLISHED
状态的网络链接数 - "netstat_tcp_syn_sent":
SYN_SENT
状态的网络链接数 - "netstat_tcp_syn_recv":
SYN_RECV
状态的网络链接数 - "netstat_tcp_fin_wait1":
FIN_WAIT1
状态的网络链接数 - "netstat_tcp_fin_wait2":
FIN_WAIT2
状态的网络链接数 - "netstat_tcp_time_wait":
TIME_WAIT
状态的网络链接数 - "netstat_tcp_close":
CLOSE
状态的网络链接数 - "netstat_tcp_close_wait":
CLOSE_WAIT
状态的网络链接数 - "netstat_tcp_last_ack":
LAST_ACK
状态的网络链接数 - "netstat_tcp_listen":
LISTEN
状态的网络链接数 - "netstat_tcp_closing":
CLOSING
状态的网络链接数 - "netstat_tcp_none":
NONE
状态的网络链接数 - "netstat_udp_socket":
UDP
状态的网络链接数
{
"type":"net",
"attributes":{
"net_bytes_sent": true,
"net_bytes_recv": true,
"net_packets_sent": true,
"net_packets_recv": true,
"net_err_in": true,
"net_err_out": true,
"net_drop_in": true,
"net_drop_out": true,
"net_interface": true,
},
"config": {
"interfaces": [],
"skip_protocols_state":true
}
}
attributes
代表收集的字段,当显式配置某字段为 false
时,将不再收集该字段的值,不配置或者配置字段值为true
时,收集该字段的值。各个字段的含义如下:
- "net_bytes_sent": 网卡发包总数(bytes)
- "net_bytes_recv": 网卡收包总数(bytes)
- "net_packets_sent": 网卡发包数量
- "net_packets_recv": 网卡收包数量
- "net_err_in": 网卡收包错误数量
- "net_err_out": 网卡发包错误数量
- "net_drop_in": 网卡收 丢包数量
- "net_drop_out": 网卡发 丢包数量
- "net_interface": 网卡设备名称
config
代表该系统指标需要配置的参数,各参数说明如下:
- "interfaces": 配置后可以收集特定网卡的信息,为空时收集所有网卡的信息
- "skip_protocols_state": 是否忽略网络协议相关的状态信息(注意: 无法对网络协议方面的状态信息进行字段筛选)
{
"type":"mem",
"attributes":{
"mem_total": true,
"mem_available": true,
"mem_used": true,
"mem_free": true,
"mem_cached": true,
"mem_buffered": true,
"mem_active": true,
"mem_inactive": true,
"mem_used_percent": true,
"mem_available_percent": true
}
}
attributes
代表收集的字段,当显式配置某字段为 false
时,将不再收集该字段的值,不配置或者配置字段值为true
时,收集该字段的值。各个字段的含义如下:
- "mem_total": 内存总数
- "mem_available": 可用内存数
- "mem_used": 已用内存数
- "mem_free": 空闲内存
- "mem_cached": 用于缓存的内存
- "mem_buffered": 文件buffer内存
- "mem_active": 活跃使用的内存总数,包括cache和buffer内存
- "mem_inactive": 空闲的内存数,包括free和avalible的内存
- "mem_used_percent": 内存已用百分比(0~100)
- "mem_available_percent": 内存剩余百分比(0~100)
{
"type":"swap",
"attributes":{
"swap_total": true,
"swap_used": true,
"swap_free": true,
"swap_in": true,
"swap_out": true,
"swap_used_percent": true
}
}
attributes
代表收集的字段,当显式配置某字段为 false
时,将不再收集该字段的值,不配置或者配置字段值为true
时,收集该字段的值。各个字段的含义如下:
- "swap_total": Swap空间总量
- "swap_used": Swap已使用空间
- "swap_free": Swap空闲空间
- "swap_in": Swap换入(页面从交换分区转换到内存中)
- "swap_out": Swap换出(页面从内存换出到交换分区),
- "swap_used_percent": Swap使用率
{
"type":"cpu",
"attributes":{
"cpu_time_user": true,
"cpu_time_system": true,
"cpu_time_idle": true,
"cpu_time_nice": true,
"cpu_time_iowait": true,
"cpu_time_irq": true,
"cpu_time_softirq": true,
"cpu_time_steal": true,
"cpu_time_guest": true,
"cpu_time_guest_nice": true,
"cpu_time_cpu": true,
"cpu_usage_user": true,
"cpu_usage_system": true,
"cpu_usage_idle": true,
"cpu_usage_nice": true,
"cpu_usage_iowait": true,
"cpu_usage_irq": true,
"cpu_usage_softirq": true,
"cpu_usage_steal": true,
"cpu_usage_guest": true,
"cpu_usage_guest_nice": true,
"cpu_usage_cpu": true
},
"config": {
"per_cpu": true,
"total_cpu": true,
"collect_cpu_time": true
}
}
attributes
代表收集的字段,当显式配置某字段为 false
时,将不再收集该字段的值,不配置或者配置字段值为true
时,收集该字段的值。各个字段的含义如下:
- "cpu_time_user": 用户进程用时
- "cpu_time_system": 系统内核用时
- "cpu_time_idle": 空闲CPU用时
- "cpu_time_nice": 优先级调度用时
- "cpu_time_iowait": iowait用时
- "cpu_time_irq": 中断用时
- "cpu_time_softirq": 软中断用时
- "cpu_time_steal": Steal用时
- "cpu_time_guest": Guest用时
- "cpu_time_guest_nice": GuestNice用时
- "cpu_time_cpu": CPU序号名称
- "cpu_usage_user": 用户用量百分比(0~100)
- "cpu_usage_system": 系统用量百分比(0~100)
- "cpu_usage_idle": 空闲百分比(0~100)
- "cpu_usage_nice": 优先级调度程序用量百分比(0~100)
- "cpu_usage_iowait": IOwait时间占比(0~100)
- "cpu_usage_irq": 中断时间占比(0~100)
- "cpu_usage_softirq": 软中断时间占比(0~100)
- "cpu_usage_steal": 虚拟CPU的竞争等待时间占比(0~100)
- "cpu_usage_guest": 虚拟进程的CPU用时占比(0~100)
- "cpu_usage_guest_nice": 虚拟进程CPU调度用时占比(0~100)
- "cpu_usage_cpu": CPU序号名称
config
代表该系统指标需要配置的参数,各参数说明如下:
- "per_cpu": 是否收集每一个 cpu 的统计信息, 默认开启
- "total_cpu": 是否收集 cpu 总体情况统计信息, 默认开启
- "collect_cpu_time": 是否收集 cpu 时间统计信息, 默认关闭
{
"type": "kernel_vmstat"
}
{
"type": "kernel",
"attributes": {
"kernel_interrupts": true,
"kernel_context_switches": true,
"kernel_processes_forked": true,
"kernel_boot_time": true,
"kernel_disk_pages_in": true,
"kernel_disk_pages_out": true
}
}
attributes
代表收集的字段,当显式配置某字段为 false
时,将不再收集该字段的值,不配置或者配置字段值为true
时,收集该字段的值。各个字段的含义如下:
- "kernel_interrupts": 内核中断次数
- "kernel_context_switches": 内核上下文切换次数
- "kernel_processes_forked": fork的进程数
- "kernel_boot_time": 内核启动时间
- "kernel_disk_pages_in": 磁盘换入数量
- "kernel_disk_pages_out": 磁盘换出数量
{
"type": "disk",
"attributes": {
"disk_path": true,
"disk_device": true,
"disk_fstype": true,
"disk_total": true,
"disk_free": true,
"disk_used": true,
"disk_used_percent": true,
"disk_inodes_total": true,
"disk_inodes_free": true,
"disk_inodes_used": true
},
"config": {
"ignore_fs": [],
"mount_points": []
}
}
attributes
代表收集的字段,当显式配置某字段为 false
时,将不再收集该字段的值,不配置或者配置字段值为true
时,收集该字段的值。各个字段的含义如下:
- "disk_path": 磁盘路径
- "disk_device": 磁盘设备名
- "disk_fstype": 文件系统类型
- "disk_total": 磁盘总大小
- "disk_free": 磁盘剩余大小
- "disk_used": 磁盘用量
- "disk_used_percent": 磁盘已用百分比
- "disk_inodes_total": 总inode数量
- "disk_inodes_free": 空闲的inode数量
- "disk_inodes_used": 适用的inode数量
config
代表该系统指标需要配置的参数,各参数说明如下:
- "ignore_fs": 选填,忽略的挂载点
- "mount_points": 选填,收集特定的挂载点, 为空时默认收集除 "ignore_fs" 字段设置外的所有挂载点的信息
{
"type": "diskio",
"attributes": {
"diskio_reads": true,
"diskio_writes": true,
"diskio_read_bytes": true,
"diskio_write_bytes": true,
"diskio_read_time": true,
"diskio_write_time": true,
"diskio_io_time": true,
"diskio_iops_in_progress": true,
"diskio_name": true
},
"config": {
"devices": [],
"device_tag": [],
"name_templates": [],
"skip_serial_number": false
}
}
attributes
代表收集的字段,当显式配置某字段为 false
时,将不再收集该字段的值,不配置或者配置字段值为true
时,收集该字段的值。各个字段的含义如下:
- "diskio_reads": 磁盘被读的总次数
- "diskio_writes": 磁盘被写的总次数
- "diskio_read_bytes": 读取的总数据量
- "diskio_write_bytes": 写入的总数据量
- "diskio_read_time": 磁盘读取总用时
- "diskio_write_time": 磁盘写入总用时
- "diskio_io_time": io总时间
- "diskio_iops_in_progress": 运行中的每秒IO数据量
- "diskio_name": 磁盘名称
config
代表该系统指标需要配置的参数,各参数说明如下:
- "devices": 选填,获取特定设备的信息, 为空时默认获取所有设备的信息
- "device_tags": 选填,采集磁盘特定 tag 的信息, 为空时默认获取所有 tag 信息
- "name_templates": 选填, 一些尝试加入设备的模板列表
- "skip_serial_number": 是否忽略磁盘序列号, 默认为 true
{
"type":"http",
"attributes":{
"http_status_code": true,
"http_data": true,
"http_target": true,
"http_err_msg": true,
"http_resp_head": true,
"http_time_cost": true,
"http_err_state": true
},
"config": {
"http_datas": [{"method":"GET", "url":"https://www.qiniu.com", "expect_code":200, "expect_data":"七牛云"},{"method":"GET", "url":"https://www.qiniu.com/products/pandora", "expect_code":200, "expect_data":"七牛云"}],
}
}
attributes
代表收集的字段,当显式配置某字段为 false
时,将不再收集该字段的值,不配置或者配置字段值为true
时,收集该字段的值。各个字段的含义如下:
http_status_code
代表收集的字段,当显式配置某字段为 false
时,将不再收集该字段的值,不配置或者配置字段值为true
时,收集该字段的值。各个字段的含义如下:
- "http_status_code": http响应状态码
- "http_data": http响应内容
- "http_target": http请求地址
- "http_err_msg": http响应错误信息
- "http_resp_head": http响应头部信息
- "http_time_cost": http响应用时
- "http_err_state": http响应状态
config
代表该系统指标需要配置的参数,各参数说明如下:
- "http_datas": 必填,获取某些http的信息及匹配相应的状态码或者响应内容
{
"type": "procstat",
"config": {
"cpu_usage_related": true,
"mem_related": true,
"cpu_time_related": false,
"io_related": true,
"threads_related": false,
"context_switch_related": false,
"file_descriptor_related": false,
"resource_limits": false,
"cpu_top_10": false,
"mem_top_10": false,
"supervisord": false,
"daemon_tools": false,
"pid_file": "",
"exe": "",
"pattern": "",
"user": "",
"system_unit": "",
"cgroup": ""
}
}
进程信息收集的基本原理为先通过一些系统命令过滤出想要收集的进程的 pid, 然后收集这些 pid 所对应的进程的信息.
config
代表该系统指标需要配置的参数,各参数说明如下:
下面选项关于收集进程的哪些信息
- "cpu_usage_related": 选填, 默认为
true
, 是否收集 cpu 使用率. - "mem_related": 选填, 默认为
true
, 是否收集内存相关的信息. - "cpu_time_related": 选填, 默认为
false
, 是否收集 cpu 时间相关的信息. - "io_related": 选填, 默认为
true
, 是否收集 I/O 相关的信息. - "threads_related": 选填, 默认为
false
, 是否收集该进程下的线程数. - "context_switch_related": 选填, 默认为
false
, 是否收集上下文切换相关的信息. - "file_descriptor_related": 选填, 默认为
false
, 是否收集文件描述符相关的信息. - "resource_limits": 选填, 默认为
false
, 是否收集资源限制相关的信息.
下面选项关于收集哪些进程的信息, 最终收集的进程, 为下方所有选项过滤出来的进程的并集
- "cpu_top_10": 选填, 默认为
false
, 是否收集 cpu 使用前十的进程信息, 对于linux, 使用ps -Ao pid= --sort=-pcpu | head -n 10
来过滤进程, 对于mac, 使用ps x -o pid= -r | head -n 10
来过滤进程. - "mem_top_10": 选项, 默认为
false
, 是否收集 mem 使用前十的进程信息, 对于linux, 使用ps -Ao pid= --sort=-pmem | head -n 10
来过滤进程, 对于mac, 使用ps x -o pid= -m | head -n 10
来过滤进程. - "supervisord": 选填, 默认为
false
, 是否收集被 supervisord 管理起来的进程信息, 使用ps -ef | grep supervisord | grep -v 'grep ' | awk '{print $2}'|xargs ps -o pid= --ppid
命令来过滤进程. - "daemon_tools": 选填, 默认为
false
, 是否收集被 daemontools 管理起来的进程信息, 使用ps -ef | grep daemontools | grep -v 'grep ' | awk '{print $2}'|xargs ps -o pid= --ppid
命令来过滤进程. - "pid_file": 选填, 填写某进程的 pid 文件, 从 pid 文件中获取 pid.
- "exe": 选填, 填写进程名称, 通过
pgrep exe
命令来过滤进程. - "pattern": 选填, 填写 pattern, 通过
pgrep -f pattern
来过滤进程. - "user": 选填, 填写 user, 通过
pgrep -u user
来过滤进程. - "system_unit": 选填, 通过
systemctl show xxx
来过滤进程. - "cgroup": 选填, 通过读取
/sys/fs/cgroup/**/cgroup.procs
文件获取 pid. 填写的内容以/
开头认为是cgroup.procs
所在的文件夹路径, 否则会认为填写的内容为前面给出的路径中的**
.
{
"type": "memcached",
"attributes": {
"memcached_get_hits": true,
"memcached_get_misses": true,
"memcached_evictions": true,
"memcached_limit_maxbytes": true,
"memcached_bytes": true,
"memcached_uptime": true,
"memcached_curr_items": true,
"memcached_total_items": true,
"memcached_curr_connections": true,
"memcached_total_connections": true,
"memcached_connection_structures": true,
"memcached_cmd_get": true,
"memcached_cmd_set": true,
"memcached_delete_hits": true,
"memcached_delete_misses": true,
"memcached_incr_hits": true,
"memcached_incr_misses": true,
"memcached_decr_hits": true,
"memcached_decr_misses": true,
"memcached_cas_hits": true,
"memcached_cas_misses": true,
"memcached_bytes_read": true,
"memcached_bytes_written": true,
"memcached_threads": true,
"memcached_conn_yields": true
}
}
attributes
代表收集的字段,当显式配置某字段为 false
时,将不再收集该字段的值,不配置或者配置字段值为true
时,收集该字段的值。各个字段的含义如下:
- "memcached_get_hits": get命中次数
- "memcached_get_misses": get未命中次数
- "memcached_evictions": 驱逐次数
- "memcached_limit_maxbytes": 限制大字节数
- "memcached_bytes": 字节数
- "memcached_uptime": 运行时间
- "memcached_curr_items": 当前数量
- "memcached_curr_connections": 当前连接数
- "memcached_total_connections": 总连接数
- "memcached_connection_structures": 连接结构数
- "memcached_cmd_get": get请求数
- "memcached_cmd_set": set请求数
- "memcached_delete_hits": delete命中次数
- "memcached_delete_misses": delete未命中次数
- "memcached_incr_hits": incr命中次数
- "memcached_incr_misses": incr未命中次数
- "memcached_decr_hits": decr命中次数
- "memcached_decr_misses": decr未命中次数
- "memcached_cas_hits": cas命中次数
- "memcached_cas_misses": cas未命中次数
- "memcached_bytes_read": 读取字节数
- "memcached_bytes_written": 响应字节数
- "memcached_threads": 线程数
- "memcached_conn_yields": 连接退让次数
时序数据库是专为处理高写入和高并发查询而研制的针对带有时间戳数据的数据库,时序数据库支持对时序数据进行函数计算与分组聚合,并具有持续聚合(Continuous Query)的能力。它可用于存储任何带有时间戳的数据,通常作用于实时监控、应用程序度量、传感器数据汇入和实时数据分析(详细的时序数据库介绍,请参考 时序数据库 )。
对于系统信息来说导出到 tsdb
比导出到 logdb
更具有使用价值,我们强烈建议在添加 metric runner
时将数据导出到 tsdb
而不是 logdb
。
自动导出到 tsdb
时, logkit
会根据不同的 metric
类型把数据导出到同一个 仓库
的不同 series
中,并设置好 timestmap
字段, 方便后续对数据的分析。
logkit 配置助手是 logkit 的一大特色,它为用户提供了可视化的配置页面,和良好的交互体验。logkit 的 metric 模块完善之后,前端的配置助手也对此提供了可视化配置的支持。下面将对配置助手的使用做一些说明:
- 以为一台机器添加 runner 为例,点击 “添加 Metric Runner“ 按钮,开始创建 Metric Runner
- 首先选择要收集的 Metric 信息类型,默认收集全部信息,点击下拉框可以选择不再收集;
- 然后选择每个想要收集的 Metric 的字段,通过“全选/全不选“按钮可以快速选中/取消选择所有的字段。注意:请至少为每个 Metric 信息选择一个字段;
- 然后填写相关 Metric 的配置信息,注意:有些 Metric 没有可以填写的配置,所以没有显示;
- 与普通日志的 Runner 一样,每个 Metric Runner 也需要填写一个 Sender,Sender的具体配置内容,可以参考 Senders Wiki
如果想要导出到
tsdb
,请将pandora_enable_tsdb
字段置为true
, 如下图所示: - 最后可以浏览一下配置文件的内容,避免之前有忽略的错误,并且可以配置 metric 信息收集的频率,默认是
3s
- 点击“确认并提交“后,一条收集 metric 信息的 runner 就创建成功了。
一份基本的系统信息采集的配置文件如下:
{
"name":"metric",
"metric":[
{
"type":"system",
"attributes":{}
},
{
"type":"processes",
"attributes":{}
},
{
"type":"netstat",
"attributes":{}
},
{
"type":"net",
"attributes":{},
"config":{}
},
{
"type":"mem",
"attributes":{}
},
{
"type":"swap",
"attributes":{}
},
{
"type":"kernel_vmstat"
},
{
"type":"kernel",
"attributes":{}
},
{
"type":"disk",
"attributes":{},
"config":{}
},
{
"type":"diskio",
"attributes":{},
"config":{}
},
{
"type":"cpu",
"attributes":{},
"config":{}
},
{
"type":"http",
"attributes":{},
"config":{}
}
],
"senders":[{
"name":"pandora_sender",
"sender_type":"pandora",
"pandora_ak":"<yourak>",
"pandora_sk":"<yoursk>",
"pandora_host":"https://pipeline.qiniu.com",
"pandora_repo_name":"metrics",
"pandora_region":"nb",
"pandora_schema_free":"true"
}]
}
可以看到配置文件的结构与用户日志数据采集的配置相似,只是去掉了原来的reader
和parser
模块,增加了metric
模块。
-
metric
模块包含了支持的各项系统信息采集的指标类别,下文会详细描述支持的各类指标以及指标的字段名称和含义说明。 -
senders
模块则与runner之数据收集的sender配置相同,由于metric的字段较多,建议使用pandora sender
时开启pandora_schema_free
功能,字段增加检测到的字段。
注意,若同时写了metric
模块以及reader
、parser
模块,则只识别metric
模块数据,reader
和parser
会被忽略。
快速开始 | Pandora | Readers | Parsers | Senders | Download | 七牛智能日志管理平台 | logkit-pro专业版