flashcatcloud / categraf

one-stop telemetry collector for nightingale
https://flashcat.cloud/docs/
MIT License
833 stars 253 forks source link

categraf-v0.3.31 监控mongodb启动日志报错 #586

Closed liuxin638507 closed 7 months ago

liuxin638507 commented 1 year ago

目前categraf-v0.3.31 启动日志监控mongodb,仍然还有如下启动异常日志 image

Relevant config.toml

mongodb.toml配置文件:
[[instances]]
log_level = "info"
labels = { instance="mongo-cluster-01" }
mongodb_uri = "mongodb://192.1.3.201:27017"
username = "admin"
password = "123456"
collect_all = true

Logs from categraf

启动categraf日志:
root@ubuntu2204:/opt/categraf# vim conf/input.mongodb/mongodb.toml 
root@ubuntu2204:/opt/categraf# systemctl  restart categraf
root@ubuntu2204:/opt/categraf# journalctl  -xu categraf -f
Aug 03 09:26:07 ubuntu2204 categraf[70401]: 2023/08/03 09:26:07 metrics_agent.go:275: I! input: local.netstat started
Aug 03 09:26:07 ubuntu2204 categraf[70401]: 2023/08/03 09:26:07 metrics_agent.go:275: I! input: local.nfsclient started
Aug 03 09:26:07 ubuntu2204 categraf[70401]: 2023/08/03 09:26:07 metrics_agent.go:215: E! input: local.oracle not supported
Aug 03 09:26:07 ubuntu2204 categraf[70401]: 2023/08/03 09:26:07 metrics_agent.go:275: I! input: local.processes started
Aug 03 09:26:07 ubuntu2204 categraf[70401]: 2023/08/03 09:26:07 metrics_agent.go:275: I! input: local.self_metrics started
Aug 03 09:26:07 ubuntu2204 categraf[70401]: 2023/08/03 09:26:07 metrics_agent.go:275: I! input: local.sockstat started
Aug 03 09:26:07 ubuntu2204 categraf[70401]: 2023/08/03 09:26:07 metrics_agent.go:275: I! input: local.system started
Aug 03 09:26:07 ubuntu2204 categraf[70401]: 2023/08/03 09:26:07 agent.go:47: I! [*agent.MetricsAgent] started
Aug 03 09:26:07 ubuntu2204 categraf[70401]: 2023/08/03 09:26:07 agent.go:50: I! agent started
Aug 03 09:26:07 ubuntu2204 categraf[70401]: time="2023-08-03T09:26:07Z" level=warning msg="cannot create metrics for oplog: mongo: no documents in result"
Aug 03 09:26:22 ubuntu2204 categraf[70401]: time="2023-08-03T09:26:22Z" level=warning msg="cannot create metrics for oplog: mongo: no documents in result"
Aug 03 09:26:37 ubuntu2204 categraf[70401]: time="2023-08-03T09:26:37Z" level=warning msg="cannot create metrics for oplog: mongo: no documents in result"
Aug 03 09:26:52 ubuntu2204 categraf[70401]: time="2023-08-03T09:26:52Z" level=warning msg="cannot create metrics for oplog: mongo: no documents in result"
Aug 03 09:27:07 ubuntu2204 categraf[70401]: time="2023-08-03T09:27:07Z" level=warning msg="cannot create metrics for oplog: mongo: no documents in result"
Aug 03 09:27:22 ubuntu2204 categraf[70401]: time="2023-08-03T09:27:22Z" level=warning msg="cannot create metrics for oplog: mongo: no documents in result"
Aug 03 09:27:37 ubuntu2204 categraf[70401]: time="2023-08-03T09:27:37Z" level=warning msg="cannot create metrics for oplog: mongo: no documents in result"
Aug 03 09:27:52 ubuntu2204 categraf[70401]: time="2023-08-03T09:27:52Z" level=warning msg="cannot create metrics for oplog: mongo: no documents in result"

System info

ubuntu2204

Docker

监控主机 db_docker-compose.yaml version: '3.1' services: mongo: image: mongo:4.4.22 container_name: mongo
network_mode: host #设置网络模式为host模式 restart: always environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: 123456 TZ: Asia/Shanghai

ports:

#  - 27017:27017
logging:
  driver: "json-file"
  options:
    max-size: "100m"
volumes: 
  - ./mongo/data:/data/db
command: ["mongod","--auth"]

Steps to reproduce

1. 2. 3. ...

Expected behavior

数据库程序连接正常,但是categraf提示报错

Actual behavior

日志错误显示原因怎么处理

Additional info

No response

tianyanli commented 1 year ago

可能是因为"oplog.rs"集合为空或没有符合查询条件。 使用MongoDB命令行工具: 打开终端或命令提示符,然后运行以下命令连接到MongoDB并检查"oplog.rs"集合中是否有文档:

mongo
use local
db.oplog.rs.find()

这将列出"oplog.rs"集合中的所有文档。如果集合为空,你将不会看到任何结果。

代码里面使用空的查询条件,并按照$natural字段升序排序,所以并不会过滤。

在MongoDB版本4.4及之前,复制操作日志存储在"oplog.rs"集合中。然而,在MongoDB版本4.4之后,它被重命名为"oplog.rs"集合到"oplog"集合。 因此,如果你的MongoDB版本是4.4或更高版本,应该使用"oplog"集合而不是"oplog.rs"集合

liuxin638507 commented 1 year ago

可能是因为"oplog.rs"集合为空或没有符合查询条件。 使用MongoDB命令行工具: 打开终端或命令提示符,然后运行以下命令连接到MongoDB并检查"oplog.rs"集合中是否有文档:

mongo
use local
db.oplog.rs.find()

这将列出"oplog.rs"集合中的所有文档。如果集合为空,你将不会看到任何结果。

代码里面使用空的查询条件,并按照$natural字段升序排序,所以并不会过滤。

在MongoDB版本4.4及之前,复制操作日志存储在"oplog.rs"集合中。然而,在MongoDB版本4.4之后,它被重命名为"oplog.rs"集合到"oplog"集合。 因此,如果你的MongoDB版本是4.4或更高版本,应该使用"oplog"集合而不是"oplog.rs"集合

use local switched to db local db.oplog.rs.find() db.oplog.find()

image

这是mongo库执行的结果,结果是为空,我应该怎么处理categraf日志level=warning msg="cannot create metrics for oplog: mongo: no documents in result"出现的问题

kongfei605 commented 1 year ago

新版本替换了原来的mongodb插件,可以用v0.3.31 再看看。

liuxin638507 commented 1 year ago

新版本替换了原来的mongodb插件,可以用v0.3.31 再看看。 就是用的v0.3.31版本,监控容器启动的mongodb单机版 image

kongfei605 commented 1 year ago

单机版没有这个replica set, 这只是个warning 忽略就好了

W!  warning
E!  error 
I!  info
D!  debug
liuxin638507 commented 1 year ago

单机版没有这个replica set, 这只是个warning 忽略就好了

W!  warning
E!  error 
I!  info
D!  debug

程序是否能支持处理下,一直警告输出也影响日志采集,减少不必要的显示