1. 程式人生 > >Cassandra JMX 監控配置

Cassandra JMX 監控配置

最近安裝cassandra到產品伺服器,很多東西要求就嚴格了很多,比如perf中使用的JMX,以前是隻要知道ip就能訪問,但是產品伺服器就不行了,這樣存在安全隱患,nodetool -h host 可以新增和刪除節點。所以今天要講的東西就是cassandra jmx的授權和訪問控制。

這裡講的是第一種,最常用的使用密碼和訪問控制檔案方式,其他方式後面有時間再跟進。

1 修改$CASSANDRA_HOME/conf/cassandra-env.sh 檔案

  • 設定你的伺服器(需要監控的機器)IP
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=172.29.1.18"

  • cassandra預設是啟用本地無需授權方式訪問,這裡我們需要遠端監控就需要改變下方式:修改LOCAL_JMX為no
LOCAL_JMX=no

2 設定JMX中authentication需要用到的檔案

## Basic file based authn & authz
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access"

  • 建立檔案 /etc/cassandra/jmxremote.password,新增角色和密碼:(這裡的cassandra是使用者名稱,密碼是後面的cassandra,可以改為你自己的)
monitorRole QED
controlRole R&D
cassandra cassandra
  • 修改jmxremote.password訪問許可權:(cassandra:cassandra  只是個例子,填入你自己的啟動cassandra的使用者和使用者組)
chown cassandra:cassandra /etc/cassandra/jmxremote.password
chmod 400 /etc/cassandra/jmxremote.password
  • 建立檔案 /etc/cassandra/jmxremote.access, 新增角色許可權控制:
monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.*,javax.management.timer.* \
unregister

說明: 

readonly 是智慧讀取MBean中的只讀屬性。

readwrite 是可以使用MBean進行程式的引數修改和控制程式行為。

3 啟動cassandra, 使用nodetool訪問:

nodetool status -u cassandra -pw cassandra


參考材料: