Kibana service start failed

I install Elasticsearch & Kibana 7.2.0, elasticsearch is working with basic license and enable xpack.security, and I create build-in accounts, all of them working with elasticsearch.

But when I start kibana, unfortunately, it's failed and below is the errors from logs

 {
	"type": "log",
	"@timestamp": "2019-07-09T02:38:08Z",
	"tags": ["status", "plugin:snapshot_restore@7.2.0", "error"],
	"pid": 9450,
	"state": "red",
	"message": "Status changed from yellow to red - [data] Elasticsearch cluster did not respond with license information.",
	"prevState": "yellow",
	"prevMsg": "Waiting for Elasticsearch"
} {
	"type": "log",
	"@timestamp": "2019-07-09T02:38:08Z",
	"tags": ["fatal", "root"],
	"pid": 9450,
	"message": "{ ExtractError: Failed to extract the browser archive    at err (/usr/share/kibana/x-pack/plugins/reporting/server/browsers/extract/unzip.js:14:23)    at /usr/share/kibana/node_modules/extract-zip/index.js:52:20    at /usr/share/kibana/node_modules/extract-zip/index.js:112:20    at /usr/share/kibana/node_modules/extract-zip/node_modules/mkdirp/index.js:46:53    at FSReqWrap.oncomplete (fs.js:154:21)  name: 'ExtractError',  cause:   { Error: EACCES: permission denied, mkdir '/var/lib/kibana/headless_shell-linux'     errno: -13,     code: 'EACCES',     syscall: 'mkdir',     path: '/var/lib/kibana/headless_shell-linux' },  isBoom: true,  isServer: true,  data: null,  output:   { statusCode: 500,     payload:      { statusCode: 500,        error: 'Internal Server Error',        message: 'An internal server error occurred' },     headers: {} },  reformat: [Function],  [Symbol(SavedObjectsClientErrorCode)]: 'SavedObjectsClient/generalError' }"
}

Below is the kibana configuration

# Kibana is served by a back end server. This setting specifies the port to use.
server.port: 5601

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
server.host: 0.0.0.0

# Enables you to specify a path to mount Kibana at if you are running behind a proxy.
# Use the `server.rewriteBasePath` setting to tell Kibana if it should remove the basePath
# from requests it receives, and to prevent a deprecation warning at startup.
# This setting cannot end in a slash.
#server.basePath: ""

# Specifies whether Kibana should rewrite requests that are prefixed with
# `server.basePath` or require that they are rewritten by your reverse proxy.
# This setting was effectively always `false` before Kibana 6.3 and will
# default to `true` starting in Kibana 7.0.
#server.rewriteBasePath: false

# The maximum payload size in bytes for incoming server requests.
#server.maxPayloadBytes: 1048576

# The Kibana server's name.  This is used for display purposes.
#server.name: "your-hostname"

# The URLs of the Elasticsearch instances to use for all your queries.
#elasticsearch.hosts: 0.0.0.0

# When this setting's value is true Kibana uses the hostname specified in the server.host
# setting. When the value of this setting is false, Kibana uses the hostname of the host
# that connects to this Kibana instance.
#elasticsearch.preserveHost: true

# Kibana uses an index in Elasticsearch to store saved searches, visualizations and
# dashboards. Kibana creates a new index if the index doesn't already exist.
#kibana.index: ".kibana"

# The default application to load.
#kibana.defaultAppId: "home"

# If your Elasticsearch is protected with basic authentication, these settings provide
# the username and password that the Kibana server uses to perform maintenance on the Kibana
# index at startup. Your Kibana users still need to authenticate with Elasticsearch, which
# is proxied through the Kibana server.
#elasticsearch.username: "user"
#elasticsearch.password: "pass"

# Enables SSL and paths to the PEM-format SSL certificate and SSL key files, respectively.
# These settings enable SSL for outgoing requests from the Kibana server to the browser.
#server.ssl.enabled: false
#server.ssl.certificate: /path/to/your/server.crt
#server.ssl.key: /path/to/your/server.key
# Optional settings that provide the paths to the PEM-format SSL certificate and key files.
# These files validate that your Elasticsearch backend uses the same key files.
#elasticsearch.ssl.certificate: /path/to/your/client.crt
#elasticsearch.ssl.key: /path/to/your/client.key

# Optional setting that enables you to specify a path to the PEM file for the certificate
# authority for your Elasticsearch instance.
#elasticsearch.ssl.certificateAuthorities: [ "/path/to/your/CA.pem" ]

# To disregard the validity of SSL certificates, change this setting's value to 'none'.
#elasticsearch.ssl.verificationMode: full

# Time in milliseconds to wait for Elasticsearch to respond to pings. Defaults to the value of
# the elasticsearch.requestTimeout setting.
#elasticsearch.pingTimeout: 1500

