
运维观测后端【免费下载链接】elasticsearch-HQMonitoring and Management Web Application for ElasticSearch instances and clusters.项目地址https://gitcode.com/gh_mirrors/el/elasticsearch-HQ点击查看免费下载导读ElasticHQ 是一款面向 Elasticsearch 实例与集群的简化监控与管理 Web 应用覆盖集群健康、节点、索引、分片等核心指标的实时监控并提供索引创建、Mapping 复制、Reindex、REST/cat API 一键访问与查询等日常运维能力。本文以仓库根目录 README.md 为主线结合 docs/_sources/installation.txt 的安装文档与仓库源码完整讲解 Docker 部署、源码安装、命令行参数、环境变量、SSL、生产化部署与故障排查帮助你快速搭建一套可用的 Elasticsearch 运维控制台。需要提前说明的是README 明确标注本项目已不再维护no longer maintained使用需自担风险。项目作者在 README 中说明由于 Elasticsearch 版本变化频繁、向后兼容性问题以及上游 Python 库的改动已难以继续维护。因此本文内容均以当前仓库实际代码与文档为准若在生产环境使用请务必评估版本兼容性与维护成本。一、项目概述与核心功能ElasticHQ 的定位是简化的 Elasticsearch 集群监控与管理README 原文Simplified Monitoring and Management for ElasticSearch clusters以 Apache 2.0 协议开源发布。根据 docs/_sources/index.txt 与 README 中的 Key Features 列表其核心能力可归纳为多版本兼容支持 Elasticsearch 2.x、5.x、6.x、7.x 及当时的当前版本。多集群同时监控可同时接入并监控多个 ES 集群连接信息持久化保存在内置 SQLite 数据库中重启后自动恢复连接。多维度监控覆盖集群整体指标、节点、索引、分片、别名等对象的监控与管理。索引运维创建索引、查看与复制 Mapping、执行 Reindex重建索引、打开/关闭/删除索引等。一键 API 访问通过 Web UI 一键访问常用 ES REST 端点与 cat API 端点无需记忆复杂命令。查询能力内置易用的 Query 查询界面支持向指定索引提交查询 DSL。实时监控图表基于 WebSocket 推送的实时监控图表。节点诊断通过预设的诊断规则Diagnostics Rules对节点进行体检提示内存、文件系统、缓存等指标的健康状态。仓库的技术栈从 requirements.txt 与 package.json 可以清晰看出后端为 Python 3 Flask Flask-RESTful Flask-SocketIO SQLAlchemy前端为 AngularJS 1.x webpack 构建构建产物见 elastichq/static/。下图是 README 顶部展示的主仪表盘界面二、Docker 快速开始Docker 镜像是 ElasticHQ 官方推荐的部署方式之一镜像托管在 Docker Hub 的elastichq/elasticsearch-hq仓库下。2.1 一条命令启动按 README 的 Quickstart 说明启动只需一条命令docker run -p 5000:5000 elastichq/elasticsearch-hq随后在浏览器中访问http://localhost:5000即可打开 HQ 控制台。2.2 镜像内部结构从仓库根目录的 Dockerfile 可以看出镜像的构建细节基础镜像为python:3.6-alpine3.7安装 supervisord、bash 等基础组件随后pip3 install -U -r requirements.txt将 deployment/supervisord.conf、deployment/gunicorn.conf、deployment/logging.conf 复制到镜像内相应位置暴露 5000 端口最终以supervisord拉起 gunicorn 进程。也就是说Docker 镜像内部默认以 gunicorneventlet worker在生产模式下运行这与生产环境建议使用多线程服务器的官方建议一致。容器内的应用目录为/src应用日志位于/src/application.log。2.3 通过环境变量传参使用 Docker 启动时可以通过-e标志传入环境变量完成初始配置详见 docs/_sources/installation.txtdocker run -p 5000:5000 elastichq/elasticsearch-hq \ -e HQ_DEFAULT_URLhttp://aa.com:1212 \ -e HQ_ENABLE_SSLFalse完整的受支持环境变量清单见本文第四节。2.4 让 SQLite 数据库跨容器重启保留installation.txt 的 Troubleshooting 一节给出了一套方案通过 volume 挂载 启动前改写数据库路径将elastichq.db持久化到宿主目录源自仓库 issue #409docker run --detach \ --restartalways \ --net host \ --volume elastichq:/src/db \ --name elastichq \ elastichq/elasticsearch-hq \ sh -x -c sed -i -r -e s/_sqlalchemy_database_uri .*/_sqlalchemy_database_uri sqlite:/// os.path.join(BASEPATH, db , elastichq.db)/ /src/elastichq/config/settings.py exec supervisord -c /etc/supervisor/supervisord.conf注意latest标签对应最新的稳定版本develop分支则对应不稳定的开发版本README 与安装文档均如此说明。三、从源码安装3.1 环境要求Python 3.6README 要求安装文档 docs/_sources/installation.txt 写作时标注为 Python 3.4两者均以 Python 3 为准待监控的 Elasticsearch 集群2.x、5.x、6.x、7.x网络可达HQ 服务器需要能够通过 HTTP 访问到 ES 集群的 REST 端口。3.2 安装步骤按 README 的 Source Installation 说明# 1. 下载或克隆仓库 git clone https://gitcode.com/gh_mirrors/el/elasticsearch-HQ # 2. 进入仓库根目录安装 Python 依赖 pip install -r requirements.txt # 3. 启动服务两种方式任选其一 python3 application.py # 或 ./manage.py runserver # 4. 浏览器访问 # http://localhost:50003.3 依赖说明requirements.txt 列出了完整依赖核心组件包括Flask 0.12.4、Flask-restful 0.3.6、Flask-Script 2.0.6Web 框架与 CLI 管理Flask-SocketIO 3.1.0 eventlet负责指标数据的 WebSocket 实时推送SQLAlchemy 1.2.0 Flask-SQLAlchemy Flask-Migrate持久化集群连接信息dogpile.cache 0.6.5指标缓存apscheduler 3.5.0调度轮询任务gunicorn 19.7.1生产环境 WSGI 服务器。3.4 manage.py 管理命令manage.py 提供了若干管理命令./manage.py runserver # 启动 Socket.IO Web 服务器默认 0.0.0.0:5000 ./manage.py clean-db # 清空数据库下次启动时重建 ./manage.py run-tests # 运行全部单元测试要求所配置的集群都在运行 ./manage.py run-tests -E 7 # 针对指定 ES 版本2/5/6/7运行 es_versions 测试 ./manage.py db migrate # 生成数据库迁移脚本 ./manage.py db upgrade # 执行数据库升级 DDL其中run-tests使用 pytest-docker-compose 拉起对应版本的 ES 容器执行测试测试配置位于 tests/pytest.ini 与各v{2,5,6,7}_docker-compose.ymltests/ 目录这从侧面印证了项目对 2.x~7.x 多版本的支持。四、启动参数与环境变量配置ElasticHQ 支持两套等价配置途径命令行参数application.py启动脚本与环境变量Docker 场景二者均在启动时合并处理。4.1 命令行参数application.py 使用optparse定义了如下参数同时 docs/_sources/installation.txt 给出了完整的参数表参数默认值说明--host/-H0.0.0.0HQ 服务监听的地址--port/-P5000HQ 服务监听端口--debug/-dFalse开启后向 UI 暴露调试数据并在代码变更时触发重载--url/-uhttp://localhost:9200初始连接页默认显示的 ES 地址--enable-ssl/-sFalse传入即启用 SSL 证书连接--ca-certs/-c无CA 证书路径启用 SSL 时必须指定--verify_certs/-vTrue是否校验证书使用自签名证书时需设为 False--client_cert/-x无客户端证书文件路径--client_key/-X无客户端私钥文件路径示例docs/_sources/installation.txt 原文python -m application \ --enable-ssl \ --ca-certs /path/to/your/ca.crt4.2 环境变量在 application.py 的启动逻辑中配置优先读取环境变量未设置时才使用命令行选项或默认值环境变量默认值说明HQ_DEFAULT_URLhttp://localhost:9200初始连接页默认显示的 ES 地址HQ_ENABLE_SSLFalse是否启用 SSL 证书连接HQ_CA_CERTS无CA 证书路径HQ_VERIFY_CERTSTrue是否校验证书自签名证书场景设为 FalseHQ_DEBUGFalse开启调试级别日志True时加载logger_debug.jsonCLIENT_KEY/CLIENT_CERT无客户端密钥 / 证书代码中同样支持Docker 场景示例docker run -p 5000:5000 elastichq/elasticsearch-hq \ -e HQ_DEFAULT_URLhttp://aa.com:1212 \ -e HQ_ENABLE_SSLFalse4.3 连接参数在源码中的处理在 elastichq/service/ConnectionService.py 的create_connection方法中verify_certs与enable_ssl会先经string_to_bool归一化然后按是否 Basic Auth / 是否 SSL / 是否校验证书组合出不同的连接分支校验证书时把ca_certs传给 requests 的verify参数与 ES 客户端的ca_certs参数不校验时显式传verifyFalse。这解释了为什么自签名证书场景下必须将verify_certs置为 False 才能建立连接。五、连接 Elasticsearch 集群5.1 连接地址格式ElasticHQ 通过 URL 表单连接集群登录页输入框接受http://DOMAIN:PORT格式docs/_sources/installation.txt 的 Initial Login 一节支持http与https两种 scheme需要 Basic Auth 时使用内嵌凭据格式http://USERNAME:PASSWORDDOMAIN:PORT。在 elastichq/api/clusters.py 的ClusterConnection资源中POST/api/clusters/_connect接受如下 JSON 请求体{ ip: 127.0.0.1, port: 9200, use_ssl: false }可选字段还包括username与password。连接成功后集群信息cluster_name、cluster_ip、cluster_port、cluster_scheme、cluster_connected、cluster_host、cluster_version会被保存到 SQLite 数据库同时加入内存中的全局连接池CONNECTIONS定义于 elastichq/globals.py供后续所有 API 调用复用。5.2 初始登录页截图安装文档中提供了初始登录页示意docs 静态资源中的login.png六、SSL 与安全连接SSL 支持是社区贡献的功能README 引用的 issue #376启用方式python -m application --enable-ssl --ca-certs /path/to/your/ca.crt关键注意事项docs/_sources/installation.txt 原文要点CA 文件必须是签发 ES 节点证书的同一签发方HQ 才能以可信来源身份连接使用自签名证书时必须关闭证书校验将verify_certs设为 False需要双向 TLS 时可通过--client_cert/--client_key指定客户端证书application.py 中已实现并透传给连接创建逻辑。可在 HQ 实例上直接用 curl 验证证书链路是否正常curl -u admin:password --ca-certs /path/to/ca.crt https://localhost:9200/_cluster/settings?pretty七、数据库与外部配置文件7.1 SQLite 数据库ElasticHQ 内置 SQLite 存储已连接集群等元信息默认数据库文件为仓库根目录下的elastichq.db对应 elastichq/config/settings.py 中ProdSettings的_sqlalchemy_database_uri sqlite:/// ... elastichq.db。安装文档说明如需重置直接删除elastichq.db文件下次启动会自动重建数据库结构变更升级则通过./manage.py db upgrade完成。7.2 settings.json 外部配置安装文档说明HQ 启动时会按以下顺序查找名为settings.json的外部配置文件查找逻辑实现在 elastichq/utils.py 的find_config中/etc/elastic-hq/settings.json~/settings.json用户主目录当前工作目录/settings.json当前工作目录/elastichq/settings.json当前工作目录/config/settings.json当前支持的参数为SQLALCHEMY_DATABASE_URI用于指定数据库文件位置{ SQLALCHEMY_DATABASE_URI: sqlite:////SOME/PATH/TO/DB_NAME.db }elastichq/config/settings.py 的BaseSettings会优先读取用户配置未配置时才回退到内置默认值方便用户在升级时保留自定义设置。7.3 集群级配置每个集群的监控行为由.elastichq内部索引doc_id 为hqsettings中的设置文档控制HQ_CLUSTER_SETTINGSelastichq/config/settings.py配置项默认值说明store_metricsTrue是否存储被轮询的指标数据websocket_interval5秒轮询集群指标数据并推送 WebSocket 的间隔historic_poll_interval60测试/300生产秒检索并存储历史指标的轮询间隔historic_days_to_store7天历史指标的保留天数show_dot_indicesTrue是否在列表中展示以点开头的索引这些设置可通过 API 读取与部分更新GET/PUT/DELETE /api/hq/cluster_name/_settings见 elastichq/api/hq.pyPUT 支持只传部分字段例如{ websocket_interval: 15, historic_days_to_store: 10 }历史指标数据默认写入.elastichq_metrics索引METRICS_INDEX_NAME。八、生产环境部署8.1 为什么需要 gunicorn安装文档明确指出Flask 自带服务器是单线程进程在较大负载下不应直接用于生产环境建议使用多线程服务器运行 WSGI 应用。Docker Hub 上的镜像已预配置 gunicorn。8.2 手动运行 gunicorn若不用容器可先安装 gunicornpip install gunicorn然后启动安装文档给出的命令gunicorn -w 1 -b :5000 --worker-class eventlet application:application应用将可通过http://127.0.0.1:5000访问。安装文档特别强调Metrics 模块要能通过 WebSocket 广播gunicorn 必须设置为 1 个 worker。这与 deployment/supervisord.conf 中-w 1 --worker-class eventlet的配置完全一致也与 application.py 中在 gunicorn 下禁用 reloader 以避免重复初始化的逻辑相互印证。Eventlet worker 与 Flask-SocketIO 的 eventlet 异步模式elastichq/globals.py 中async_mode eventlet配套使用。8.3 日志配置默认日志输出到控制台和文件仓库根目录application.logDocker 场景下位于/src/application.log。高级用户可以修改 elastichq/config/logger.json 控制日志行为该配置定义了 RotatingFileHandler单文件最大 100MB、备份 2 份以及elastichq、sqlalchemy、elasticsearch、requests等 logger 的级别。九、升级指南项目遵循语义化版本Semantic Versioning只要主版本号未变化升级通常顺畅。安装文档给出的升级流程下载或克隆仓库 master 分支执行数据库升级python manage.py db upgrade重启服务python application.py访问http://localhost:5000。HQ 会在启动时通过访问 elastichq.org 的currversion.json获取最新稳定版本号实现于 elastichq/service/HQService.py 的get_status并在页面页脚展示版本对比结果。结合当前仓库状态提示由于项目已停止维护升级与版本追踪请以实际仓库与自身环境为准建议在测试环境先行验证。十、故障排查以下要点整理自 docs/_sources/installation.txt 的 Troubleshooting 章节Basic Auth 缺失若在连接 URL 中未携带凭据HQ 会连接失败。正确格式为http://USERNAME:PASSWORDDOMAIN:PORT。X-Pack License 过期X-Pack 的 license 会静默过期可能引发连接问题建议购买 license 或卸载 X-Pack。无法路由到 ES 集群确认 HQ 服务器与 ES 网络可达可在 HQ 所在主机上执行curl -XGET http://DOMAIN:PORT验证。CERTIFICATE_VERIFY_FAILED日志中出现该错误通常意味着使用了自签名证书却未关闭证书校验需将verify_certs置为 False。X-Pack安全认证X-Pack 开启认证后连接 URL 必须使用http://USERNAME:PASSWORDDOMAIN:PORT格式HQ 会将凭据存入数据库以便重连。需注意凭据以明文存储安装文档中的 warning 明确说明请评估相应安全风险。查看日志源码安装场景日志位于安装路径下的application.logDocker 场景位于/src/application.log。十一、基于源码的功能纵深REST API 一览除 Web UI 外ElasticHQ 对外暴露了完整的 REST API路由定义见 elastichq/api/endpoints.py详细接口文档可参考 docs/rest-api.html主要端点包括端点方法功能/api/clustersGET列出所有在线/离线集群连接/api/clusters/_connectPOST / DELETE创建 / 删除集群连接/api/clusters/name/_health、_state、_stats、_summary、_pending_tasks、_settingsGET集群健康 / 状态 / 统计 / 摘要 / 待处理任务 / 设置/api/clusters/name/_settingsPUT修改集群设置/api/clusters/name/diagnostics/_summaryGET节点诊断汇总elastichq/api/diagnostics.py/api/rest/cluster_name/commandGETES REST / cat API 通用透传elastichq/api/rest.py/api/query/cluster_name/index_namePOST向指定索引提交查询 DSLelastichq/api/query.py/api/hq/cluster_name/_settingsGET/PUT/DELETEHQ 集群监控设置其中通用透传端点支持大量_cat_*命令_cat_aliases、_cat_allocation、_cat_count、_cat_health、_cat_indices、_cat_nodes、_cat_shards等见 elastichq/api/rest.py这正是 README 中One-Click access to ES API and cat API endpoints的底层实现。此外elastichq/service/IndicesService.py 实现了索引的创建、删除、打开/关闭、刷新、清缓存、别名管理、Mapping 复制copy_mapping与 Reindexreindex等操作elastichq/service/DiagnosticsService.py 则基于 elastichq/service/DiagnosticsRules.py 中定义的 cache/fs/action/memory/network 五类规则对每个节点执行阈值判断输出 PASS / WARN / DANGER 状态对应 README 中Diagnostics check-up helps alert to specific nodes having issues这一特性。所有 API 响应均使用统一信封结构data、status_code、message、response_time见 elastichq/common/api_response.py便于上层应用与脚本消费。十二、OpenShift 部署简介仓库提供了在 OpenShift 上部署的模板与说明openshift/README.md思路是通过一个 nginx 反向代理openshift/proxy/nginx.conf将 ElasticHQ 暴露到http://localhost:8080实现对 OpenShift 内置 Elasticsearch 日志集群的内部监控。核心步骤# 导入镜像到 logging 命名空间 oc import-image nginx-114-rhel7 --fromregistry.access.redhat.com/rhscl/nginx-114-rhel7 -n openshift-logging --confirm oc import-image elastic-hq-proxy --fromelastichq/elasticsearch-hq -n openshift-logging --confirm # 在 logging 命名空间处理并创建应用 oc project openshift-logging oc process -f openshift/elastic-hq-template.yaml -p LOGGING_NAMESPACEopenshift-logging | oc apply -f -具体命名空间参数与 nginx 配置调整细节以 openshift/README.md 为准。结语ElasticHQ 以简化为设计出发点把 Elasticsearch 集群最常见的监控与管理诉求收敛到一个 Web 控制台里多集群接入、实时指标图表、节点诊断、索引运维、API 透传与查询一应俱全。本文基于仓库 README 与官方安装文档结合 application.py、elastichq/config/settings.py、elastichq/service/ConnectionService.py 等源码完整还原了从 Docker/源码部署到参数配置、SSL、生产化与排障的完整链路。请再次留意项目当前处于不再维护状态落地使用时需结合自身的 Elasticsearch 版本与实际网络/安全环境进行充分验证。赞分享运维观测后端【免费下载链接】elasticsearch-HQMonitoring and Management Web Application for ElasticSearch instances and clusters.项目地址https://gitcode.com/gh_mirrors/el/elasticsearch-HQ点击查看免费下载相关推荐Gopeed下载器一站式实操指南HTTP、BT磁力与ED2K全搞定还免费开源Gopeed下载器一站式实操指南HTTP、BT磁力与ED2K全搞定还免费开源 Gopeed 下载器是一款基于 Golang Flutter 开发的免费开网络CLI后端终极指南如何使用ElasticHQ简化Elasticsearch集群的监控与管理终极指南如何使用ElasticHQ简化Elasticsearch集群的监控与管理 ElasticHQ是一款强大的开源工具专为简化Elasticsearch集运维观测后端ElasticHQ简化Elasticsearch集群的监控与管理ElasticHQ简化Elasticsearch集群的监控与管理 项目介绍 ElasticHQ是一款专为Elasticsearch集群设计的监控与管理工具。尽运维观测后端上一篇three.js DotScreenPass 实战3 个参数调出复古网点滤镜下一篇终极指南用Wand-Enhancer免费解锁Wand专业版完整功能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考