前言
搜索系统一旦构建完成并提供给用户使用,就成为了一个”不能停止的系统”。 当用户在日常工作中依赖搜索功能时,搜索不可用的时间将直接导致业务停滞。
本文将以实战手册的形式,介绍如何通过监控、备份和故障处理来稳定运维 Fess。
目标读者
在生产环境中运维 Fess 的管理员
希望确保搜索系统稳定运行的人员
具备系统运维基础知识的人员
运维全貌
Fess 的稳定运维由以下三大支柱构成:
监控:尽早发现问题
备份:保全数据
故障处理:问题发生时迅速恢复
监控
健康检查
Fess 通过 REST API 提供健康检查端点。
GET http://localhost:8080/api/v1/health
正常时返回 HTTP 200。 通过外部监控工具(如 Nagios、Zabbix、Datadog 等)定期调用该端点,可以监控 Fess 的运行状态。
系统信息确认
在管理界面的[系统信息]中,可以确认以下信息。
爬取信息
可以查看最近一次爬取执行的结果(处理文档数、错误数等)。 用于确认爬取是否正常完成。
系统信息
可以查看 Fess 和 OpenSearch 的版本、JVM 内存使用量、索引文档数等。
应监控的指标
| 指标 | 确认方法 | 需要注意的状态 |
|---|---|---|
| Fess 进程 | Health API | 无响应或 HTTP 500 |
| OpenSearch 集群 | Cluster Health API | 状态为 yellow / red |
| JVM 堆使用率 | 系统信息 | 持续超过 80% |
| 磁盘使用率 | OS 命令 | 超过 85% |
| 爬取结果 | 爬取信息 | 错误数急增、处理数骤减 |
| 搜索响应 | 搜索日志 | 响应时间显著增加 |
爬取完成通知
Fess 具有在检测到错误日志或搜索引擎故障时发送通知的功能。 通过配置 Slack 或 Google Chat 的 Webhook,可以立即掌握异常情况。
备份
备份对象
Fess 环境的备份对象大致分为以下两类。
1. 配置数据
包括爬取设置、用户信息、词典数据等通过管理界面配置的信息。 可以在 Fess 管理界面的[系统信息] > [备份]中获取配置数据的备份。
2. 索引数据
通过爬取收集的文档索引。 使用 OpenSearch 的快照功能进行备份。
备份策略
| 对象 | 频率 | 保留期限 | 方法 |
|---|---|---|---|
| 配置数据 | 每日 | 30代 | Fess 备份功能 |
| 索引 | 每日 | 7代 | OpenSearch 快照 |
| Docker 配置 | 变更时 | Git 管理 | compose.yaml 版本管理 |
配置数据备份自动化
可以使用 Fess 的管理 API 实现配置数据备份的自动化。 将其设置为调度器作业,或作为外部 cron 作业执行。
恢复步骤
事先确认故障发生时的恢复步骤非常重要。
停止 Fess
恢复配置数据(通过管理界面或 API)
根据需要从 OpenSearch 快照恢复
启动 Fess
验证运行状态
定期进行恢复步骤的演练,以掌握步骤的准确性和所需时间。
故障处理
常见故障与解决方法
Fess 无法启动
查看日志文件(logs/fess.log)
JVM 内存不足:调整
-Xmx参数端口冲突:确认 8080 端口是否被其他进程占用
连接 OpenSearch 失败:确认 OpenSearch 是否已启动
爬取失败
查看作业日志([系统信息] > [作业日志])
网络连接:确认与爬取目标的连通性
认证错误:确认认证信息(密码、令牌)的有效期
故障 URL 确认:在[系统信息] > [故障 URL]中查看详情
搜索缓慢
确认 OpenSearch 集群状态(yellow/red 时需要处理)
确认索引大小(是否过度膨胀)
确认 JVM 堆(垃圾回收是否频繁发生)
如果正在进行爬取,确认爬取完成后是否有所改善
搜索结果过旧
确认爬取调度(是否正常执行)
确认爬取设置中的最大访问数是否不足
确认目标站点是否阻止了爬取(robots.txt)
故障 URL 管理
爬取时无法访问的 URL 会被记录为”故障 URL”。 可以在管理界面的[系统信息] > [故障 URL]中查看。
当故障 URL 较多时,请确认以下事项:
目标服务器是否已停止
网络路径是否存在问题
认证信息是否有效
爬取间隔是否过短,对目标服务器造成了过大负载
日志管理
Fess 的日志文件输出到以下位置:
Fess 日志:``logs/fess.log``(应用程序日志)
爬取信息:管理界面的[系统信息] > [爬取信息]
作业日志:管理界面的[系统信息] > [作业日志]
搜索日志:管理界面的[系统信息] > [搜索日志]
请确认日志轮转的设置,以防止日志文件过度膨胀。
运维检查清单
将日常运维中应确认的项目整理为检查清单。
每日检查
爬取是否正常完成
健康检查是否正常
磁盘使用率是否低于阈值
每周检查
搜索日志中的零命中率(参见第8回)
失败 URL 的确认与处理
备份是否正常取得
每月检查
索引大小的变化趋势
JVM 内存使用量的趋势
词典更新(参见第9回)
安全补丁确认
总结
本文介绍了 Fess 稳定运维所需的监控、备份和故障处理。
通过 Health API 和管理界面进行监控
配置数据与索引数据的备份策略
常见故障模式与解决方法
每日、每周、每月的运维检查清单
为了维持”搜索可用是理所当然”的状态,请建立预防性的运维体系。
下一回将介绍使用搜索 API 与现有系统集成的模式。