yahoo / CMAK

CMAK is a tool for managing Apache Kafka clusters
Apache License 2.0
11.81k stars 2.5k forks source link

Debian package install - add README notes about CLI options app-home and log settings? #381

Open dazza-codes opened 7 years ago

dazza-codes commented 7 years ago

On startup, the app logs errors about failing to find or create files; are there any CLI options to specify the location of the app config file(s) and/or the app-home and log settings?

e.g. using the debian package build and installation:

ubuntu@kafka:~/kafka-manager$ git log -n2
commit 7e12dd4f5134ef05366592a3f72ba3a1a61b800a
Author: patelh <hiral@hiralpatel.com>
Date:   Wed Apr 12 21:13:19 2017 -0700

    Increment version

ubuntu@kafka:~$ cd
ubuntu@kafka:~$ which kafka-manager
/usr/bin/kafka-manager
ubuntu@kafka:~$ ll /usr/bin/kafka-manager 
lrwxrwxrwx 1 root root 42 Apr 17 18:11 /usr/bin/kafka-manager -> /usr/share/kafka-manager/bin/kafka-manager*

ubuntu@kafka:~$ ZK_HOSTS=localhost:2181 kafka-manager
Oops, cannot start the server.
java.io.FileNotFoundException: /usr/share/kafka-manager/RUNNING_PID (Permission denied)
    at java.io.FileOutputStream.open0(Native Method)
    at java.io.FileOutputStream.open(FileOutputStream.java:270)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
    at play.core.server.ProdServerStart$.createPidFile(ProdServerStart.scala:131)
    at play.core.server.ProdServerStart$.start(ProdServerStart.scala:45)
    at play.core.server.ProdServerStart$.main(ProdServerStart.scala:27)
    at play.core.server.ProdServerStart.main(ProdServerStart.scala)

ubuntu@kafka:~$ sudo ZK_HOSTS=localhost:2181 kafka-manager
16:36:16,771 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
16:36:16,771 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
16:36:16,771 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/usr/share/kafka-manager/conf/logback.xml]
16:36:16,867 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
16:36:16,868 |-INFO in ch.qos.logback.core.joran.action.ConversionRuleAction - registering conversion word coloredLevel with class [play.api.Logger$ColoredLevel]
16:36:16,869 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
16:36:16,874 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [FILE]
16:36:16,906 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
16:36:16,943 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@18:27 - no applicable action for [totalSizeCap], current ElementPath  is [[configuration][appender][rollingPolicy][totalSizeCap]]
16:36:16,946 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - No compression will be used
16:36:16,947 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern application.home_IS_UNDEFINED/logs/application.%d{yyyy-MM-dd}.log for the active file
16:36:16,950 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'application.home_IS_UNDEFINED/logs/application.%d{yyyy-MM-dd}.log'.
16:36:16,950 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
16:36:16,954 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Tue Apr 18 16:36:16 UTC 2017
16:36:16,957 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Active log file name: application.home_IS_UNDEFINED/logs/application.log
16:36:16,957 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - File property is set to [application.home_IS_UNDEFINED/logs/application.log]
16:36:16,958 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Failed to create parent directories for [/usr/share/kafka-manager/application.home_IS_UNDEFINED/logs/application.log]
16:36:16,958 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - openFile(application.home_IS_UNDEFINED/logs/application.log,true) call failed. java.io.FileNotFoundException: application.home_IS_UNDEFINED/logs/application.log (No such file or directory)
    at java.io.FileNotFoundException: application.home_IS_UNDEFINED/logs/application.log (No such file or directory)
    at  at java.io.FileOutputStream.open0(Native Method)
    at  at java.io.FileOutputStream.open(FileOutputStream.java:270)
    at  at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
    at  at ch.qos.logback.core.recovery.ResilientFileOutputStream.<init>(ResilientFileOutputStream.java:28)
    at  at ch.qos.logback.core.FileAppender.openFile(FileAppender.java:148)
    at  at ch.qos.logback.core.FileAppender.start(FileAppender.java:108)
    at  at ch.qos.logback.core.rolling.RollingFileAppender.start(RollingFileAppender.java:86)
    at  at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:96)
    at  at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:317)
    at  at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:196)
    at  at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:182)
    at  at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:149)
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:135)
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:99)
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:49)
    at  at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:77)
    at  at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:152)
    at  at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85)
    at  at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
    at  at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
    at  at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
    at  at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
    at  at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
    at  at akka.event.slf4j.Logger$.apply(Slf4jLogger.scala:30)
    at  at akka.event.slf4j.SLF4JLogging$class.log(Slf4jLogger.scala:19)
    at  at akka.event.slf4j.Slf4jLogger.log$lzycompute(Slf4jLogger.scala:54)
    at  at akka.event.slf4j.Slf4jLogger.log(Slf4jLogger.scala:54)
    at  at akka.event.slf4j.Slf4jLogger$$anonfun$receive$1.applyOrElse(Slf4jLogger.scala:80)
    at  at akka.actor.Actor$class.aroundReceive(Actor.scala:467)
    at  at akka.event.slf4j.Slf4jLogger.aroundReceive(Slf4jLogger.scala:54)
    at  at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
    at  at akka.actor.ActorCell.invoke(ActorCell.scala:487)
    at  at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
    at  at akka.dispatch.Mailbox.run(Mailbox.scala:220)
    at  at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)
    at  at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at  at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at  at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at  at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
dazza-codes commented 7 years ago

Note that the failures to set an app-home or find log files etc are not fixed by using the -Dconfig.file option, e.g.

