Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Container fails because ./logs/es.log #340

Closed
avarf opened this issue Oct 29, 2019 · 8 comments
Closed

Container fails because ./logs/es.log #340

avarf opened this issue Oct 29, 2019 · 8 comments

Comments

@avarf
Copy link

avarf commented Oct 29, 2019

I am following the instructions of the docker hub to launch the sonarqube via docker. I am able to run the sonarqube without enviroment values and go to the web UI but when I run the command with the environment variables it fails.

What I did:

sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536

sudo su
ulimit -n 65536
ulimit -u 4096
exit

# sonarqube first installiation
sudo mkdir -p /home/ali/sonarqube_home
export SONARQUBE_HOME=/home/ali/sonarqube_home

docker run --rm \
-v $SONARQUBE_HOME/conf:/opt/sonarqube/conf \
-v $SONARQUBE_HOME/extensions:/opt/sonarqube/extensions \
-v $SONARQUBE_HOME/data:/opt/sonarqube/data \
sonarqube --init

docker run -d --name sonarqube \
  -p 9090:9000 \
  -v $SONARQUBE_HOME/conf:/opt/sonarqube/conf \
  -v $SONARQUBE_HOME/extensions:/opt/sonarqube/extensions \
  -v $SONARQUBE_HOME/logs:/opt/sonarqube/logs \
  -v $SONARQUBE_HOME/data:/opt/sonarqube/data \
  sonarqube

And the logs of sonarqube:

tail: cannot open './logs/es.log' for reading: No such file or directory
15:23:46.151 [main] WARN org.sonar.application.config.AppSettingsLoaderImpl - Configuration file not found: /opt/sonarqube/conf/sonar.properties
2019.10.29 15:23:46 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp
2019.10.29 15:23:46 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2019.10.29 15:23:46 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/opt/sonarqube/elasticsearch]: /opt/sonarqube/elasticsearch/bin/elasticsearch
2019.10.29 15:23:46 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
2019.10.29 15:23:46 INFO  app[][o.e.p.PluginsService] no modules loaded
2019.10.29 15:23:46 INFO  app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
2019-10-29 15:23:48,584 main ERROR Unable to create file /opt/sonarqube/logs/es.log java.io.IOException: Permission denied
	at java.base/java.io.UnixFileSystem.createFileExclusively(Native Method)
	at java.base/java.io.File.createNewFile(Unknown Source)
	at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:628)
	at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:608)
	at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:113)
	at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
	at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:188)
	at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:145)
	at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:61)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:123)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:959)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:899)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:891)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:514)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:250)
	at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:547)
	at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:263)
	at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:234)
	at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:127)
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:302)
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
	at org.elasticsearch.cli.Command.main(Command.java:90)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93)

2019-10-29 15:23:48,590 main ERROR Could not create plugin of type class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@4f1bfe23] unable to create manager for [/opt/sonarqube/logs/es.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@e19bb76[pattern=/opt/sonarqube/logs/es.%d{yyyy-MM-dd}.log, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, modulate=true)]), strategy=DefaultRolloverStrategy(min=-2147483648, max=2147483647, useMax=false), advertiseURI=null, layout=%d{yyyy.MM.dd HH:mm:ss} %-5level es[][%logger{1.}] %msg%n, filePermissions=null, fileOwner=null]] java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@4f1bfe23] unable to create manager for [/opt/sonarqube/logs/es.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@e19bb76[pattern=/opt/sonarqube/logs/es.%d{yyyy-MM-dd}.log, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, modulate=true)]), strategy=DefaultRolloverStrategy(min=-2147483648, max=2147483647, useMax=false), advertiseURI=null, layout=%d{yyyy.MM.dd HH:mm:ss} %-5level es[][%logger{1.}] %msg%n, filePermissions=null, fileOwner=null]]
	at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:115)
	at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
	at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:188)
	at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:145)
	at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:61)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:123)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:959)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:899)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:891)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:514)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:250)
	at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:547)
	at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:263)
	at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:234)
	at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:127)
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:302)
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
	at org.elasticsearch.cli.Command.main(Command.java:90)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93)

2019-10-29 15:23:48,592 main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:235)
	at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:135)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:959)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:899)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:891)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:514)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238)
	at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:250)
	at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:547)
	at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:263)
	at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:234)
	at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:127)
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:302)
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
	at org.elasticsearch.cli.Command.main(Command.java:90)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93)

2019-10-29 15:23:48,593 main ERROR Null object returned for RollingFile in Appenders.
2019-10-29 15:23:48,593 main ERROR Unable to locate appender "file_es" for logger config "root"
2019.10.29 15:23:49 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 1
2019.10.29 15:23:49 INFO  app[][o.s.a.SchedulerImpl] Process[es] is stopped
2019.10.29 15:23:49 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped

Can you please let me know how I can fix this problem?

@charleech
Copy link

If we execute the following command: -

docker run --rm library/sonarqube:latest id sonarqube

We will see the following result

uid=999(sonarqube) gid=999(sonarqube) groups=999(sonarqube)