# Time in milliseconds to wait for responses from the back end or Elasticsearch. This value
# must be a positive integer.
#elasticsearch.requestTimeout: 30000

# List of Kibana client-side headers to send to Elasticsearch. To send *no* client-side
# headers, set this value to [] (an empty list).
#elasticsearch.requestHeadersWhitelist: [ authorization ]

# Header names and values that are sent to Elasticsearch. Any custom headers cannot be overwritten
# by client-side headers, regardless of the elasticsearch.requestHeadersWhitelist configuration.
#elasticsearch.customHeaders: {}

# Time in milliseconds for Elasticsearch to wait for responses from shards. Set to 0 to disable.
#elasticsearch.shardTimeout: 30000

# Time in milliseconds to wait for Elasticsearch at Kibana startup before retrying.
#elasticsearch.startupTimeout: 5000

# Logs queries sent to Elasticsearch. Requires logging.verbose set to true.
# Specifies the path where Kibana creates the process ID file.
#pid.file: /var/run/kibana.pid

# Enables you specify a file where Kibana stores log output.
logging.dest: stdout

# Set the value of this setting to true to suppress all logging output.
#logging.silent: false

# Set the value of this setting to true to suppress all logging output other than error messages.
#logging.quiet: false

# Set the value of this setting to true to log all events, including system usage information
# and all requests.
#logging.verbose: false

# Set the interval in milliseconds to sample system and process performance
# metrics. Minimum is 100ms. Defaults to 5000.
#ops.interval: 5000

# Specifies locale to be used for all localizable strings, dates and number formats.
#i18n.locale: "en"
logging.dest: /data/app_logs/kibana/kibana.log

xpack.security.enabled: true

elasticsearch.username: "kibana"
elasticsearch.password: "123456"

@warkolm Could you please help on this ?

Thanks
Wayne

Installed latest version from scratch on CentOS, same result.

My config files:

/etc/elasticsearch/elasticsearch.yml
transport.host: localhost
network.host: 0.0.0.0

/etc/kibana/kibana.yml
server.host: "IP_OF_THE_SERVER"
logging.dest: /var/log/kibana/kibana.log
elasticsearch.hosts: ["http://localhost:9200"]

Here are the error messages I'm getting...

{"type":"log","@timestamp":"2019-07-11T14:14:01Z","tags":["reporting","browser-driver","error"],"pid":2876,"message":"Error code EACCES: Insufficient permissions for extracting the browser archive. Make sure the Kibana data directory (path.data) is owned by the same user that is running Kibana."}
{"type":"log","@timestamp":"2019-07-11T14:14:01Z","tags":["fatal","root"],"pid":2876,"message":"{ ExtractError: Failed to extract the browser archive\n at err (/usr/share/kibana/x-pack/plugins/reporting/server/browsers/extract/unzip.js:14:23)\n at /usr/share/kibana/node_modules/extract-zip/index.js:52:20\n at WriteStream. (/usr/share/kibana/node_modules/extract-zip/index.js:143:24)\n at WriteStream.emit (events.js:194:15)\n at lazyFs.open (internal/fs/streams.js:272:12)\n at FSReqWrap.oncomplete (fs.js:141:20)\n name: 'ExtractError',\n cause:\n { Error: EACCES: permission denied, open '/var/lib/kibana/headless_shell-linux/headless_shell'\n errno: -13,\n code: 'EACCES',\n syscall: 'open',\n path: '/var/lib/kibana/headless_shell-linux/headless_shell' },\n isBoom: true,\n isServer: true,\n data: null,\n output:\n { statusCode: 500,\n payload:\n { statusCode: 500,\n error: 'Internal Server Error',\n message: 'An internal server error occurred' },\n headers: {} },\n reformat: [Function],\n [Symbol(SavedObjectsClientErrorCode)]: 'SavedObjectsClient/generalError' }"}

I fixed the issue yesterday, you show the log seem not same as I encountered before.

获取 Outlook for iOS

It is seem no permission to access the path.data, so I suggest check the permission for the folder which in your elasticsearch.yml

获取 Outlook for iOS

I appended the group 'kibana' to the user 'elasticsearch' and the opposite.
I also did a chmod -R 775 both to /var/lib/kibana and /var/lib/elasticsearch but problem persists :frowning:

[root@ELASTIC lib]# ls -l|grep -E '(kibana|elasticsearch)'
drwxrwsr-x. 3 elasticsearch elasticsearch 19 Jul 11 16:05 elasticsearch
drwxrwxr-x. 4 kibana kibana 82 Jun 20 18:30 kibana

Strange... I did a chmod -R 777 to /var/lib/kibana and /var/lib/elasticsearch and now it works :face_with_monocle: