![DataStax Opscenter Agent 无法连接:“无法找到 cassandra.yaml 配置文件”](https://linux22.com/image/622334/DataStax%20Opscenter%20Agent%20%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%EF%BC%9A%E2%80%9C%E6%97%A0%E6%B3%95%E6%89%BE%E5%88%B0%20cassandra.yaml%20%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E2%80%9D.png)
我在 Windows Server 2012 R2 Datacenter 机器上安装了 Datastax Community Edition v2.0.3。在原始安装后,我无法使用 OpsCenter 连接到数据库,因为代理无法启动:页面顶部显示“1 个代理中 0 个已连接”。我可以使用 CQLSH 连接到数据库本身。v2.0.2 不会出现此问题。
我的datastax_opscenter_agent-stderr.log
文件包含以下内容:
2013-12-05 16:16:54 Commons Daemon procrun stderr initialized
Exception in thread "Initialization" clojure.lang.ExceptionInfo: throw+: {:type :bad-permissions, :message "Unable to locate the cassandra.yaml configuration file. If your configuration file is not located with the Cassandra install, please set the 'conf_location' option in the Cassandra section of the OpsCenter cluster configuration file and restart opscenterd. Checked the following directories: [\"/etc/dse/cassandra/cassandra.yaml\" \"/etc/cassandra/conf/cassandra.yaml\" \"/etc/cassandra/cassandra.yaml\" \"C:\\\\Program Files\\\\DataStax Community\\\\apache-cassandra\\\\bin\\\\conf\\\\cassandra.yaml\"]"} {:object {:type :bad-permissions, :message "Unable to locate the cassandra.yaml configuration file. If your configuration file is not located with the Cassandra install, please set the 'conf_location' option in the Cassandra section of the OpsCenter cluster configuration file and restart opscenterd. Checked the following directories: [\"/etc/dse/cassandra/cassandra.yaml\" \"/etc/cassandra/conf/cassandra.yaml\" \"/etc/cassandra/cassandra.yaml\" \"C:\\\\Program Files\\\\DataStax Community\\\\apache-cassandra\\\\bin\\\\conf\\\\cassandra.yaml\"]"}, :environment {tar-location "C:\\Program Files\\DataStax Community\\apache-cassandra\\bin\\conf\\cassandra.yaml", conf nil, checked-files ["/etc/dse/cassandra/cassandra.yaml" "/etc/cassandra/conf/cassandra.yaml" "/etc/cassandra/cassandra.yaml" "C:\\Program Files\\DataStax Community\\apache-cassandra\\bin\\conf\\cassandra.yaml"]}}
at opsagent.util.cassandra_util$cassandra_conf_location.invoke(cassandra_util.clj:118)
at opsagent.util.cassandra_util$get_cassandra_conf.invoke(cassandra_util.clj:130)
at opsagent.opsagent$create_thrift_conf_vars.invoke(opsagent.clj:52)
at opsagent.opsagent$setup_thrift.invoke(opsagent.clj:138)
at opsagent.jmx$determine_ip.invoke(jmx.clj:333)
at opsagent.jmx$setup_jmx$fn__1309.invoke(jmx.clj:350)
at clojure.lang.AFn.run(AFn.java:24)
at java.lang.Thread.run(Unknown Source)
事实上,目录cassandra.yaml
中有一个文件C:\Program Files\DataStax Community\apache-cassandra\conf
,它应该在那个位置。C:\\Program Files\\DataStax Community\\apache-cassandra\\bin\\conf\\cassandra.yaml
但上面的消息表明它查找的是 (注意 \bin)。
按照日志的建议设置conf_location
中的选项,会导致相同的错误。opscenter\conf\clusters\local.conf
在整个过程中,Windows 防火墙均已关闭。
编辑
我做了一些修改,现在我在日志中得到了相同的异常,只是它一直在寻找的路径cassanda.yaml
已经从
'C:\Program Files\DataStax Community\apache-cassandra\bin\conf\cassandra.yaml'
到
“C:\Program Files\DataStax Community\utils\conf\cassandra.yaml”
我不知道我做了什么来改变这一现状。
我尝试将 cassandra.yaml 复制到上述目录。这消除了 中的异常datastax_opscenter_agent-stderr.log
,但 OpsCenter 仍然显示“1 个代理中 0 个已连接”。但是,仪表板现在在图表中显示数据。我还能够向架构添加键空间,但在创建后它不会显示。CLQSH
不过,可以使用 访问它。显然,在两个不同的地方拥有cassandra.yaml
也不理想。
答案1
对于 cassandra.yaml 的位置,您可以cassandra_conf: "C:\Program Files\DataStax Community\apache-cassandra\bin\conf\cassandra.yaml"
在 address.yaml 中设置,根据需要替换为适当的路径。您需要重新启动代理服务。
但 OpsCenter 仍然显示“1 个代理中 0 个已连接”。
我会检查 agent.log 中是否有任何与中央 opscenterd 进程连接的错误。它正在收集和存储数据(图表),这意味着它能够在某个时候连接。
也可能是 opscenterd 和代理之间的版本不匹配,但这种情况仅在您单独升级其中一个时才会发生。版本不匹配在 UI 中显示为无连接。
我还可以向模式中添加键空间,但创建后它不会显示出来。
密钥空间可能需要一分钟左右才能显示在 OpsCenter 中。如果刷新 UI 后仍未显示,您能否具体分享一下您是如何创建的?
答案2
我在同等帮助下解决了这个问题那么问题来了。
conf_location
我在文件中设置时使用了引号local.conf
,删除引号解决了这个问题。
答案3
我在 Windows 7 x64 中安装 DataStax Community Edition v1.2.15 时遇到了同样的问题。我让它正常工作,然后在备份和回滚之后,我使用 Beyond Compare 来准确确定哪些更改实际上解决了这个问题。Rik 的回答有些含糊,否则是正确的,而在等价的 SO 问题,因此我提供更完整的答案。
在 C:\Program Files\DataStax Community\opscenter\conf\clusters\local.conf 中,默认内容为 ..
[cassandra]
seed_hosts = 127.0.0.1
.. 应改为 ..
[cassandra]
seed_hosts = 127.0.0.1
conf_location = C:\\Program Files\\DataStax Community\\apache-cassandra\\conf\\cassandra.yaml
重新启动服务,然后在 OpsCenter 中如果仍然显示“0 个代理,共 1 个”,请单击“立即修复”链接。就我而言,直到我单击此链接后,它才自动更新并显示“1 个代理,共 1 个”,没有任何提示或警报。