系统模块

编辑

系统模块允许您监控服务器。由于系统模块始终应用于本地服务器,因此不需要 hosts 配置选项。

默认指标集为 cpuloadmemorynetworkprocessprocess_summarysocket_summaryfilesystemfsstatuptime。要禁用默认指标集,请在 modules.d/system.yml 配置文件中将其注释掉。如果 _所有_ 指标集都被注释掉并且系统模块已启用,则 Metricbeat 将使用默认指标集。

请注意,某些指标集可能会访问 /proc 以收集进程信息,并且内核调用 ptrace_may_access() 来检查权限可能会被 AppArmor 和其他 LSM 软件阻止,即使系统模块不直接使用 ptrace

指标的收集方式和时间

系统模块监控的某些指标需要收集多个值。例如,system.process.cpu.total.norm.pct 字段报告进程自上次事件以来花费的 CPU 时间百分比。要确定此百分比,进程需要至少出现两次,以便可以计算性能增量。

请注意,在某些情况下,如果进程的可用时间不足以包含在两个指标收集周期中,则系统模块指标集中可能会缺少此类字段。

仪表盘

编辑

系统模块附带一个预定义的仪表盘。例如

metricbeat system dashboard

所需权限

编辑

系统指标集收集不同类型的指标数据,这可能需要专用的权限才能获取。出于安全原因,建议授予尽可能低的权限。本节阐述了特定指标集必须存在的权限。

请注意,现代 Linux 实现将传统上与超级用户关联的特权划分为不同的单元,称为能力,可以独立启用和禁用。能力是每个线程的属性。

CPU 统计信息(空闲、irq、用户、系统、iowait、softirq、核心、nice、steal、total)应该在没有提升权限的情况下可用。

load

编辑

CPU 负载数据(1 分钟、5 分钟、15 分钟、核心)应该在没有提升权限的情况下可用。

memory

编辑

内存统计信息(交换、总计、已用、可用、实际)应该在没有提升权限的情况下可用。

network

编辑

接口的网络指标(输入、输出、错误、丢弃、字节、数据包)应该在没有提升权限的情况下可用。

process

编辑

进程执行数据(状态、内存、cpu、cmdline)应该对授权用户可用。

如果 beats 进程以较低权限的用户身份运行,则可能无法读取属于其他用户的进程数据。该问题应在应用程序日志中报告

2019-12-23T13:32:06.457+0100    DEBUG   [processes]     process/process.go:475  Skip process pid=235: error getting process state for pid=235: Could not read process info for pid 23

process_summary

编辑

常规进程摘要(未知、已终止、总计、睡眠、运行、空闲、停止、僵尸)应该在没有提升权限的情况下可用。请注意,如果进程数据属于其他用户,则它将被计为未知值(应用程序日志中不会报告任何错误)。

socket_summary

编辑

已使用的套接字摘要(TCP、UDP、计数、侦听、已建立、等待等)应该在没有提升权限的情况下可用。

entropy

编辑

熵数据(可用、池大小)需要访问 /proc/sys/kernel/random 路径。否则将报告错误。

core

编辑

每个 CPU 核心的使用统计信息(空闲、irq、用户、系统、iowait、softirq、核心、nice、steal、total)应该在没有提升权限的情况下可用。

diskio

编辑

磁盘 IO 指标(io、读取、写入)应该在没有提升权限的情况下可用。

socket

编辑

每个新 TCP 套接字的事件应该对授权用户可用。

如果 beats 进程以较低权限的用户身份运行,则可能无法查看属于其他用户的套接字数据。

service

编辑

Systemd 服务数据(内存、任务、状态)应该对授权用户可用。

如果 beats 进程以较低权限的用户身份运行,则可能无法读取属于其他用户的进程数据。该问题应在应用程序日志中报告

