添加给定。在Cassandra.sh文件中:
JVM_OPTS ="$ JVM_OPTS - javaagent:/etc/卡桑德拉/jmx_prometheus_javaagent-0.10.jar = 7070:/etc/卡桑德拉/jmx_exporter.yml"
无法访问curl http://10.x.x.13:7070
按议定。记录在
ERROR: apport (pid 19530) Mon Aug 2 14:51:36 2021:呼叫pid 19507,信号6,核心限制0ERROR: apport (pid 19530) Mon Aug 2 14:51:36 2021: executable:/usr/lib/jvm/java-8-oracle/jre/bin/java(命令行"java - xloggc:/var/log/cassandra/gc.log -javaagent:/etc/cassandra/jmx_prometheus_javaagent-0.10.jar=7070:/etc/cassandra/jmx_export .yml- javaagent:/etc/卡桑德拉/jmx_prometheus_javaagent-0.10.jar = 7070:/etc/卡桑德拉/jmx_exporter。yml -ea -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:StringTableSize=1000003 -XX:+ uswayspretouch -XX:+ usebiasedlocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -Djava.net.preferIPv4Stack=true -Xms4G -Xmx4G -Xmn900M -XX:+UseG1GC -XX:G1RSetUpdatingPauseTimePercent=5 -XX:MaxGCPauseMillis=600 -XX:InitiatingHeapOccupancyPercent=30 -XX:ParallelGCThreads=4 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC-XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure -XX:+ usegclogfileroation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M -XX:CompileCommandFile=/etc/cassandra/hotspot_compiler -javaagent:/usr/share/cassandra/lib/jam -0.3.0.jar - cassandra. jmm .local. jar= 7199 -Dcom.sun.management.jmxremote港。验证= false -Dcom.sun.management.jmxremote.password.file =/etc/卡桑德拉/现在。密码-Djava.library。路径=/usr/share/卡桑德拉/lib/sigar-bin -Dcassandra。metricsReporterConfigFile= -Dlogback.configurationFile=logback.xmllogdir =/var/log/卡桑德拉-Dcassandra。storagedir =/var/lib/卡桑德拉-Dcassandra-pidfile =/var/运行/卡桑德拉/卡桑德拉。pid -cp/etc/cassandra:/usr/share/cassandra/lib/hdrhistogram2.1 .jar:/usr/share/cassandra/lib/ST4-4.0.8.jar:/usr/share/cassandra/lib/antlr-runtime-3.5.2.jar:/usr/share/cassandra/lib/asm-5.0.4.jar:/usr/share/cassandra/lib/cassandra-driver-core-3.0.1 .jar:/usr/share/cassandra/lib/cassandra- shadered .jar:/usr/share/cassandra/lib/hdrhistogram2.1 .jar:/usr/share/cassandra/lib/hdrhistogram2.1 .jar:/usr/share/cassandra/lib/hdrhistogram2.1 .jar:/usr/share/cassandra/lib/hdrhistogram2.1 .jar:/usr/share/cassandra/lib/hdrhistogram2.1 .jar:/usr/share/cassandra/lib/hdrhistogram2.1 .jar:/usr/share/cassandra/lib/hdrhistogram2.1 .jar:/usr/share/cassandra/lib
当我运行>
输出: -
cassand+ 1308 0.3 2.1 4619804 351380 ? Sl Aug02 3:38 /usr/lib/jvm/java-8-oracle/jre/bin/java -Xmx1024M -Dagent-pidfile=/var/run/datastax-agent/datastax-agent.pid -Dlog4j.configuration=file:/etc/datastax-agent/log4j.properties -Djava.security.auth.login.config=/etc/datastax-agent/kerberos.config -jar datastax-agent-6.7.7-standalone.jar /var/lib/datastax-agent/conf/address.yaml
cassand+ 7835 34.4 55.4 56100300 9109792 ? SLl Aug02 362:16 java -Xloggc:/var/log/cassandra/gc.log -ea -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:StringTableSize=1000003 -XX:+AlwaysPreTouch -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -Djava.net.preferIPv4Stack=true -Xms4G -Xmx4G -Xmn900M -XX:+UseG1GC -XX:G1RSetUpdatingPauseTimePercent=5 -XX:MaxGCPauseMillis=600 -XX:InitiatingHeapOccupancyPercent=30 -XX:ParallelGCThreads=4 -XX:ConcGCThreads=4 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -XX:+PrintPromotionFailure -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M -XX:CompileCommandFile=/etc/cassandra/hotspot_compiler -Dcom.sun.management.jmxremote.authenticate=false
根据您发布的输出,看起来您已经添加了两次Prometheus JAR。
我注意到您还运行了OpsCenter代理。您应该只使用OpsCenter代理或Prometheus代理——而不是同时使用两者,因为它们在大多数情况下收集相同的指标。
作为一个旁注,如果你不知道,DataStax有Apache Cassandra(又名MCAC)的Metrics Collector,收集操作系统(内存,磁盘,CPU等)和Cassandra指标构建在collectd
+ Prometheus + Grafana。
安装只需要3个步骤:
- 下载代理
- 将代理JAR添加到JVM选项中。
- 重启卡桑德拉。
它还带有预配置的Prometheus + Grafana仪表板,因此您可以在几分钟内启动并运行它们。它是开源的,所以可以免费使用——https://github.com/datastax/metric-collector-for-apache-cassandra。干杯!
注:我看到您正在使用G1 GC,只分配了少量内存:
-Xms4G -Xmx4G -Xmn900M -XX:+UseG1GC
G1 GC是为较大的堆大小而设计的,根据我的经验,它在较小的堆上表现不佳。您也不应该将NewGen的大小(-Xmn900M
)固定到一个特定的值,因为G1 GC需要能够根据工作负载、访问模式等动态调整NewGen的大小。
如果您的节点没有足够的内存,您应该切换回CMS (C*中的默认值)。我建议在生产环境中至少使用8GB堆,使用CMS时最好使用16GB堆,最多使用24GB堆。对于最大20到31GB的堆使用G1 GC(注意,32GB堆的可寻址对象少于31GB)。