ubuntu@kafka:~$ sudo ZK_HOSTS=localhost:2181 kafka-manager -Dconfig.file=/usr/share/kafka-manager/conf/application.conf
16:58:39,719 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
16:58:39,719 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
16:58:39,719 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/usr/share/kafka-manager/conf/logback.xml]
16:58:39,809 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
16:58:39,810 |-INFO in ch.qos.logback.core.joran.action.ConversionRuleAction - registering conversion word coloredLevel with class [play.api.Logger$ColoredLevel]
16:58:39,810 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
16:58:39,815 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [FILE]
16:58:39,835 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
16:58:39,862 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@18:27 - no applicable action for [totalSizeCap], current ElementPath  is [[configuration][appender][rollingPolicy][totalSizeCap]]
16:58:39,865 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - No compression will be used
16:58:39,866 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern application.home_IS_UNDEFINED/logs/application.%d{yyyy-MM-dd}.log for the active file
16:58:39,869 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'application.home_IS_UNDEFINED/logs/application.%d{yyyy-MM-dd}.log'.
16:58:39,869 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
16:58:39,871 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Tue Apr 18 16:58:39 UTC 2017
16:58:39,873 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Active log file name: application.home_IS_UNDEFINED/logs/application.log
16:58:39,873 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - File property is set to [application.home_IS_UNDEFINED/logs/application.log]
16:58:39,874 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Failed to create parent directories for [/usr/share/kafka-manager/application.home_IS_UNDEFINED/logs/application.log]
16:58:39,874 |-ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - openFile(application.home_IS_UNDEFINED/logs/application.log,true) call failed. java.io.FileNotFoundException: application.home_IS_UNDEFINED/logs/application.log (No such file or directory)
    at java.io.FileNotFoundException: application.home_IS_UNDEFINED/logs/application.log (No such file or directory)
    at  at java.io.FileOutputStream.open0(Native Method)
    at  at java.io.FileOutputStream.open(FileOutputStream.java:270)
    at  at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
    at  at ch.qos.logback.core.recovery.ResilientFileOutputStream.<init>(ResilientFileOutputStream.java:28)
    at  at ch.qos.logback.core.FileAppender.openFile(FileAppender.java:148)
    at  at ch.qos.logback.core.FileAppender.start(FileAppender.java:108)
    at  at ch.qos.logback.core.rolling.RollingFileAppender.start(RollingFileAppender.java:86)
    at  at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:96)
    at  at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:317)
    at  at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:196)
    at  at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:182)
    at  at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62)
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:149)
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:135)
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:99)
    at  at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:49)
    at  at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:77)
    at  at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:152)
    at  at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85)
    at  at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
    at  at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
    at  at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
    at  at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
    at  at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
    at  at akka.event.slf4j.Logger$.apply(Slf4jLogger.scala:30)
    at  at akka.event.slf4j.SLF4JLogging$class.log(Slf4jLogger.scala:19)
    at  at akka.event.slf4j.Slf4jLogger.log$lzycompute(Slf4jLogger.scala:54)
    at  at akka.event.slf4j.Slf4jLogger.log(Slf4jLogger.scala:54)
    at  at akka.event.slf4j.Slf4jLogger$$anonfun$receive$1.applyOrElse(Slf4jLogger.scala:80)
    at  at akka.actor.Actor$class.aroundReceive(Actor.scala:467)
    at  at akka.event.slf4j.Slf4jLogger.aroundReceive(Slf4jLogger.scala:54)
    at  at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
    at  at akka.actor.ActorCell.invoke(ActorCell.scala:487)
    at  at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
    at  at akka.dispatch.Mailbox.run(Mailbox.scala:220)
    at  at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)
    at  at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at  at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at  at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at  at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
16:58:39,874 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
16:58:39,875 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
16:58:39,877 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
16:58:39,878 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.classic.AsyncAppender]
16:58:39,879 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [ASYNCFILE]
16:58:39,880 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [FILE] to ch.qos.logback.classic.AsyncAppender[ASYNCFILE]
16:58:39,880 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNCFILE] - Attaching appender named [FILE] to AsyncAppender.
16:58:39,880 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNCFILE] - Setting discardingThreshold to 51
16:58:39,880 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.classic.AsyncAppender]
16:58:39,880 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [ASYNCSTDOUT]
16:58:39,880 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to ch.qos.logback.classic.AsyncAppender[ASYNCSTDOUT]
16:58:39,880 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNCSTDOUT] - Attaching appender named [STDOUT] to AsyncAppender.
16:58:39,880 |-INFO in ch.qos.logback.classic.AsyncAppender[ASYNCSTDOUT] - Setting discardingThreshold to 51
16:58:39,881 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [play] to INFO
16:58:39,881 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [application] to INFO
16:58:39,881 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [kafka.manager] to INFO
16:58:39,881 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.avaje.ebean.config.PropertyMapLoader] to OFF
16:58:39,881 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.avaje.ebeaninternal.server.core.XmlConfigLoader] to OFF
16:58:39,881 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.avaje.ebeaninternal.server.lib.BackgroundThread] to OFF
16:58:39,881 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.gargoylesoftware.htmlunit.javascript] to OFF
16:58:39,881 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.apache.zookeeper] to INFO
16:58:39,881 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to WARN
16:58:39,881 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [ASYNCFILE] to Logger[ROOT]
16:58:39,881 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [ASYNCSTDOUT] to Logger[ROOT]
16:58:39,881 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
16:58:39,882 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@157dbde0 - Registering current configuration as safe fallback point

[warn] o.a.c.r.ExponentialBackoffRetry - maxRetries too large (100). Pinning to 29
[info] k.m.a.KafkaManagerActor - Starting curator...