如何将单台主机osquery代理数据采集至中央服务器?配置排查求助
osquery代理数据采集配置问题排查
一、现有配置的语法错误
你的主机和服务器配置存在JSON语法错误,这是触发Error reading config: Error parsing the config JSON的直接原因:
修正后的主机配置:
//主机配置 { "options": { "distributed_plugin": "tls", "distributed_interval": "3600", "enroll_tls_endpoint": "https://10.182.2.142/enroll", "tls_server_certs": "/opt/osquery/share/osquery/certs/certs.pem", "tls_hostname": "SERVER_IP", "config_plugin": "filesystem", "logger_plugin": "filesystem" } }
- 修正点:
"tls_server_certs"行末尾添加逗号;移除"logger_plugin"行末尾多余的逗号。
修正后的服务器配置:
//服务器配置 { "options": { "distributed_server": "true", "distributed_plugin": "tls", "distributed_interval": "3600", "tls_server_certs": "/opt/osquery/share/osquery/certs/certs.pem" } }
- 此配置语法无错误,但功能上需补充后续配置以实现数据接收。
二、服务器未收到日志的核心问题
日志存储路径错误:主机配置中
logger_plugin设为filesystem,日志会保存在主机本地(默认路径/var/log/osquery/),不会上传到中央服务器。若要将日志发送至服务器,需修改配置:"logger_plugin": "tls", "logger_tls_endpoint": "https://10.182.2.142/log"同时服务器需配置对应的TLS日志接收端点。
分布式查询未配置:你要获取主机实时进程数据,需在服务器端创建分布式查询任务,主机才会按
distributed_interval(当前设为3600秒)拉取查询并返回结果。若需更实时的数据,可缩短distributed_interval,或启用事件表(如process_events)配合持续日志上报。
三、事件发布器禁用的说明
日志中Event publisher not enabled的提示是默认行为,若不需要对应功能(如BPF、audit等)可忽略;但如果要采集实时进程事件(而非静态进程列表),需启用对应发布器,例如在主机配置中添加:
"enable_bpf": "true"
具体配置需匹配你的操作系统环境。
四、数据采集流程修正步骤
- 修复主机配置的JSON语法错误,调整
logger_plugin为tls并配置日志端点。 - 确保服务器端已配置完整的TLS服务(包括enroll、log、distributed查询端点),可使用osquery自带的
osqueryd --distributed_server模式或第三方管理平台。 - 在服务器端创建分布式查询,内容为
SELECT * FROM processes;(静态进程列表)或SELECT * FROM process_events;(实时进程事件)。 - 重启主机和服务器的osquery服务,等待
distributed_interval时间后检查服务器是否收到数据。
内容的提问来源于stack exchange,提问作者Mirarani Choudhury
相关产品推荐
相关产品推荐

