I did comment out all four of those settings (I only had the first two listen values set) and things appear to be running. However, it doesn't help because this is running Fedora server 27. No GUI.
I now get this:
Found java executable in PATH
Java version: 1.8.0_211
Starting the following Elastic Enterprise Search stack components:
I think the error above was because the config was commented.
You'd need to have 3 lines uncommented for each network config to ensure the right nesting, eg:
#
# Web application host and port.
#
ent_search:
listen_host: [MY_LISTEN_HOST]
listen_port: [MY_LISTEN_PORT]
#
# Web application external_host and external_port. Users will go to this endpoint to access the
# app. This can be any format as long as it is reachable by the user. eg. IP, FQDN, short name
# encoded via /etc/hosts, etc. For simple solutions such as testing, external_host and external_port
# will fall back to listen_host and listen_port, respectively. In practice, it's best for these to
# match whichever URL is exposed to your users.
#
ent_search:
external_host: [MY_EXTERNAL_HOST]
external_port: [MY_EXTERNAL_PORT]
#
So let me make sure I have this correct... because both of these fields seem somewhat similar, although I can understand why you would have them. However, if I just wanted to go to http://192.168.30.70:3002 for now and not specify an "external" or as I see it, alternate way in over 80 or 443, I could leave external_host and external_host commented out with no values.
But are you saying I HAVE to fill out all four? Like this:
Based on what you've provided me, this looks like what you want:
#
# Web application host and port.
#
#ent_search:
# listen_host: [MY_LISTEN_HOST]
# listen_port: [MY_LISTEN_PORT]
#
# Web application external_host and external_port. Users will go to this endpoint to access the
# app. This can be any format as long as it is reachable by the user. eg. IP, FQDN, short name
# encoded via /etc/hosts, etc. For simple solutions such as testing, external_host and external_port
# will fall back to listen_host and listen_port, respectively. In practice, it's best for these to
# match whichever URL is exposed to your users.
#
ent_search:
external_host: 192.168.30.70
external_port: 443
#
Ohhhh! Ha! It’s not a comment. I think I assumed that because Kibana and Elasticsearch have single line values - I blanked out on realizing it was a section header.
Found java executable in PATH
Java version: 1.8.0_211
Starting the following Elastic Enterprise Search stack components:
An application server
A pool of background workers
A pool of connectors
A filebeat instance for indexing logs
forego | starting app-server.1 on port 5000
forego | starting background-worker.1 on port 5100
forego | starting filebeat.1 on port 5300
forego | starting connectors.1 on port 5600
connectors.1 | ERROR: org.jruby.exceptions.SystemExit: (SystemExit) exit
app-server.1 |
app-server.1 | --------------------------------------------------------------------------------
app-server.1 |
app-server.1 | Invalid config file (/usr/downloads/enterprisesearch-0.1.0-beta1/config/enterprise_search.yml):
app-server.1 | /usr/downloads/enterprisesearch-0.1.0-beta1/config/enterprise_search.yml is not a valid YAML file.
app-server.1 |
app-server.1 | --------------------------------------------------------------------------------
app-server.1 |
app-server.1 | ERROR: org.jruby.exceptions.SystemExit: (SystemExit) exit
filebeat.1 | ERROR: org.jruby.exceptions.SystemExit: (SystemExit) exit
forego | sending SIGTERM to filebeat.1
forego | sending SIGTERM to app-server.1
forego | sending SIGTERM to background-worker.1
background-worker.1 | ERROR: org.jruby.exceptions.LoadError: (LoadError) load error: /tmp/jruby4770862330392161473extract/shared_togo/lib/shared_togo -- java.lang.NoClassDefFoundError: jnr/constants/platform/linux/Errno$StringTable
enterprise_search.yml
## ================== Elastic Enterprise Search Configuration ==================
#
# NOTE: Elastic Enterprise Search comes with reasonable defaults for most settings.
# Before adjusting the configuration, make sure you understand what you
# are trying to accomplish and the consequences.
#
# NOTE: For passwords, the use of environment variables is encouraged
# to keep values from being written to disk, e.g.
# elasticsearch.password: ${ELASTICSEARCH_PASSWORD:changeme}
#
# ---------------------------------- Network ----------------------------------
#
# Web application host and port.
#
#ent_search:
#listen_host: 192.168.30.70
#listen_port: 3002
#
# Web application external_host and external_port. Users will go to this endpoint to access the
# app. This can be any format as long as it is reachable by the user. eg. IP, FQDN, short name
# encoded via /etc/hosts, etc. For simple solutions such as testing, external_host and external_port
# will fall back to listen_host and listen_port, respectively. In practice, it's best for these to
# match whichever URL is exposed to your users.
#
ent_search:
external_host: 192.168.30.70
external_port: 3002
#
# ------------------------------- Elasticsearch -------------------------------
#
# Set the full url to your Elasticsearch cluster.
#
elasticsearch.host: http://192.168.30.70:9200
#
# If you change Elasticsearch credentials, ensure they match here:
#
#elasticsearch:
# username: elastic
# password: changeme
#
# ---------------------------------- Emails -----------------------------------
#
# Enable email settings for Enterprise Search.
# Read more:
# https://swiftype.com/documentation/enterprise-search/guides/smtp-mailer
#
#email.account:
# enabled: false
# smtp:
# auth: plain
# starttls.enable: false
# host: 127.0.0.1
# port: 25
# user:
# password:
# email_defaults:
# from:
# url_host:
#
# ----------------------------------- APIs ------------------------------------
#
# Set to hide product version information from API responses.
#
#hide_version_info: false
#
# ----------------------------- Diagnostics report ----------------------------
#
# Choose the path where diagnostic reports will be generated.
#
#diagnostic_report_directory: diagnostics
#
# ---------------------------------- Logging ----------------------------------
#
# Choose your log export path.
#
#log_directory:
#
# Log level can be: info, warn, error, fatal, or unknown.
#
#log_level: info
#
# Choose your Filebeat logs export path.
#
#filebeat_log_directory: log
#
# ---------------------------------- Session ----------------------------------
#
# Set to persist user sessions through process restarts. The key is generated
# on binary startup.
#
#secret_session_key:
#
# ---------------------------------- Secrets ----------------------------------
# Set to decrypt session information through restarts. Key can be supplied
# by you, or you can use the generated key provided during binary startup.
#
#secret_management:
# encryption_keys:
# -
#
# ---------------------------------- Cluster ----------------------------------
#
# Set this to true and run Elastic Enterprise Search with a "manage" cluster
# permission to allow it to automatically disable index auto-creation using the
# Elasticsearch Cluster Settings API. Otherwise, you will need to manually
# configure your elasticsearch.yml or your cluster settings.
# This is only required for the initial boot, as it will be persisted by the
# Elasticsearch cluster.
# See README.md for more details.
#
allow_es_settings_modification: false
#
# (UNSUPPORTED) Set to ignore our recommended cluster settings and continue at
# your own risk
#
#disable_es_settings_checks: false
Update: After letting this run for about 15-20 minutes on the new server, I am now getting an interface via port 3002 in a browser. It may be the security not being set up? (I set xpack.security.enabled: true in all the nodes, reset them, ran bin/elasticsearch-setup-passwords interactive and provided credentials in the enterprise_search.yml configuration). For sanity's sake, let me add that I tried everything on this new server that I did on the previous server and no dice until I set up security.
Thanks Kellen. Since my last post, I cleaned the bits off my primary node and spun up a new server to hash this out on... so I have a clean, three node cluster with Kibana running on the primary node... all seems healthy. I enabled security and now have my configuration files specifying credentials when required... everything seem hunky dory as far as ELK is concerned. I will beat up on EES with this new server - pointing the the ES instance.
So far, I get this on the new server:
[root@intsvr-030-080 enterprisesearch-0.1.0-beta1]# ./bin/enterprise-search
Found java executable in PATH
Java version: 1.8.0_211
Starting the following Elastic Enterprise Search stack components:
- An application server
- A pool of background workers
- A pool of connectors
- A filebeat instance for indexing logs
forego | starting app-server.1 on port 5000
forego | starting background-worker.1 on port 5100
forego | starting filebeat.1 on port 5300
forego | starting connectors.1 on port 5600
filebeat.1 | [2019-05-10T22:34:29.410+00:00][2326][2000][rails][INFO]: Enterprise Search version=0.1.0-beta1, JRuby version=9.2.5.0, Ruby version=2.5.0, Rails version=4.2.11.1
connectors.1 | [2019-05-10T22:34:29.384+00:00][2327][2000][rails][INFO]: Enterprise Search version=0.1.0-beta1, JRuby version=9.2.5.0, Ruby version=2.5.0, Rails version=4.2.11.1
app-server.1 | [2019-05-10T22:34:29.396+00:00][2322][2000][rails][INFO]: Enterprise Search version=0.1.0-beta1, JRuby version=9.2.5.0, Ruby version=2.5.0, Rails version=4.2.11.1
background-worker.1 | [2019-05-10T22:34:31.585+00:00][2324][2000][rails][INFO]: Enterprise Search version=0.1.0-beta1, JRuby version=9.2.5.0, Ruby version=2.5.0, Rails version=4.2.11.1
I am running a new build of Fedora Server 27, Oracle JDK 8 and EES Beta 1
I do have these problems as well.
I'm using debian 9.8.
Before I configured Xpack Security and set the passwords, the Enterprise Search always bound itself to 127.0.0.1, no matter which settings I set in listen_host or external_host.
After starting bin/enterprise-search it said:
app-server.1 | Success! Elastic Enterprise Search has started and will soon be accessible.
app-server.1 |
app-server.1 | * Login by visiting: http://localhost:3002
app-server.1 | * Default credentials: ent-search@example.com / changeme
app-server.1 | * Visit the documentation: https://swiftype.com/documentation/enterprise-
search
netstat told me, that the process was bound to 127.0.0.1:3002
I was able to curl http://localhost:3002 but was not able to reach that page from outside.
After I configured Xpack and set the listen_host to 0.0.0.0, it still tells me to "Login by visiting: http://localhost:3002", but I can connect from my other machine using a browser (chrome and ie) at http://:3002. The first time the site loads pretty slow, it took about 10 minutes, but then I'm redirected to the login-page at http://:3002/login.
Here I enter ent-search@example.com and the password changeme. It prints the following error:
I just ran through the exact same exercise on a build of Fedora Workstation 27 - I am now able to log in and can proceed to "Getting Started" exercises.
Even though I got it to work on Fedora Workstation - I will still try to figure out why it won't work on Fedora Server 27. Seems like it might be permissions related (because the underlying environment seems the same).
Also tested in the desktop environment on debian. When locally connecting to http://localhost:3002 the login works as expected and I'm being redirected to the Enterprise-Search-GUI.
No matter what settings I set for listen_host/port or external_host/port I can't get the GUI to be accessible from another computer.
Maybe it has to do something with the "localhost" in the request_url?
Update: I re-read what you posted and it appears that my response is just a validation of what you already said.
I tried the same thing - no dice. Of course "localhost" should resolve to your local machine with an address of 127.0.0.1. So I tried to set the external host and port and that didn't work either. Setting the listen_host and listen_port will let you remotely access the login prompt (like you saw), but not let you actually log in. Setting external_host and external_port will get you nothing. Oddly enough, when setting the external_host and external_port, the output instructs you to use the external address instead of the listen address... so something must be in the works.
Throwing in my hat on configuring beta so far. I have EES running in a VM. I am using a new build of Debian 9 with Java 8 running elasticsearch 6.7.1 and is running. Like a lot of you, I have also set my enterprise_search.yml file to use an external IP address and port number. The service appears to start up successfully and it even says the service will be available at http://:3002 in a few mins but is only ever accessible via local host.
Looks to default to localhost:3002 despite my configuration.
app-server.1 | #########################################################
app-server.1 |
app-server.1 | Success! Elastic Enterprise Search has started and will soon be accessible.
app-server.1 |
app-server.1 | * Login by visiting: http://172.25.0.9:3002
app-server.1 | * Default credentials: ent-search@example.com / changeme
app-server.1 | * Visit the documentation: https://swiftype.com/documentation/enterprise-search
app-server.1 |
app-server.1 | Generated a secret session key. Set it in your config file to persist user sessions through process restarts:
app-server.1 |
app-server.1 | secret_session_key:
app-server.1 |[redacted]
app-server.1 | No secret management encryption keys were provided.
app-server.1 | Your secrets will be stored unencrypted.
app-server.1 | You can use the following generated encryption key in your config file to store new encrypted secrets:
app-server.1 |
app-server.1 | secret_management:
app-server.1 | encryption_keys:
app-server.1 | - [redacted]
app-server.1 |
app-server.1 |
app-server.1 | #########################################################
app-server.1 |
app-server.1 |
app-server.1 |
app-server.1 | 2019-05-17 15:27:45.906:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@27ddd392{/,file:/tmp/jetty-127.0.0.1-3002-enterprise-search.war-_-any-2507601881551571428.dir/webapp/,AVAILABLE}{file:/home/elastic/Downloads/enterprisesearch-0.1.0-beta1/lib/enterprise-search.war}
app-server.1 | 2019-05-17 15:27:45.914:WARN:oejsh.RequestLogHandler:main: !RequestLog
app-server.1 | 2019-05-17 15:27:45.937:INFO:oejs.ServerConnector:main: Started ServerConnector@241c860a{HTTP/1.1}{127.0.0.1:3002}
app-server.1 | 2019-05-17 15:27:45.938:INFO:oejs.Server:main: Started @191267ms
Throwing in my config to reference.
## ================== Elastic Enterprise Search Configuration ==================
#
# NOTE: Elastic Enterprise Search comes with reasonable defaults for most settings.
# Before adjusting the configuration, make sure you understand what you
# are trying to accomplish and the consequences.
#
# NOTE: For passwords, the use of environment variables is encouraged
# to keep values from being written to disk, e.g.
# elasticsearch.password: ${ELASTICSEARCH_PASSWORD:changeme}
#
# ---------------------------------- Network ----------------------------------
#
# Web application host and port.
#
#ent_search:
# listen_host: 127.0.0.1
# listen_port: 3002
#
# Web application external_host and external_port. Users will go to this endpoint to access the
# app. This can be any format as long as it is reachable by the user. eg. IP, FQDN, short name
# encoded via /etc/hosts, etc. For simple solutions such as testing, external_host and external_port
# will fall back to listen_host and listen_port, respectively. In practice, it's best for these to
# match whichever URL is exposed to your users.
#
ent_search:
external_host: 172.25.0.9
external_port: 3002
#
# ------------------------------- Elasticsearch -------------------------------
#
# Set the full url to your Elasticsearch cluster.
#
elasticsearch.host: http://172.25.0.9:9200
#
# If you change Elasticsearch credentials, ensure they match here:
#
#elasticsearch:
# username: elastic
# password: changeme
#
# ---------------------------------- Emails -----------------------------------
#
# Enable email settings for Enterprise Search.
# Read more:
# https://swiftype.com/documentation/enterprise-search/guides/smtp-mailer
#
#email.account:
# enabled: false
# smtp:
# auth: plain
# starttls.enable: false
# host: 127.0.0.1
# port: 25
# user:
# password:
# email_defaults:
# from:
# url_host:
#
# ----------------------------------- APIs ------------------------------------
#
# Set to hide product version information from API responses.
#
#hide_version_info: false
#
# ----------------------------- Diagnostics report ----------------------------
#
# Choose the path where diagnostic reports will be generated.
#
#diagnostic_report_directory: diagnostics
#
# ---------------------------------- Logging ----------------------------------
#
# Choose your log export path.
#
#log_directory:
#
# Log level can be: info, warn, error, fatal, or unknown.
#
#log_level: info
#
# Choose your Filebeat logs export path.
#
#filebeat_log_directory: log
#
# ---------------------------------- Session ----------------------------------
#
# Set to persist user sessions through process restarts. The key is generated
# on binary startup.
#
#secret_session_key:
#
# ---------------------------------- Secrets ----------------------------------
# Set to decrypt session information through restarts. Key can be supplied
# by you, or you can use the generated key provided during binary startup.
#
#secret_management:
# encryption_keys:
# -
#
# ---------------------------------- Cluster ----------------------------------
#
# Set this to true and run Elastic Enterprise Search with a "manage" cluster
# permission to allow it to automatically disable index auto-creation using the
# Elasticsearch Cluster Settings API. Otherwise, you will need to manually
# configure your elasticsearch.yml or your cluster settings.
# This is only required for the initial boot, as it will be persisted by the
# Elasticsearch cluster.
# See README.md for more details.
#
allow_es_settings_modification: true
#
# (UNSUPPORTED) Set to ignore our recommended cluster settings and continue at
# your own risk
#
#disable_es_settings_checks: false
To make enterprise search available on a public IP, you will need to set ent_search.listen_host to the machine's public IP (or 0.0.0.0).
Also note that in YAML having multiple top-level keys with the same name will cause it to be overwritten, so everything under ent_search will need to be in a single block. You can also use dot-notation to specify things to get around that (eg ent_search.external_port: 3003).
Some of these configuration issues are being addressed in beta2, especially the examples and documentation.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.