DataStax OpsCenter 代理:短 os-stats 收集器失败
DataStax OpsCenter Agents: Short os-stats collector failed
在习惯了 Cassandra 和 OpsCenter 几个星期后,仍然有一个问题我无法找到解决方案。我设法安装和配置了 OpsCenter 和代理,以便它们可以相互连接。然后我查看了 OpsCenter 中可用的一些不同指标。因此,我意识到我没有获得 OS 的任何信息:已用内存,这就是为什么我试图追查此问题的根源。
在代理日志文件中,我一遍又一遍地看到消息 "Short os-stats collector failed"。我尝试搜索此消息的原因,但我找到的所有答案对我的情况都没有帮助。我提高了代理的日志级别来跟踪并发现了这个:
TRACE [os-metrics-2] 2015-08-27 08:39:34,644 Output from iostat -x -d -m 60 2... :
TRACE [os-metrics-2] 2015-08-27 08:39:34,648 Starting process: iostat -x -d -m 60 2
TRACE [os-metrics-7] 2015-08-27 08:39:34,667 Starting process: free -m
TRACE [os-metrics-7] 2015-08-27 08:39:34,669 Output from free -m... :
ERROR [os-metrics-7] 2015-08-27 08:39:34,670 Short os-stats collector failed
TRACE [os-metrics-5] 2015-08-27 08:39:34,677 Output from iostat -c -m 60 2... :
TRACE [os-metrics-5] 2015-08-27 08:39:34,678 Starting process: iostat -c -m 60 2
TRACE [os-metrics-6] 2015-08-27 08:39:34,682 Starting process: df --print-type --no-sync --block-size=1G --local
TRACE [os-metrics-6] 2015-08-27 08:39:34,684 Output from df --print-type --no-sync --block-size=1G --local... :
我想以任何方式导致问题的命令是 free -m,这是有道理的,因为它显示了有多少内存可用和已使用。我尝试使用这些新信息进行更多研究,并找到了一个可能的解决方案:人们建议检查我系统上的 cassandra 用户是否具有发出命令的必要权限。我以用户身份登录并且没有任何权限问题,free -m 显示通常的输出(与以root身份登录时显示的相同):
total used free shared buff/cache available
Mem: 7752 4768 145 27 2838 2705
Swap: 8191 64 8127
我运行不知道问题出在哪里,这就是为什么我希望在这里得到一些帮助。
关于我的系统和集群的更多信息:
OS: 美分OS 7.1.1503
Cassandra 版本:DataStax Community 版本 2.1.8
OpsCenter 和代理版本:5.2.0
Cassandra 和代理 运行 作为 cassandra 用户,OpsCenter 运行s 作为 root。
希望任何人都知道可能是什么问题。提前致谢,如果您需要任何进一步的信息,我很乐意提供。
顺便说一句:OS:已用内存是我迄今为止发现的唯一不起作用的统计数据。 OS: Memory Free 图无论出于何种原因都有效。
编辑:我刚刚看到,在某些情况下,我还会得到堆栈跟踪以及错误消息:
java.lang.NullPointerException
at clojure.lang.Numbers.ops(Numbers.java:942)
at clojure.lang.Numbers.lt(Numbers.java:219)
at clojure.lang.Numbers.min(Numbers.java:4007)
at opsagent.rollup$add_value.invoke(rollup.clj:173)
at opsagent.rollup$process_keypair$fn__1465.invoke(rollup.clj:250)
at opsagent.cache$update_cache_value_default$fn__1166$fn__1167.invoke(cache.clj:25)
at clojure.lang.AFn.applyToHelper(AFn.java:161)
at clojure.lang.AFn.applyTo(AFn.java:151)
at clojure.lang.Ref.alter(Ref.java:174)
at clojure.core$alter.doInvoke(core.clj:2244)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at opsagent.cache$update_cache_value_default$fn__1166.invoke(cache.clj:25)
at clojure.lang.AFn.call(AFn.java:18)
at clojure.lang.LockingTransaction.run(LockingTransaction.java:263)
at clojure.lang.LockingTransaction.runInTransaction(LockingTransaction.java:231)
at opsagent.cache$update_cache_value_default.invoke(cache.clj:24)
at opsagent.rollup$process_keypair.invoke(rollup.clj:250)
at opsagent.rollup$process_metric_map.invoke(rollup.clj:256)
at opsagent.os.collection$start_os_stat_collection$send_metric__16618.invoke(collection.clj:80)
at opsagent.os.linux_metrics$sendmap.invoke(linux_metrics.clj:12)
at opsagent.os.linux_metrics$report_mem_stats.invoke(linux_metrics.clj:134)
at opsagent.os.linux_metrics$collectors$wrap_short_collector__10821$fn__10822.invoke(linux_metrics.clj:270)
at opsagent.os.collection$start_pool$fn__16589.invoke(collection.clj:39)
at clojure.lang.AFn.run(AFn.java:24)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access1(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我的猜测是 Centos 7.1 使用 procps-ng
,其中 free
的输出与“经典”free
不兼容。这是一个已知问题,将在即将发布的 5.2 补丁版本(不是 5.2.1,而是之后的版本)中修复。
在习惯了 Cassandra 和 OpsCenter 几个星期后,仍然有一个问题我无法找到解决方案。我设法安装和配置了 OpsCenter 和代理,以便它们可以相互连接。然后我查看了 OpsCenter 中可用的一些不同指标。因此,我意识到我没有获得 OS 的任何信息:已用内存,这就是为什么我试图追查此问题的根源。
在代理日志文件中,我一遍又一遍地看到消息 "Short os-stats collector failed"。我尝试搜索此消息的原因,但我找到的所有答案对我的情况都没有帮助。我提高了代理的日志级别来跟踪并发现了这个:
TRACE [os-metrics-2] 2015-08-27 08:39:34,644 Output from iostat -x -d -m 60 2... :
TRACE [os-metrics-2] 2015-08-27 08:39:34,648 Starting process: iostat -x -d -m 60 2
TRACE [os-metrics-7] 2015-08-27 08:39:34,667 Starting process: free -m
TRACE [os-metrics-7] 2015-08-27 08:39:34,669 Output from free -m... :
ERROR [os-metrics-7] 2015-08-27 08:39:34,670 Short os-stats collector failed
TRACE [os-metrics-5] 2015-08-27 08:39:34,677 Output from iostat -c -m 60 2... :
TRACE [os-metrics-5] 2015-08-27 08:39:34,678 Starting process: iostat -c -m 60 2
TRACE [os-metrics-6] 2015-08-27 08:39:34,682 Starting process: df --print-type --no-sync --block-size=1G --local
TRACE [os-metrics-6] 2015-08-27 08:39:34,684 Output from df --print-type --no-sync --block-size=1G --local... :
我想以任何方式导致问题的命令是 free -m,这是有道理的,因为它显示了有多少内存可用和已使用。我尝试使用这些新信息进行更多研究,并找到了一个可能的解决方案:人们建议检查我系统上的 cassandra 用户是否具有发出命令的必要权限。我以用户身份登录并且没有任何权限问题,free -m 显示通常的输出(与以root身份登录时显示的相同):
total used free shared buff/cache available
Mem: 7752 4768 145 27 2838 2705
Swap: 8191 64 8127
我运行不知道问题出在哪里,这就是为什么我希望在这里得到一些帮助。
关于我的系统和集群的更多信息:
OS: 美分OS 7.1.1503
Cassandra 版本:DataStax Community 版本 2.1.8
OpsCenter 和代理版本:5.2.0
Cassandra 和代理 运行 作为 cassandra 用户,OpsCenter 运行s 作为 root。
希望任何人都知道可能是什么问题。提前致谢,如果您需要任何进一步的信息,我很乐意提供。
顺便说一句:OS:已用内存是我迄今为止发现的唯一不起作用的统计数据。 OS: Memory Free 图无论出于何种原因都有效。
编辑:我刚刚看到,在某些情况下,我还会得到堆栈跟踪以及错误消息:
java.lang.NullPointerException
at clojure.lang.Numbers.ops(Numbers.java:942)
at clojure.lang.Numbers.lt(Numbers.java:219)
at clojure.lang.Numbers.min(Numbers.java:4007)
at opsagent.rollup$add_value.invoke(rollup.clj:173)
at opsagent.rollup$process_keypair$fn__1465.invoke(rollup.clj:250)
at opsagent.cache$update_cache_value_default$fn__1166$fn__1167.invoke(cache.clj:25)
at clojure.lang.AFn.applyToHelper(AFn.java:161)
at clojure.lang.AFn.applyTo(AFn.java:151)
at clojure.lang.Ref.alter(Ref.java:174)
at clojure.core$alter.doInvoke(core.clj:2244)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at opsagent.cache$update_cache_value_default$fn__1166.invoke(cache.clj:25)
at clojure.lang.AFn.call(AFn.java:18)
at clojure.lang.LockingTransaction.run(LockingTransaction.java:263)
at clojure.lang.LockingTransaction.runInTransaction(LockingTransaction.java:231)
at opsagent.cache$update_cache_value_default.invoke(cache.clj:24)
at opsagent.rollup$process_keypair.invoke(rollup.clj:250)
at opsagent.rollup$process_metric_map.invoke(rollup.clj:256)
at opsagent.os.collection$start_os_stat_collection$send_metric__16618.invoke(collection.clj:80)
at opsagent.os.linux_metrics$sendmap.invoke(linux_metrics.clj:12)
at opsagent.os.linux_metrics$report_mem_stats.invoke(linux_metrics.clj:134)
at opsagent.os.linux_metrics$collectors$wrap_short_collector__10821$fn__10822.invoke(linux_metrics.clj:270)
at opsagent.os.collection$start_pool$fn__16589.invoke(collection.clj:39)
at clojure.lang.AFn.run(AFn.java:24)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access1(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我的猜测是 Centos 7.1 使用 procps-ng
,其中 free
的输出与“经典”free
不兼容。这是一个已知问题,将在即将发布的 5.2 补丁版本(不是 5.2.1,而是之后的版本)中修复。