📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

在当今的数字化运维和业务监控中,日志数据被誉为“蕴含金矿的沙砾”。无论是排查故障、监控服务器指标,还是分析用户行为,一套高效、实时的日志分析平台都是必不可少的。

传统的 ELK(Elasticsearch, Logstash, Kibana)栈虽然强大,但往往面临资源消耗高、维护复杂、存储成本昂贵等痛点。INFINI Easysearch 的出现,为企业提供了一个更轻量、更高效、且完全兼容现有生态的替代方案。

本文将带你从零开始,在 10 分钟内构建一套基于 Easysearch 的现代化日志分析平台。


为什么要选择 Easysearch 作为日志底座? #

在开始构建之前,我们先明确为什么 Easysearch 是比原生 Elasticsearch 更适合的选择:

  1. 无缝兼容:完全兼容 Elasticsearch 的 API 和生态(Filebeat, Logstash, Fluentd 等均可直接接入),无需修改任何业务代码。
  2. 存储降本:内置 ZSTD 压缩算法,相比原生 ES 可节省 40%-50% 的磁盘空间,对于海量日志场景价值巨大。
  3. 资源省:优化的内存管理和垃圾回收机制,更低的 CPU 开销,让你的硬件能跑更多的数据。
  4. 稳定安全:企业级的断路器机制和流控,防止突发日志流量冲垮集群。

方案架构 #

为了保持“开箱即用”的简洁性,我们将构建如下架构:

  • 数据源:服务器系统日志或应用日志(Nginx/Java App)。
  • 采集端Filebeat(轻量级日志采集器)。
  • 存储与分析引擎INFINI Easysearch(核心组件)。
  • 管理与可视化:通过内置 UI 或安装 INFINI Console(统一管控平台,可选)进行管理。

第一步:部署 Easysearch 搜索引擎 #

Easysearch 的安装非常简单,支持所有主流操作系统。这里以 Linux 环境为例。

1. 下载与安装 #

访问 INFINI Labs 官网下载或使用一键安装脚本进行安装(以 aarch64 为例):

# 准备目录
mkdir -p /data

# 下载并解压,并安装到 /data/easysearch 目录
curl -sSL https://get.infini.cloud | bash -s -- -p easysearch -d /data/easysearch

# 创建用户
groupadd -r -g 602 easysearch && \
useradd -r -l -u 602 -g 602 -s /bin/bash -d /home/easysearch -c "INFINI Easysearch" easysearch

# 初始化(管理员访问密码会在完成时在终端上显示,请妥善保管)
cd /data/easysearch && bin/initialize.sh -s

# 调整目录权限
chown -R easysearch:easysearch /data/easysearch

2. 极简配置 #

对于单节点测试环境,我们需要打开兼容版本参数开关, 以下是除安全配置外的设置。

cluster.name: my-log-application
node.name: node-1
node.attr.rack: r1
path.data: data
path.logs: logs
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]
elasticsearch.api_compatibility: true
elasticsearch.api_compatibility_version: "9.2.4"

3. 启动服务 #

# 后台启动 Easysearch(非 root 用户)
runuser -u easysearch -- /data/easysearch/bin/easysearch -d -p /data/easysearch/easysearch.pid

# 验证启动是否成功
curl -ku 'admin:YOUR_PASSWORD' https://localhost:9200

如果你看到类似以下的 JSON 返回,说明 Easysearch 已经就绪。

{
  "name": "node-1",
  "cluster_name": "my-log-application",
  "cluster_uuid": "97jTzBdyS56oju8F88Oukw",
  "version": {
    "number": "9.2.4",
    "build_flavor": "default",
    "build_type": "tar",
    "build_hash": "f9f6be82d56cc71ad6b0f67b6da32a7898c4c23a",
    "build_date": "2025-12-17T01:49:20.267870870Z",
    "build_snapshot": false,
    "lucene_version": "8.11.4",
    "minimum_wire_compatibility_version": "7.10.0",
    "minimum_index_compatibility_version": "7.0.0"
  },
  "tagline": "You Know, for Search"
}

注意:Easysearch 为了保持生态兼容性,我们需要根据生态工具的版本来开启兼容版本参数。


