尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Glances 导出 Elasticsearch 指标:配置、数据模型与源码实现解析

Glances 导出 Elasticsearch 指标:配置、数据模型与源码实现解析 指标监控监控大盘CLI告警MCP 服务【免费下载链接】glancesGlances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, macOS and Windows operating systems.项目地址https://gitcode.com/gh_mirrors/gl/glances点击查看免费下载Glances 内置了面向时序数据平台的多路导出export机制其中 Elasticsearch 导出模块可以把 CPU、内存、网络、磁盘等插件实时采集的监控指标写入 Elasticsearch 服务器供 Kibana 可视化或检索分析使用。本文以 docs/gw/elastic.rst 为骨架结合配置文件与 elasticsearch 导出模块源码完整讲解依赖安装、配置文件编写、命令行启动方式并深入数据文档document的字段结构与写入流程帮助你在自己的监控环境中快速落地。前置条件安装 elasticsearch 客户端库Elasticsearch 导出功能依赖 Python 的elasticsearch客户端库。仓库文档明确要求You need to install theelasticsearchlibrary on your system.从当前仓库的 all-requirements.txt 可以看到仓库锁定并验证的版本为elasticsearch9.5.1。安装方式通常是$ pip install elasticsearch或者按 Glances 的方式通过 requirements.txt / all-requirements.txt 一键安装全部依赖。安装完成后即可在配置文件中启用 elasticsearch 导出。配置在 glances.conf 中定义 ES 连接官方文档中的最小配置根据文档需要在 Glances 配置文件中定义与 Elasticsearch 服务器的连接形如[elasticsearch] hostlocalhost port9200 indexglances仓库内置配置文件的完整形态仓库自带的 conf/glances.conf 给出了该 section 的完整形态除了文档中的三个键还额外包含scheme键用于指定连接协议[elasticsearch] # Configuration for the --export elasticsearch option # Data are available via the ES RESTful API. ex: URL/index/cpu # https://www.elastic.co schemehttp hostlocalhost port9200 indexglances各配置项说明如下配置项默认值仓库配置说明schemehttp连接协议本地或内网 ES 用http开启 TLS 的 ES 集群应改为httpshostlocalhostElasticsearch 服务器地址port9200Elasticsearch HTTP 端口indexglances索引名前缀实际索引名会在其后拼接日期详见下文“数据写入与索引命名”从源码角度看glances/exports/glances_elasticsearch/init.py 在初始化时通过load_conf把scheme、host、port、index四个键全部声明为必填项self.export_enable self.load_conf( elasticsearch, mandatories[scheme, host, port, index], options[] ) if not self.export_enable: sys.exit(2)也就是说即使文档示例只写了三个键实际运行也需要scheme存在否则配置加载失败并退出exit code 2。这一点在阅读文档时需要注意完整配置以 conf/glances.conf 为准。load_conf是导出模块的公共配置加载逻辑实现在 glances/exports/export.py 中它逐个读取mandatories列表中的键任一缺失或 section 不存在都会记录错误并返回False从而禁用该导出模块。启动命令行启用 elasticsearch 导出配置文件就绪后用--export参数启动 Glances 即可把统计数据推送到 ES$ glances --export elasticsearch该参数由 Glances 主程序解析后实例化对应的导出模块。在 export.py 中GlancesExport基类默认把export_enable置为False只有在子类即本模块成功加载配置后才会置为True随后由update()方法export.py在每个采集周期遍历所有可导出插件调用各插件的export()方法完成写入。仓库的导出测试脚本例如 tests/test_export_influxdb_v1.sh 一类通常还会配合--stop-after N --quiet做限时验证你可以据此自测 elasticsearch 导出链路。连接初始化与失败处理模块初始化连接的核心逻辑在 glances/exports/glances_elasticsearch/init.py 的init()方法中es Elasticsearch(hosts[f{self.scheme}://{self.host}:{self.port}]) ... if not es.ping(): logger.critical(fCannot ping the ElasticSearch server {self.scheme}://{self.host}:{self.port}) sys.exit(2)可见连接地址由scheme://host:port三段拼接而成所以scheme是必填项建立连接后会执行ping()做连通性校验ping 失败同样以 exit code 2 退出并输出 critical 级别日志便于快速定位网络或服务问题。数据写入与索引命名索引按天滚动每次导出时实际写入的索引名不是配置里的裸index值而是index 当天日期格式为YYYY.MM.DD源码 L63-L64index {}-{}.format(self.index, datetime.utcnow().strftime(%Y.%m.%d))例如配置indexglances则在 2026-09-19 当天数据会写入索引glances-2026.09.19。这种按天滚动的命名方式与 Logstash/Filebeat 的经典索引策略一致便于按时间维度做生命周期管理ILM和清理。配置文件中注释也印证了这一点数据可通过 ES RESTful API 以URL/index/cpu的形式按插件访问。文档字段模型每个插件的每轮采集结果被封装为一个 ES 文档action字段结构在 源码 L68-L77action { _index: index, _id: f{name}.{dt_now}, _type: fglances-{name}, _source: {plugin: name, timestamp: dt_now}, } action[_source].update(zip(columns, [str(p) for p in points]))对应的字段语义字段含义_index按天滚动的索引名如glances-2026.09.19_id文档唯一 ID由插件名.UTC时间戳组成保证同一时刻同一插件只产生一个文档_type文档类型固定为glances-插件名_source.plugin插件名称如cpu、mem、network_source.timestampISO 8601 格式的 UTC 时间戳datetime.utcnow().isoformat(T)_source.*插件导出的具体指标字段由columns与points一一对应拼装数值统一转为字符串columns/points来自基类 build_export()它由update()遍历stats.getAllExportsAsDict()的结果生成因此文档中每个插件的指标字段就是该插件在 JSON 导出中所呈现的字段集。写入时通过helpers.bulk()批量提交异常会记录 error 日志而不中断 Glances 主进程。在 Kibana 中查看数据写入 ES 后就可以在 Kibana 中以glances-*为索引模式创建数据视图按timestamp字段绘制 CPU、内存、网络等指标的时间序列曲线也可以直接通过 ES RESTful API 检索例如# 查看某个索引的最近文档 $ curl http://localhost:9200/glances-2026.09.19/_search?pretty结合plugin字段即可按模块过滤查询如cpu插件的_source.plugin等于cpu的文档。小结Glances 的 Elasticsearch 导出链路可以概括为三步安装elasticsearch库 → 在 conf/glances.conf 的[elasticsearch]段配置scheme/host/port/index→ 以glances --export elasticsearch启动。底层实现glances/exports/glances_elasticsearch/init.py会按天滚动索引、为每个插件构造包含plugin/timestamp/指标字段的文档并经helpers.bulk批量写入。唯一需要注意的是源码把scheme列为必填项完整配置请以仓库自带的 conf/glances.conf 为准而不是文档中的最小示例。赞分享指标监控监控大盘CLI告警MCP 服务【免费下载链接】glancesGlances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, macOS and Windows operating systems.项目地址https://gitcode.com/gh_mirrors/gl/glances点击查看免费下载相关推荐Glances 导出监控数据到 Cassandra / Scylla 实战指南配置、数据模型与源码解析Glances 导出监控数据到 Cassandra / Scylla 实战指南配置、数据模型与源码解析 Glances 除了在终端、Web 界面展示系统状态指标监控监控大盘CLI告警MCP 服务Glances 实时监控数据导出 MongoDB 完整指南配置、文档模型与源码实现剖析Glances 实时监控数据导出 MongoDB 完整指南配置、文档模型与源码实现剖析 MongoDB 是 Glances 官方支持的时间序列监控数据落库后端指标监控监控大盘CLI告警MCP 服务Glances 数据导出到 CouchDB配置、JSON 文档结构与源码实现解析Glances 数据导出到 CouchDB配置、JSON 文档结构与源码实现解析 导读 本文介绍 Glances 的 CouchDB 导出模块 export指标监控监控大盘CLI告警MCP 服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表