DataStax Opscenter 代理無法連接:“無法找到 cassandra.yaml 配置文件”
我在 Windows Server 2012 R2 Datacenter 機器上安裝了 Datastax Community Edition v2.0.3。安裝 vanilla 後,我無法使用 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
在兩個不同的地方擁有也不理想。
我在等效的SO question的幫助下解決了這個問題。
我
conf_location
在local.conf
文件中設置時使用了引號,刪除引號解決了這個問題。
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後還是沒有出現,能具體分享一下你是怎麼創建的嗎?