第二步:配置日志采集(以 Filebeat 为例) #

由于 Easysearch 的高度兼容性,你可以直接使用官方的 Filebeat,无需安装任何特殊插件。

1. 安装 Filebeat #

下载并解压与 Easysearch 兼容的 Filebeat 版本(建议 7.10.x 或更高版本,通常都兼容):

# 根据实际场景定义下载版本
VER=9.2.4
# 获取当前系统的架构
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/;s/armv7l/armhf/')
cd /data
# 下载指定版本的 Filebeat
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${VER}-linux-${ARCH}.tar.gz
# 解压并删除下载文件
tar xzvf filebeat-${VER}*.tar.gz && rm -rf filebeat-${VER}*.tar.gz
# 重命名目录
mv filebeat-${VER}* filebeat

注意:此处,我使用的是最新发布的 filebeat 版本。

2. 配置输出 #

修改 filebeat.yml,设置日志输入路径和输出目标。这里最关键的是:直接将 Output 指向 Easysearch 的 9200 端口

# filebeat.yml

filebeat.inputs:
  - type: filestream
    id: system_log
    enabled: enable
    paths:
      - /var/log/*.log
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.enabled: false
output.elasticsearch:
  hosts: ["es.infini.cloud:9200"]
  preset: balanced
  protocol: "https"
  # 配置为 easysearch ca 证书路径
  ssl.certificate_authorities: /data/easysearch/config/ca.crt
  username: "admin"
  password: "YOUR_PASSWORD"

注意:Easysearch 目前还不支持 constant_keyword 类型,所在需要关闭 setup.template.enabled 避免模板初始化失败。

3. 配置数据压缩 #

通过 Easysearch 内置 UI 中的开发工具,可快速为 filebeat 索引配置 ZSTD 压缩

# 设置 ZSTD 压缩模板
PUT _template/template_filebeat"
{
  "index_patterns": [
    "filebeat-*"
  ],
  "order": 0,
  "settings": {
    "index.codec": "ZSTD",
    "index.source_reuse": true
  }
}

4. 启动采集 #

# 查看最终配置
grep -Ev '^[[:space:]]*(#|$)' filebeat.yml

# 增加 hosts 映射(使用 root 操作)
echo "127.0.0.1 es.infini.cloud" >> /etc/hosts

# 运行 Filebeat 进行日志采集
./filebeat -e

Filebeat 启动后,会立即开始读取日志文件并发送给 Easysearch。你可以看到控制台输出 Connection 成功的日志。


第三步:验证与分析 #

为了获得更好的体验,强烈建议直接访问内置 UI 来查看索引。


进阶技巧:如何让日志平台更高效? #

至此,你的第一个日志平台已经运行起来了。为了让它在生产环境中更强大,建议关注以下 Easysearch 特有功能:

1. 开启 ZSTD 压缩节省成本 #

我们在第一步配置中添加了 index.codec: ZSTD。对于日志这种重复率极高的文本数据,ZSTD 压缩通常能将存储空间压缩到原来的 50% 甚至更低。这意味着同样的磁盘,你可以存储两倍时长的日志。

2. 利用生命周期管理 (ILM) #

日志数据通常具有时效性(如只查最近 7 天)。Easysearch 支持完善的索引生命周期管理,你可以配置策略自动删除过期日志,或将旧日志从热节点迁移到冷节点。

3. 读写分离与流量控制 #

如果你的日志量巨大(例如每天 TB 级),Easysearch 的流量复制写加速功能可以确保在高并发写入时,查询依然流畅,不会出现 OOM(内存溢出)导致的节点崩溃。


结语 #

通过 Easysearch,我们几乎没有改变传统 ELK 的架构习惯,却获得了一个性能更强、成本更低、维护更简单的日志分析底座。

无论是从 Elasticsearch 迁移,还是从零构建,Easysearch 真正做到了**“开箱即用”**与**“平滑替换”**。现在,就开始探索你的数据价值吧!


想了解更多关于 Easysearch 的高级特性?欢迎访问 INFINI Labs 官网 获取更多技术文档与支持。

参考: 如何使用 Filebeat 8 连接 Easysearch