2020-01-02T08:19:50.635Z	INFO	module/wrapper.go:252	Error fetching data for metricset system.service: error getting list of running units: Rejected send message, 2 matched rules; type="method_call", sender=":1.35" (uid=1000 pid=4429 comm="./metricbeat -d * -e ") interface="org.freedesktop.systemd1.Manager" member="ListUnitsByPatterns" error name="(unset)" requested_reply="0" destination="org.freedesktop.systemd1" (uid=0 pid=1 comm="/usr/lib/systemd/systemd --switched-root --system ")

filesystem

编辑

文件系统指标数据(总计、可用、类型、挂载点、文件、可用、已用)应该在没有提升权限的情况下可用。

fsstat

编辑

Fsstat 指标数据(总大小、可用、总计、已用计数)应该在没有提升权限的情况下可用。

uptime

编辑

正常运行时间指标数据(持续时间)应该在没有提升权限的情况下可用。

raid

编辑

RAID 指标数据(块、磁盘)需要访问 /sys/block 挂载点和所有引用的设备。否则将报告错误。

示例配置

系统模块支持 模块 中描述的标准配置选项。这是一个示例配置

metricbeat.modules:
- module: system
  metricsets:
    - cpu             # CPU usage
    - load            # CPU load averages
    - memory          # Memory usage
    - network         # Network IO
    - process         # Per process metrics
    - process_summary # Process summary
    - uptime          # System Uptime
    - socket_summary  # Socket summary
    #- core           # Per CPU core usage
    #- diskio         # Disk IO
    #- filesystem     # File system usage for each mountpoint
    #- fsstat         # File system summary metrics
    #- raid           # Raid
    #- socket         # Sockets and connection info (linux only)
    #- service        # systemd service information
  enabled: true
  period: 10s
  processes: ['.*']

  # Configure the mount point of the host’s filesystem for use in monitoring a host from within a container
  #hostfs: "/hostfs"

  # Configure the metric types that are included by these metricsets.
  cpu.metrics:  ["percentages","normalized_percentages"]  # The other available option is ticks.
  core.metrics: ["percentages"]  # The other available option is ticks.

  # A list of filesystem types to ignore. The filesystem metricset will not
  # collect data from filesystems matching any of the specified types, and
  # fsstats will not include data from these filesystems in its summary stats.
  # If not set, types associated to virtual filesystems are automatically
  # added when this information is available in the system (e.g. the list of
  # `nodev` types in `/proc/filesystem`).
  #filesystem.ignore_types: []

  # These options allow you to filter out all processes that are not
  # in the top N by CPU or memory, in order to reduce the number of documents created.
  # If both the `by_cpu` and `by_memory` options are used, the union of the two sets
  # is included.
  #process.include_top_n:

    # Set to false to disable this feature and include all processes
    #enabled: true

    # How many processes to include from the top by CPU. The processes are sorted
    # by the `system.process.cpu.total.pct` field.
    #by_cpu: 0

    # How many processes to include from the top by memory. The processes are sorted
    # by the `system.process.memory.rss.bytes` field.
    #by_memory: 0

  # If false, cmdline of a process is not cached.
  #process.cmdline.cache.enabled: true

  # Enable collection of cgroup metrics from processes on Linux.
  #process.cgroups.enabled: true

  # A list of regular expressions used to whitelist environment variables
  # reported with the process metricset's events. Defaults to empty.
  #process.env.whitelist: []

  # Include the cumulative CPU tick values with the process metrics. Defaults
  # to false.
  #process.include_cpu_ticks: false

  # Raid mount point to monitor
  #raid.mount_point: '/'

  # Configure reverse DNS lookup on remote IP addresses in the socket metricset.
  #socket.reverse_lookup.enabled: false
  #socket.reverse_lookup.success_ttl: 60s
  #socket.reverse_lookup.failure_ttl: 60s

  # Diskio configurations
  #diskio.include_devices: []

  # Filter systemd services by status or sub-status
  #service.state_filter: ["active"]

  # Filter systemd services based on a name pattern
  #service.pattern_filter: ["ssh*", "nfs*"]

指标集

以下指标集可用