
gesellix/couchdb-prometheus-exporterCouchDB Prometheus Exporter 是用于 CouchDB 的指标导出工具,专为 Prometheus 设计。该工具从 CouchDB 的 /_stats 和 /_active_tasks 端点获取指标数据,并将其转换为 Prometheus 可消费的格式,便于监控 CouchDB 实例的性能和运行状态。
/_stats(系统统计)和 /_active_tasks(活跃任务)端点采集核心指标官方提供预构建版本,可从 GitHub Releases 获取。若需从源码构建,需先安装 Golang,然后执行:
shellgo install github.com/gesellix/couchdb-prometheus-exporter/v30@v30.4.2
二进制文件将安装至 GOBIN 目录(通常为 $HOME/go/bin),确保该目录在系统 PATH 中,可通过以下命令验证安装:
shellcouchdb-prometheus-exporter --help
通过 --help 查看所有配置选项及默认值:
shellcouchdb-prometheus-exporter --help
支持三种配置方式,优先级:命令行参数 > 环境变量 > 配置文件。
1. 环境变量
格式:COUCHDB_<参数名>(参数名大写,. 替换为 _),例如:
shellexport COUCHDB_USERNAME=admin export COUCHDB_PASSWORD=secret export COUCHDB_URI=[***]
2. 命令行参数
格式:--<section>.<key> <value>,例如:
shellcouchdb-prometheus-exporter \ --couchdb.username admin \ --couchdb.password secret \ --couchdb.uri [***]
3. 配置文件
支持 "properties" 格式配置文件,通过 --config 指定路径,例如 config.ini:
properties# config.ini couchdb.username=admin couchdb.password=secret couchdb.uri=[***] databases=db-1,db-2 # 监控指定数据库的磁盘使用
启动命令:
shellcouchdb-prometheus-exporter --config=config.ini
通过 --web.config 参数启用 TLS 和/或 Basic 认证,需指定 YAML 配置文件,例如 web-config.yaml:
yaml# web-config.yaml tls_server_config: cert_file: "path/to/server.crt" # TLS 证书路径 key_file: "path/to/server.key" # TLS 私钥路径 basic_auth_users: alice: $2y$12$1DpfPeqF9HzHJt.EWswy1exHluGfbhnn3yXhR7Xes6m3WJqFg0Wby # 加密后的密码 bob: $2y$18$4VeFDzXIoPHKnKTU3O3GH.N.vZu06CVqczYZ8WvfzrddFU6tGqjR.
启动命令:
shellcouchdb-prometheus-exporter --config=config.ini --web.config=web-config.yaml
密码需通过 bcrypt 加密,可使用工具生成(如
htpasswd -nBC 10 "")。
shelldocker run --rm -p 9984:9984 \ gesellix/couchdb-prometheus-exporter \ --couchdb.uri=[***] \ --couchdb.username=admin \ --couchdb.password=secret
注意:容器内无法使用
localhost访问宿主机服务,需使用宿主机 IP 或可解析的域名。
创建 docker-compose.yml:
yamlversion: '3' services: couchdb-exporter: image: gesellix/couchdb-prometheus-exporter ports: - "9984:9984" environment: - COUCHDB_USERNAME=admin - COUCHDB_PASSWORD=secret - COUCHDB_URI=[***] - DATABASES=_all_dbs # 监控所有数据库 depends_on: - couchdb couchdb: image: couchdb:3.3 environment: - COUCHDB_USER=admin - COUCHDB_PASSWORD=secret ports: - "5984:5984"
启动:
shelldocker-compose up -d
创建 docker-stack.yml:
yamlversion: '3.8' services: couchdb-exporter: image: gesellix/couchdb-prometheus-exporter ports: - "9984:9984" command: - --couchdb.uri=[***] - --couchdb.username=admin - --couchdb.password=secret - --databases=_all_dbs deploy: replicas: 1 couchdb: image: couchdb:3.3 environment: - COUCHDB_USER=admin - COUCHDB_PASSWORD=secret ports: - "5984:5984" deploy: replicas: 3 # 模拟 CouchDB 集群
部署:
shelldocker swarm init docker stack deploy --compose-file docker-stack.yml couchdb-monitor
对于 CouchDB 2.x+ 集群,需配置管理员凭证以获取集群指标:
shellcouchdb-prometheus-exporter \ --couchdb.uri=[***] \ --couchdb.username=admin \ --couchdb.password=secret
若需仅采集单个节点的本地指标,启用 --scrape.localonly:
shellcouchdb-prometheus-exporter \ --couchdb.uri=[***] \ --couchdb.username=admin \ --couchdb.password=secret \ --scrape.localonly=true
指定需监控的数据库(逗号分隔):
shellcouchdb-prometheus-exporter \ --couchdb.uri=[***] \ --couchdb.username=admin \ --couchdb.password=secret \ --databases=db-1,db-2 # 监控 db-1 和 db-2
监控所有数据库,使用 _all_dbs:
shellcouchdb-prometheus-exporter \ --couchdb.uri=[***] \ --couchdb.username=admin \ --couchdb.password=secret \ --databases=_all_dbs
导出的指标详情可参考项目中的 README_metrics.md,涵盖以下类别:
参考 Monitoring CouchDB with Prometheus, Grafana and Docker 指南,或使用项目提供的示例栈(包含 CouchDB、Exporter、Prometheus、Grafana):
shellcd examples/grafana docker swarm init docker stack deploy --compose-file docker-traefik-stack.yml example
访问 Grafana(默认地址 http://localhost:3000),导入示例仪表盘即可查看监控数据。
| 配置项 | 环境变量对应 | 描述 | 默认值 |
|---|---|---|---|
couchdb.uri | COUCHDB_URI | CouchDB 服务地址 | http://localhost:5984 |
couchdb.username | COUCHDB_USERNAME | CouchDB 认证用户名 | - |
couchdb.password | COUCHDB_PASSWORD | CouchDB 认证密码 | - |
databases | DATABASES | 需监控磁盘使用的数据库列表(逗号分隔,_all_dbs 表示所有数据库) | - |
scrape.localonly | SCRAPE_LOCALONLY | 是否仅采集本地节点指标(CouchDB 2+ 集群) | false |
web.listen-address | WEB_LISTEN_ADDRESS | 导出器 HTTP 服务地址 | :9984 |
web.config | WEB_CONFIG | TLS/Basic 认证配置文件路径(YAML 格式) | - |
config | - | 配置文件路径(properties 格式) | - |
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务