This means the owner and group for $SONARQUBE_HOME at the host machine should be 999:999 as well.

To change the owner of $SONARQUBE_HOME can be done via the following command at the host machine.

chown -R 999:999 $SONARQUBE_HOME

@avarf
Copy link
Author

avarf commented Oct 31, 2019

@charleech Thank you for your answer. I ended up installing the sonarqube natively but the official documentation for both the native installation and especially docker are not detailed and they ignore many small steps like this that make the installation a very slow process.

@smrain
Copy link

smrain commented Oct 31, 2019

mybe:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

1.run command vi /etc/sysctl.conf
2.add content vm.max_map_count=262144
3.run command sysctl -p

@avarf
Copy link
Author

avarf commented Oct 31, 2019

@smrain I knew about the virtual memory and I executed all the required commands, the problem was clearly about the permission access and not the virtual memory.

@CodeAnil
Copy link

I am also getting the same error when trying to mount the volumes

cannot open './logs/es.log' for reading: No such file or directory
11:29:54.652 [main] WARN org.sonar.application.config.AppSettingsLoaderImpl - Configuration file not found: /opt/sonarqube/conf/sonar.properties
Exception in thread "main" java.lang.IllegalArgumentException: Command-line argument must start with -D, for example -Dsonar.jdbc.username=sonar. Got: --init
at org.sonar.application.config.CommandLineParser.argumentsToProperties(CommandLineParser.java:56)
at org.sonar.application.config.CommandLineParser.parseArguments(CommandLineParser.java:37)
at org.sonar.application.config.AppSettingsLoaderImpl.load(AppSettingsLoaderImpl.java:66)
at org.sonar.application.App.start(App.java:51)
at org.sonar.application.App.main(App.java:98)
[root@sonar sonarqube]# chown -R 999:999 $SONARQUBE_HOME
[root@sonar sonarqube]# docker run --rm -v $SONARQUBE_HOME/conf:/opt/sonarqube/conf -v $SONARQUBE_HOME/extensions:/opt/sonarqube/extensions -v $SONARQUBE_HOME/data:/opt/sonarqube/data sonarqube --init
tail: cannot open './logs/es.log' for reading: No such file or directory
11:30:42.912 [main] WARN org.sonar.application.config.AppSettingsLoaderImpl - Configuration file not found: /opt/sonarqube/conf/sonar.properties
Exception in thread "main" java.lang.IllegalArgumentException: Command-line argument must start with -D, for example -Dsonar.jdbc.username=sonar. Got: --init
at org.sonar.application.config.CommandLineParser.argumentsToProperties(CommandLineParser.java:56)
at org.sonar.application.config.CommandLineParser.parseArguments(CommandLineParser.java:37)
at org.sonar.application.config.AppSettingsLoaderImpl.load(AppSettingsLoaderImpl.java:66)
at org.sonar.application.App.start(App.java:51)
at org.sonar.application.App.main(App.java:98)

@ghost
Copy link

ghost commented Nov 13, 2019

The current documentation is only for SQ 8 version. We are working on publishing as well the documentation for the 7.9 LTS version. Basically you need to use volume instead of binded-folder, and there is no --init command : start the container, this will populate the conf and extensions folders.

@ghost
Copy link

ghost commented Nov 18, 2019

The documentation is now up to date. Please follow the new instructions and reopen an issue if needed :)

@ghost ghost closed this as completed Nov 18, 2019
@chepix10
Copy link

Hi @pierre-guillot-sonarsource .
I've followed the documentation for the 7.9 LTS but it also fails with the permission error.
Volumes:

docker volume ls
DRIVER VOLUME NAME
local postgres_db
local sonarqube_conf
local sonarqube_data
local sonarqube_extensions
local sonarqube_logs

docker run --rm -p 9000:9000 \ -v sonarqube_conf:/opt/sonarqube/conf \ -v sonarqube_extensions:/opt/sonarqube/extensions \ -v sonarqube_logs:/opt/sonarqube/logs \ -v sonarqube_data:/opt/sonarqube/data \ sonarqube
tail: cannot open './logs/es.log' for reading: No such file or directory
14:51:17.220 [main] WARN org.sonar.application.config.AppSettingsLoaderImpl - Configuration file not found: /opt/sonarqube/conf/sonar.properties
2019.12.17 14:51:17 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp
2019.12.17 14:51:17 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2019.12.17 14:51:17 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/opt/sonarqube/elasticsearch]: /opt/sonarqube/elasticsearch/bin/elasticsearch
2019.12.17 14:51:17 INFO app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
2019.12.17 14:51:18 INFO app[][o.e.p.PluginsService] no modules loaded
2019.12.17 14:51:18 INFO app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
2019-12-17 14:51:22,870 main ERROR Unable to create file /opt/sonarqube/logs/es.log java.io.IOException: Permission denied

If I only run the container with docker run -d --name sonarqube -p 9000:9000 sonarqube works fine

Thanks for your advice on this

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants