独立部署 Elastic Agent 8.0:从零到一构建可观测性数据管道

发布时间:2026/6/11 10:09:13

独立部署 Elastic Agent 8.0:从零到一构建可观测性数据管道 1. 为什么选择独立部署 Elastic Agent 8.0在大多数场景下使用Fleet管理的Elastic Agent确实是最佳选择它能自动处理代理升级、配置分发等繁琐工作。但真实生产环境中我们总会遇到一些特殊需求比如严格的内网隔离环境、需要深度定制采集逻辑、或者对第三方服务调用有严格限制的场景。这时候独立部署模式就成了刚需。我去年负责过一个金融行业的项目他们的安全合规要求禁止任何形式的中心化管理工具接入生产环境。当时就是靠着独立部署方案成功实现了日志和指标的采集。这种模式最大的特点是完全自主可控所有配置都保存在本地不依赖任何外部管理服务。独立部署适合以下三类典型场景无外网环境比如军工、金融等隔离网络根本无法连接Fleet服务器定制化需求需要修改默认采集逻辑比如添加自定义字段解析规则资源受限环境老旧设备跑不动完整的Fleet管理组件但要注意选择独立部署就意味着你要自己处理以下问题手动管理所有Agent的版本升级每个节点的配置都需要单独维护故障排查完全靠自己2. 准备部署环境2.1 硬件与软件要求根据官方文档和我的实测经验Elastic Agent 8.0对系统资源的要求比7.x版本略有提升。这里给出一个生产环境推荐配置组件最低要求推荐配置CPU2核4核内存2GB4GB磁盘空间500MB1GB操作系统Linux内核3.10Linux内核4.14特别提醒如果你要采集的是高频日志比如每秒超过1000条的Nginx访问日志建议把内存调整到8GB以上。我在一个电商项目中就遇到过因为内存不足导致日志丢失的情况。2.2 下载安装包官方提供了多种格式的安装包我的建议是Linux服务器优先选择tar.gz格式方便后续升级Windows环境用zip包如果必须用deb/rpm记得修改systemd配置增加内存限制下载命令示例国内用户建议加上代理参数# Linux curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.1-linux-x86_64.tar.gz # macOS curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.1-darwin-x86_64.tar.gz # Windows wget https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.1-windows-x86_64.zip -OutFile elastic-agent-8.0.1-windows-x86_64.zip解压后目录结构是这样的elastic-agent-8.0.1-linux-x86_64/ ├── data/ # 运行时数据 ├── elastic-agent # 主程序 ├── elastic-agent.yml # 主配置文件 ├── fleet.yml # Fleet相关配置 └── README.md3. 配置数据采集3.1 生成初始配置新手最容易犯的错误就是直接手动编辑elastic-agent.yml。正确做法是先用Kibana生成基础配置登录Kibana进入Management Fleet创建新策略命名为standalone-policy添加需要的集成比如Nginx、System等点击Download policy获取配置文件这样生成的配置已经包含了正确的输出设置Elasticsearch地址、证书等预配置的集成参数必要的权限声明3.2 自定义日志采集以Nginx日志为例默认配置可能不满足你的需求。需要修改如下部分inputs: - type: logfile id: nginx-access streams: - paths: - /var/log/nginx/access.log processors: - add_fields: fields: log_type: nginx_access - dissect: tokenizer: %{clientip} %{ident} %{auth} [%{timestamp}] \%{verb} %{request} HTTP/%{httpversion}\ %{status} %{size} \%{referrer}\ \%{agent}\ field: message target_prefix: 几个实用技巧使用dissect替代grok提升性能添加log_type字段方便后续筛选对于多行日志如Java堆栈要配置multiline规则3.3 安全认证配置强烈建议使用API Key而不是用户名密码。创建步骤在Kibana执行POST /_security/api_key { name: elastic-agent-key, role_descriptors: { elastic-agent: { cluster: [monitor], indices: [ { names: [logs-*,metrics-*], privileges: [auto_configure,create_doc] } ] } } }将返回的encoded值填入配置outputs: default: type: elasticsearch hosts: [https://es-node:9200] api_key: VnVhQ2ZHY0JD...dEpGVjo1NlJZQQ4. 服务化运行与管理4.1 安装为系统服务不同系统的服务化命令# Linux/macOS(tar包) sudo ./elastic-agent install # DEB sudo systemctl enable elastic-agent sudo systemctl start elastic-agent # Windows .\elastic-agent.exe install常见问题处理如果遇到证书错误添加--insecure参数内存不足时修改service文件中的LimitMEMLOCKinfinity日志输出到/var/log/elastic-agent/Linux4.2 日常维护命令检查服务状态sudo elastic-agent status查看详细日志journalctl -u elastic-agent -f # systemd系统升级步骤下载新版本包停止服务替换二进制文件对比合并配置变更重启服务5. 实战问题排查5.1 数据未入库排查按照这个顺序检查确认Agent服务状态正常检查/var/log/elastic-agent/下的日志测试Elasticsearch连通性curl -k --api-key API_KEY https://es-node:9200/_cluster/health确认索引模板已创建curl -k --api-key API_KEY https://es-node:9200/_index_template/logs-nginx*5.2 性能调优建议遇到高负载时调整这些参数agent: logging: level: warning # 降低日志级别 queue: mem: events: 4096 # 增大内存队列 flush: timeout: 5s min_events: 512对于Windows系统还需要修改注册表reg add HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management /v LockPagesInMemory /t REG_DWORD /d 16. 进阶配置技巧6.1 多租户隔离方案在大规模部署时可以通过标签实现租户隔离inputs: - type: logfile tags: [tenant:A] streams: - paths: [/var/log/tenantA/*.log] - type: logfile tags: [tenant:B] streams: - paths: [/var/log/tenantB/*.log]然后在Kibana中基于标签创建不同视图。我曾经用这个方案为一家SaaS公司实现了200客户的日志隔离。6.2 自定义集成开发当官方集成不满足需求时可以自己开发创建集成目录结构my-integration/ ├── manifest.yml ├── CHANGELOG.md └── agent/ └── config.yml编写采集逻辑参考Filebeat模块打包为zip上传到Kibana注意要定期检查集成包的兼容性特别是在升级Elastic Stack时。

相关新闻