十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Wazuh Logcollector 配置参考:从 <localfile> 到 <socket> 与内部调优参数全解

Wazuh Logcollector 配置参考:从 <localfile> 到 <socket> 与内部调优参数全解 Wazuh Logcollector 配置参考从 到 与内部调优参数全解【免费下载链接】wazuhWazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.项目地址: https://gitcode.com/GitHub_Trending/wa/wazuh本文以 Wazuh 官方 Logcollector 配置参考文档为主体系统讲解localfile与socket两大 XML 配置段的全部参数、logcollector.*内部选项的取值范围与默认值并覆盖文本日志、JSON 日志、Windows 事件通道、macOS ULS、systemd journal、命令输出等 14 种日志格式的完整配置示例与性能调优、故障排查方案。读完本文你可以直接在 Agent 端复制运行任意一种日志采集配置并结合仓库中的 C 源码理解每个参数的底层行为。模块定位与配置文件Logcollector 模块负责从受监控端点Agent 所在主机收集日志并转发到 Wazuh Server 进行分析。它支持多种日志源纯文本文件、JSON 日志、Windows Event Log / Event Channel、macOS Unified Logging SystemULS、systemd journal以及命令输出。该模块是Agent-only模块——相关配置写在 Agent 的ossec.conf中而不是 Server。关键定位信息与源码目录结构对应配置文件/var/ossec/etc/ossec.conf仓库内模板见 etc/agent.confXML 段localfile基于文件的日志采集、socket基于套接字的日志接收内部选项前缀logcollector.*位于internal_options.confLinux/Unix或C:\Program Files (x86)\ossec-agent\internal_options.confWindows源码实现XML 解析在 src/config/src/localfile-config.c 的Read_Localfile函数中完成各日志格式的读取器位于 src/logcollector/src/ 目录如read_syslog.c、read_json.c、read_win_event_channel.c、read_journald.c、read_macos.c、read_multiline.c等主循环与状态持久化在 src/logcollector/src/logcollector.c模块总览与架构说明可参考 Logcollector 模块文档各采集器的详细行为见 Log Collectors。localfile段文件型日志采集localfile段配置基于文件的日志采集可以定义多个localfile块监控不同的日志源。从源码看src/config/src/localfile-config.c 中Read_Localfile函数依次解析的子元素包括location、command、log_format、frequency、alias、only-future-events、query含type/level属性、label、target、out_format、reconnect_time、age、exclude、ignore_binaries、ignore、restrict、multiline_regex、filter。其中源码还额外支持alias、ignore、restrict、multiline_regex等元素例如多行采集可与multiline_regex配合可在需要更细粒度控制时查阅源码确认用法。location指定要监控的日志文件或日志源路径。默认值无必填允许值静态文件路径如/var/log/syslog基于日期的strftime模式如/var/log/app-%y-%m-%d.log通配符模式如/var/log/app*.logWindows 环境变量仅 Windows如%WINDIR%\Logs\file.log特殊值macosmacOS ULS、journaldsystemd journalWindows 事件通道如Application、Security、System注意对 Windows 事件通道而言location的取值取决于log_format的设置log_format定义日志源的格式决定使用哪个采集器来读取和解析日志。默认值无必填允许值syslog— 纯文本日志文件一行一条事件json— JSON 格式日志一行一个 JSON 对象eventchannel— Windows Event ChannelWindows Vista 及以上eventlog— Windows Event Log所有 Windows 版本macos— macOS Unified Logging Systemjournald— Linux systemd journalcommand— 命令输出full_command— 含空行的完整命令输出audit— Linux audit 日志nmapg— NMAP grepable 输出mysql_log— MySQL 日志postgresql_log— PostgreSQL 日志djb-multilog— DJB multilog 格式multi-line— 多行日志条目注意格式决定使用哪个采集器读取日志源。从源码结构看每种格式对应 src/logcollector/src/ 中一个独立的读取器实现如eventchannel对应read_win_event_channel.cjournald对应read_journald.cmacos对应read_macos.c源码中还存在read_mssql_log.c、read_snortfull.c、read_wazuhalert.c等读取器可据此推断对应格式的解析边界command 与 frequency命令输出型日志源当log_format为command或full_command时需要额外指定要执行的命令与执行频率command要执行的命令字符串如df -hfrequency执行间隔秒源码中这两个子元素在 src/config/src/localfile-config.c 中定义为xml_localfile_command与xml_localfile_frequency是命令型采集的两个必备配套项。queryXPath 或谓词查询用于过滤事件仅 Windows Event Channel 与 macOS ULS 有效。默认值无可选允许值Windows Event ChannelXPath 查询或简单的 Event ID 过滤如Event/System[EventID7040]macOS ULS使用 process、subsystem、category、message 字段编写的谓词表达式注意Windows 同时支持简单查询与完整的 QueryList XML 格式macOS 则接受type与level属性Windows Event Channel 查询属性无查询值本身即 XPath 表达式macOS ULS 查询属性type— 要采集的日志条目类型允许值逗号分隔列表activity、log、trace示例query typelog,trace levelinfoprocess sshd/querylevel— 最低采集日志级别允许值default、info、debug示例query typelog levelinfosubsystem com.apple.securityd/query源码印证src/config/src/localfile-config.c 中query元素解析时type属性经w_logcollector_get_macos_log_type转换level属性仅接受default/info/debug三个取值非法值会被丢弃并输出警告。filter按字段过滤 journal 条目仅 journald 有效。默认值无可选允许值journal 字段名 PCRE2 正则模式格式filter fieldFIELD_NAME^regex_pattern$/filter注意可使用多个filter元素使用锚点^、$可做精确匹配示例filter fieldSYSLOG_IDENTIFIER^sshd$/filter源码印证src/config/src/localfile-config.c 中journald_add_condition_to_filter将每个filter节点编译为 PCRE2 条件且多个 journald 配置会在 w_logreader_journald_merge 中被合并因此对同一journald位置定义多个localfile块是允许的。only-future-events只采集 Agent 启动之后产生的事件仅 Windows Event Channel 有效。默认值yes允许值yes、no注意设为yes时忽略历史事件设为no时处理通道中所有可用事件源码印证src/config/src/localfile-config.c 中logf[pl].future 1表明默认值确为yes即默认不回放历史事件。target指定日志路由的目标套接字或文件。默认值无日志发送到标准分析队列允许值套接字名称或文件路径注意用于自定义日志路由和处理管道out_format自定义日志输出格式模板。默认值无使用基于log_format的默认格式允许值含字段占位符的格式字符串注意允许在转发前自定义日志事件的格式化方式ignore_binaries使用通配符模式时忽略二进制文件。默认值no允许值yes、no注意启用后通配符展开时会跳过疑似二进制的文件labels为采集到的日志事件添加自定义标签。默认值无可选允许值包含一个或多个label元素格式label keykey_namevalue/label注意标签会被注入 JSON 日志并作为元数据附加到其他格式的日志age指定读取日志文件的最大年龄针对通配符模式。默认值无读取所有文件允许值时间间隔如1d、12h、30m注意使用通配符时早于指定年龄的文件会被忽略exclude通配符展开时排除匹配模式的文件。默认值无可选允许值正则模式注意匹配该模式的文件不会纳入监控reconnect_time日志源连接失败后等待多长时间重连。默认值5s允许值秒级时间间隔注意适用于可断开重连的日志源如套接字、命令源码印证src/config/src/localfile-config.c 将reconnect_time初始化为DEFAULT_EVENTCHANNEL_REC_TIME且在 src/logcollector/src/config.c 中该值专门用于eventchannel格式的重连逻辑。socket段套接字型日志接收socket段配置基于套接字的日志接收Agent 监听指定套接字以接收外部发来的日志消息典型场景是第三方向 Agent 本机推送 syslog 消息。nameUnix 套接字路径或 Windows 命名管道名称。默认值无必填允许值Linux/Unix套接字路径如/var/run/custom.sockWindows命名管道名如custom-pipe注意Agent 必须有创建和读取该套接字的权限locationname的别名二选一。默认值无与name互斥允许值同name注意name与location必须指定其一mode套接字连接模式。默认值tcp允许值tcp、udp注意决定套接字通信使用的协议prefix为从套接字接收到的消息添加前缀。默认值无可选允许值任意字符串注意便于识别套接字消息的来源内部选项internal options配置文件/var/ossec/etc/internal_options.confLinux/Unix或C:\Program Files (x86)\ossec-agent\internal_options.confWindows。仓库中可直接对照 etc/internal_options.conf 查看每项默认值与官方注释。内部选项提供 Logcollector 的高级调优能力属于全局选项作用于所有日志采集操作。注意该文件头部注释明确提醒这是运行时修改文件修改前需清楚其影响。以下为全部logcollector.*选项默认值与 etc/internal_options.conf 逐项一致选项默认值取值范围说明logcollector.loop_timeout2秒正整数检测日志文件变化的检查间隔logcollector.open_attempts0无限重试2–998或0无限打开日志文件失败时的重试次数logcollector.remote_commands0禁用0/1是否接受来自 manager 的远程命令修改采集行为logcollector.vcheck_files64秒0–1024文件元数据轮转、删除检查间隔logcollector.max_lines10000100–1000000或0禁用单次迭代从同一文件读取的最大行数防止单个繁忙日志独占处理时间logcollector.max_files10001–100000同时监控的文件数上限防止资源耗尽logcollector.sock_fail_time300秒1–3600套接字连接失败后重试等待时间logcollector.input_threads4正整数读取日志文件的输入线程数logcollector.queue_size1024128–220000内部输出队列大小更大可提升突发处理能力但增加内存占用logcollector.sample_log_length64字符1–4096错误信息中显示的日志样本最大长度logcollector.rlimit_nofile11001024–1048576Logcollector 可打开的文件描述符上限必须大于max_fileslogcollector.force_reload0禁用0/1定期关闭并重开文件句柄用于应对某些日志轮转方案logcollector.reload_interval64秒1–86400force_reload1时的重加载间隔须 ≥vcheck_fileslogcollector.reload_delay1000毫秒0–30000强制重加载时关闭与重开之间的延迟避免竞态logcollector.exclude_files_interval86400秒/24 小时1–172800刷新排除文件列表的间隔logcollector.state_interval60秒0–36000禁用更新 Logcollector 状态文件的间隔0表示不创建/不更新状态文件logcollector.debug00无 /1一级 /2完整调试调试级别仅排障时调高从源码结构看src/logcollector/src/logcollector.c 中声明的全局变量loop_timeout、vcheck_files、maximum_lines、sample_log_length、force_reload、reload_interval、reload_delay、free_excluded_files_interval、state_interval、N_INPUT_THREADS、OUTPUT_QUEUE_SIZE等一一对应上述选项说明这些参数都是主采集循环的真实运行时参数而非名义配置。配置示例以下示例完整继承自官方参考文档可直接放入 Agent 的ossec.conflocalfile需置于agent_config上下文内。监控基本日志文件在 Linux 上监控纯文本 syslog 文件localfile location/var/log/syslog/location log_formatsyslog/log_format /localfile监控 JSON 日志文件采集 JSON 格式的应用日志localfile location/var/log/app.json/location log_formatjson/log_format labels label keyappmyapp/label label keyenvironmentproduction/label /labels /localfile监控基于日期的日志文件使用strftime模式监控按日期命名的日志文件localfile location/var/log/application-%y-%m-%d.log/location log_formatsyslog/log_format /localfile此配置会监控类似application-26-07-03.log年-月-日的文件。监控通配符模式监控所有匹配通配符模式的日志文件localfile location/var/log/app*.log/location log_formatsyslog/log_format exclude\.old$/exclude age7d/age /localfile此配置监控所有以app开头、以.log结尾的文件排除.old后缀文件以及超过 7 天的旧文件。Windows Event Channel在 Vista 及以上版本监控 Windows Security 事件localfile locationSecurity/location log_formateventchannel/log_format /localfileWindows Event Channel 带查询过滤按 Event ID 过滤 Windows 事件localfile locationSystem/location log_formateventchannel/log_format queryEvent/System[EventID7040]/query /localfile按事件级别过滤只采集错误与严重事件localfile locationSystem/location log_formateventchannel/log_format query QueryList Query Id0 PathSystem Select PathSystem*[System[(Levellt;3)]]/Select /Query /QueryList /query /localfileWindows Event Log传统 API使用传统 API 监控 Windows Application 日志兼容所有 Windows 版本localfile locationApplication/location log_formateventlog/log_format /localfileWindows 环境变量在文件路径中使用 Windows 环境变量仅 Windowslocalfile location%WINDIR%\System32\LogFiles\Firewall\pfirewall.log/location log_formatsyslog/log_format /localfilemacOS Unified Logging System采集 macOS 认证相关日志localfile locationmacos/location log_formatmacos/log_format query typetrace,log,activity levelinfo (process sudo) or (process sessionlogoutd and message contains logout is complete.) or (process sshd) /query /localfile按特定 subsystem 过滤localfile locationmacos/location log_formatmacos/log_format query typelog levelinfo (subsystem com.apple.securityd) or (subsystem com.apple.opendirectoryd) /query /localfileLinux systemd Journal通过 journald 监控 SSH 认证localfile locationjournald/location log_formatjournald/log_format filter fieldSYSLOG_IDENTIFIER^sshd$/filter /localfile通过 journald 采集 Docker 日志经 systemd journal 监控指定 Docker 容器日志localfile locationjournald/location log_formatjournald/log_format filter fieldCONTAINER_NAME^my-container$/filter /localfile监控所有 Docker 容器localfile locationjournald/location log_formatjournald/log_format filter field_TRANSPORT^journal$/filter /localfile套接字型日志采集创建 Unix 套接字接收 syslog 消息socket name/var/run/custom.sock/name modetcp/mode prefixcustom-app/prefix /socket多行日志采集采集多行日志条目如 Java 堆栈跟踪localfile location/var/log/app.log/location log_formatmulti-line/log_format /localfile命令输出采集采集命令的输出localfile log_formatcommand/log_format commanddf -h/command frequency360/frequency /localfile性能调优高日志量场景日志量大的环境可增大线程数与队列大小logcollector.input_threads8 logcollector.queue_size4096 logcollector.max_lines50000监控文件数众多的场景通配符监控大量文件时提高文件数量上限注意rlimit_nofile必须高于max_files这一点在 etc/internal_options.conf 的注释中被明确强调logcollector.max_files5000 logcollector.rlimit_nofile5500慢速或不稳定的文件系统针对慢存储或网络文件系统调整时序参数logcollector.loop_timeout5 logcollector.vcheck_files120 logcollector.force_reload1 logcollector.reload_interval300监控与状态观察查看 Logcollector 状态在 Agent 状态文件中查看活动日志源# Linux/Unix cat /var/ossec/var/run/wazuh-logcollector.state # Windows type C:\Program Files (x86)\ossec-agent\wazuh-logcollector.state从源码看状态文件对应 src/logcollector/src/logcollector.c 中的files_status哈希表记录每个文件的路径与读取偏移由w_save_file_status/w_load_files_status在停止/启动时持久化与恢复因此重启 Agent 后采集会从断点继续而不是从头重读整个文件。查看 Logcollector 日志# Linux/Unix tail -f /var/ossec/logs/ossec.log | grep logcollector # Windows Get-Content C:\Program Files (x86)\ossec-agent\ossec.log -Wait | Select-String logcollector启用调试模式临时开启调试日志# Add to local_internal_options.conf echo logcollector.debug2 /var/ossec/etc/local_internal_options.conf # Restart agent systemctl restart wazuh-agent故障排查文件未被监控检查文件权限ls -la /var/log/application.log确保 Wazuh Agent 用户wazuh或ossec有读权限。验证配置grep -A5 location/var/log/application.log /var/ossec/etc/ossec.conf检查文件数上限grep max_files /var/ossec/etc/internal_options.conf源码印证src/config/src/localfile-config.c 中当current_files maximum_files时配置解析会直接输出文件数量超限警告并拒绝新增localfile——这正是配置已写但文件未生效的常见原因。CPU 占用过高降低文件检查频率logcollector.loop_timeout5 logcollector.vcheck_files120限制突发读取logcollector.max_lines5000低资源系统减少线程数logcollector.input_threads2事件未转发检查队列大小logcollector.queue_size2048验证 Agent 连接状态/var/ossec/bin/agent_control -ls检查速率限制查看agent.conf中的 EPS每秒事件数限制。Windows Event Channel 问题验证通道存在Get-WinEvent -ListLog * | Select-String ChannelName检查 only-future-events 设置如需历史事件localfile locationSecurity/location log_formateventchannel/log_format only-future-eventsno/only-future-events /localfilemacOS ULS 未采集日志验证权限macOS 要求 Wazuh Agent 具备完全磁盘访问权限Full Disk Access才能读取 ULS 日志。检查查询语法# 手动测试查询 log show --predicate process sshd --info只允许一个 macOS localfile确保只有一个log_formatmacos的localfile块存在。套接字连接失败验证套接字路径存在ls -la /var/run/custom.sock检查套接字权限chmod 660 /var/run/custom.sock chown wazuh:wazuh /var/run/custom.sock增大重试间隔logcollector.sock_fail_time60相关参考Logcollector 模块 — 模块总览与架构Log Collectors — 各采集器详细说明Client Configuration — Agent 连接设置Agent Configuration Reference — Agent 全部配置选项【免费下载链接】wazuhWazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.项目地址: https://gitcode.com/GitHub_Trending/wa/wazuh创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表