Hello Jochen,

thank you for your answer. I misspelled this, it was ment to be "Direct 
access to http*s*://{myhost}:12900/ <https://{myhost}:12900/>
system/cluster/stats " - http, of course, is not working :-|.

Please find the configuration files attached.

Yours,
Jan


Am Mittwoch, 12. August 2015 18:17:37 UTC+2 schrieb Jochen Schalanda:

> Hi Jan,
>
> Direct access to http://{myhost}:12900/system/cluster/stats from a web 
>> browser: No problem and no failure entry in the logfile.
>
>
> This sounds wrong. If the Graylog REST API is configured to use TLS, you 
> should only be able to access it via HTTPS. Please share your Graylog 
> server and web interface configuration files (replace sensitive credentials 
> before).
>
>
> Cheers,
> Jochen
>
> On Wednesday, 12 August 2015 13:22:10 UTC+2, Jan wrote:
>>
>> Hello everyone,
>>
>> I'm trying to secure/encrypt the REST interface of Graylog Server. That 
>> works fine when only using the Graylog Collector to connect to the REST 
>> interface. However if I start the Graylog Web Interface, I repeatedly keep 
>> getting a org.jboss.netty.handler.ssl.NotSslRecordException. The error is 
>> the same as described in 
>> https://github.com/Graylog2/graylog2-server/issues/818, but the solution 
>> provided won't fit here.
>>
>> What I've tried:
>>
>> Setting the graylog2-server.uris parameter in web.conf to "
>> http://{myhost}:12900/"; => Will repeatedly produce a 
>> NotSslRecordException on the server and "API call failed to execute [..] 
>> java.io.IOException: Remotely Closed [..]" on the web interface.
>>
>> Setting the graylog2-server.uris parameter in web.conf to "http*s*
>> ://{myhost}:12900/" => Will repeatedly produce said 
>> NotSslRecordException on Server and "REST call failed java.io.IOException: 
>> Remotely Closed" on the web interface.
>>
>> Direct access to http://{myhost}:12900/system/cluster/stats from a web 
>> browser: No problem and no failure entry in the logfile.
>>
>> When disabling TLS on Graylog Server's REST Interface and setting the 
>> REST-URL to http everything works fine and as expected (though it's not 
>> encrypted obviously). The failure occures when using a self-signed 
>> certificate as well as when providing a properly issued PKI certificate.
>>
>> Setup:
>> Graylog Server: v1.1.6
>> Graylog Web Interface: v1.1.6
>>
>> Does anyone have an idea what's wrong here?
>>
>> Yours,
>> Jan
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Graylog Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/graylog2/724c450c-fcf0-4ac4-8621-e107a707dc1c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
# If you are running more than one instances of graylog2-server you have to 
select one of these
# instances as master. The master will perform some periodical tasks that 
non-masters won't perform.
is_master = true

# The auto-generated node ID will be stored in this file and read after 
restarts. It is a good idea
# to use an absolute file path here if you are starting graylog2-server from 
init scripts or similar.
node_id_file = /etc/graylog/server/node-id

# You MUST set a secret to secure/pepper the stored user passwords here. Use at 
least 64 characters.
# Generate one by using for example: pwgen -N 1 -s 96
password_secret = ...

# The default root user is named 'admin'
root_username = IctGraylogRoot

# You MUST specify a hash password for the root user (which you only need to 
initially set up the
# system and in case you lose connectivity to your authentication backend)
# This password cannot be changed using the API or via the web interface. If 
you need to change it,
# modify it in this file.
# Create one by using for example: echo -n yourpassword | shasum -a 256
# and put the resulting hash value into the following line
root_password_sha2 = ...

# The email address of the root user.
# Default is empty
root_email = "[email protected]"

# The time zone setting of the root user.
# The configured time zone must be parseable by 
http://www.joda.org/joda-time/apidocs/org/joda/time/DateTimeZone.html#forID-java.lang.String-
# Default is UTC
#root_timezone = UTC

# Set plugin directory here (relative or absolute)
plugin_dir = /usr/share/graylog-server/plugin

# REST API listen URI. Must be reachable by other graylog2-server nodes if you 
run a cluster.
rest_listen_uri = https://0.0.0.0:12900/

# REST API transport address. Defaults to the value of rest_listen_uri. 
Exception: If rest_listen_uri
# is set to a wildcard IP address (0.0.0.0) the first non-loopback IPv4 system 
address is used.
# If set, his will be promoted in the cluster discovery APIs, so other nodes 
may try to connect on
# this address and it is used to generate URLs addressing entities in the REST 
API. (see rest_listen_uri)
# You will need to define this, if your Graylog server is running behind a HTTP 
proxy that is rewriting
# the scheme, host name or URI.
#rest_transport_uri = http://192.168.1.1:12900/

# Enable CORS headers for REST API. This is necessary for JS-clients accessing 
the server directly.
# If these are disabled, modern browsers will not be able to retrieve resources 
from the server.
# This is disabled by default. Uncomment the next line to enable it.
#rest_enable_cors = true

# Enable GZIP support for REST API. This compresses API responses and therefore 
helps to reduce
# overall round trip times. This is disabled by default. Uncomment the next 
line to enable it.
#rest_enable_gzip = true

# Enable HTTPS support for the REST API. This secures the communication with 
the REST API with
# TLS to prevent request forgery and eavesdropping. This is disabled by 
default. Uncomment the
# next line to enable it.
rest_enable_tls = true

# The X.509 certificate file to use for securing the REST API.
rest_tls_cert_file = /etc/pki/tls/myserver/logstash-graylog.crt

# The private key to use for securing the REST API.
rest_tls_key_file = /etc/pki/tls/myserver/logstash-graylog.key

# The password to unlock the private key used for securing the REST API.
#rest_tls_key_password = secret

# The maximum size of a single HTTP chunk in bytes.
#rest_max_chunk_size = 8192

# The maximum size of the HTTP request headers in bytes.
#rest_max_header_size = 8192

# The maximal length of the initial HTTP/1.1 line in bytes.
#rest_max_initial_line_length = 4096

# The size of the execution handler thread pool used exclusively for serving 
the REST API.
#rest_thread_pool_size = 16

# The size of the worker thread pool used exclusively for serving the REST API.
#rest_worker_threads_max_pool_size = 16

# Embedded Elasticsearch configuration file
# pay attention to the working directory of the server, maybe use an absolute 
path here
#elasticsearch_config_file = /etc/graylog/server/elasticsearch.yml

# Graylog will use multiple indices to store documents in. You can configured 
the strategy it uses to determine
# when to rotate the currently active write index.
# It supports multiple rotation strategies:
#   - "count" of messages per index, use elasticsearch_max_docs_per_index below 
to configure
#   - "size" per index, use elasticsearch_max_size_per_index below to configure
# valid values are "count", "size" and "time", default is "count"
rotation_strategy = count

# (Approximate) maximum number of documents in an Elasticsearch index before a 
new index
# is being created, also see no_retention and 
elasticsearch_max_number_of_indices.
# Configure this if you used 'rotation_strategy = count' above.
elasticsearch_max_docs_per_index = 20000000

# (Approximate) maximum size in bytes per Elasticsearch index on disk before a 
new index is being created, also see
# no_retention and elasticsearch_max_number_of_indices. Default is 1GB.
# Configure this if you used 'rotation_strategy = size' above.
#elasticsearch_max_size_per_index = 1073741824

# (Approximate) maximum time before a new Elasticsearch index is being created, 
also see
# no_retention and elasticsearch_max_number_of_indices. Default is 1 day.
# Configure this if you used 'rotation_strategy = time' above.
# Please note that this rotation period does not look at the time specified in 
the received messages, but is
# using the real clock value to decide when to rotate the index!
# Specify the time using a duration and a suffix indicating which unit you want:
#  1w  = 1 week
#  1d  = 1 day
#  12h = 12 hours
# Permitted suffixes are: d for day, h for hour, m for minute, s for second.
#elasticsearch_max_time_per_index = 1d

# Disable checking the version of Elasticsearch for being compatible with this 
Graylog release.
# WARNING: Using Graylog with unsupported and untested versions of 
Elasticsearch may lead to data loss!
#elasticsearch_disable_version_check = true

# Disable message retention on this node, i. e. disable Elasticsearch index 
rotation.
#no_retention = false

# How many indices do you want to keep?
elasticsearch_max_number_of_indices = 20

# Decide what happens with the oldest indices when the maximum number of 
indices is reached.
# The following strategies are availble:
#   - delete # Deletes the index completely (Default)
#   - close # Closes the index and hides it from the system. Can be re-opened 
later.
retention_strategy = delete

# How many Elasticsearch shards and replicas should be used per index? Note 
that this only applies to newly created indices.
elasticsearch_shards = 4
elasticsearch_replicas = 0

# Prefix for all Elasticsearch indices and index aliases managed by Graylog.
elasticsearch_index_prefix = graylog2

# Do you want to allow searches with leading wildcards? This can be extremely 
resource hungry and should only
# be enabled with care. See also: 
https://www.graylog.org/documentation/general/queries/
allow_leading_wildcard_searches = false

# Do you want to allow searches to be highlighted? Depending on the size of 
your messages this can be memory hungry and
# should only be enabled after making sure your Elasticsearch cluster has 
enough memory.
allow_highlighting = false

# settings to be passed to elasticsearch's client (overriding those in the 
provided elasticsearch_config_file)
# all these
# this must be the same as for your Elasticsearch cluster
elasticsearch_cluster_name = ict-graylog-production

# you could also leave this out, but makes it easier to identify the graylog2 
client instance
#elasticsearch_node_name = graylog2-server

# we don't want the graylog2 server to store any data, or be master node
#elasticsearch_node_master = false
#elasticsearch_node_data = false

# use a different port if you run multiple Elasticsearch nodes on one machine
#elasticsearch_transport_tcp_port = 9350

# we don't need to run the embedded HTTP server here
#elasticsearch_http_enabled = false

# Disable multicast
elasticsearch_discovery_zen_ping_multicast_enabled = false
# List of Elasticsearch nodes to connect to
elasticsearch_discovery_zen_ping_unicast_hosts = myserver:9300

# Change the following setting if you are running into problems with timeouts 
during Elasticsearch cluster discovery.
# The setting is specified in milliseconds, the default is 5000ms (5 seconds).
#elasticsearch_cluster_discovery_timeout = 5000

# the following settings allow to change the bind addresses for the 
Elasticsearch client in graylog2
# these settings are empty by default, letting Elasticsearch choose 
automatically,
# override them here or in the 'elasticsearch_config_file' if you need to bind 
to a special address
# refer to 
http://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/modules-network.html
# for special values here
#elasticsearch_network_host =
#elasticsearch_network_bind_host =
#elasticsearch_network_publish_host =

# The total amount of time discovery will look for other Elasticsearch nodes in 
the cluster
# before giving up and declaring the current node master.
#elasticsearch_discovery_initial_state_timeout = 3s

# Analyzer (tokenizer) to use for message and full_message field. The 
"standard" filter usually is a good idea.
# All supported analyzers are: standard, simple, whitespace, stop, keyword, 
pattern, language, snowball, custom
# Elasticsearch documentation: 
http://www.elasticsearch.org/guide/reference/index-modules/analysis/
# Note that this setting only takes effect on newly created indices.
elasticsearch_analyzer = standard

# Store message timestamps as doc values in Elasticsearch. This will improve 
memory the consumption of
# Elasticsearch at the cost of some performance at indexing time and increased 
index size.
# See http://www.elastic.co/guide/en/elasticsearch/guide/master/doc-values.html 
for details.
#elasticsearch_store_timestamps_as_doc_values = true

# Batch size for the Elasticsearch output. This is the maximum (!) number of 
messages the Elasticsearch output
# module will get at once and write to Elasticsearch in a batch call. If the 
configured batch size has not been
# reached within output_flush_interval seconds, everything that is available 
will be flushed at once. Remember
# that every outputbuffer processor manages its own batch and performs its own 
batch write calls.
# ("outputbuffer_processors" variable)
output_batch_size = 500

# Flush interval (in seconds) for the Elasticsearch output. This is the maximum 
amount of time between two
# batches of messages written to Elasticsearch. It is only effective at all if 
your minimum number of messages
# for this time period is less than output_batch_size * outputbuffer_processors.
output_flush_interval = 1

# As stream outputs are loaded only on demand, an output which is failing to 
initialize will be tried over and
# over again. To prevent this, the following configuration options define after 
how many faults an output will
# not be tried again for an also configurable amount of seconds.
output_fault_count_threshold = 5
output_fault_penalty_seconds = 30

# The number of parallel running processors.
# Raise this number if your buffers are filling up.
processbuffer_processors = 5
outputbuffer_processors = 3

#outputbuffer_processor_keep_alive_time = 5000
#outputbuffer_processor_threads_core_pool_size = 3
#outputbuffer_processor_threads_max_pool_size = 30

# UDP receive buffer size for all message inputs (e. g. SyslogUDPInput).
#udp_recvbuffer_sizes = 1048576

# Wait strategy describing how buffer processors wait on a cursor sequence. 
(default: sleeping)
# Possible types:
#  - yielding
#     Compromise between performance and CPU usage.
#  - sleeping
#     Compromise between performance and CPU usage. Latency spikes can occur 
after quiet periods.
#  - blocking
#     High throughput, low latency, higher CPU usage.
#  - busy_spinning
#     Avoids syscalls which could introduce latency jitter. Best when threads 
can be bound to specific CPU cores.
processor_wait_strategy = blocking

# Size of internal ring buffers. Raise this if raising outputbuffer_processors 
does not help anymore.
# For optimum performance your LogMessage objects in the ring buffer should fit 
in your CPU L3 cache.
# Start server with --statistics flag to see buffer utilization.
# Must be a power of 2. (512, 1024, 2048, ...)
ring_size = 65536

inputbuffer_ring_size = 65536
inputbuffer_processors = 2
inputbuffer_wait_strategy = blocking

# Enable the disk based message journal.
message_journal_enabled = true

# The directory which will be used to store the message journal. The directory 
must me exclusively used by Graylog and
# must not contain any other files than the ones created by Graylog itself.
message_journal_dir = /var/lib/graylog-server/journal

# Journal hold messages before they could be written to Elasticsearch.
# For a maximum of 12 hours or 5 GB whichever happens first.
# During normal operation the journal will be smaller.
#message_journal_max_age = 12h
#message_journal_max_size = 5gb

#message_journal_flush_age = 1m
#message_journal_flush_interval = 1000000
#message_journal_segment_age = 1h
#message_journal_segment_size = 100mb

# Number of threads used exclusively for dispatching internal events. Default 
is 2.
#async_eventbus_processors = 2

# EXPERIMENTAL: Dead Letters
# Every failed indexing attempt is logged by default and made visible in the 
web-interface. You can enable
# the experimental dead letters feature to write every message that was not 
successfully indexed into the
# MongoDB "dead_letters" collection to make sure that you never lose a message. 
The actual writing of dead
# letter should work fine already but it is not heavily tested yet and will get 
more features in future
# releases.
dead_letters_enabled = false

# How many seconds to wait between marking node as DEAD for possible load 
balancers and starting the actual
# shutdown process. Set to 0 if you have no status checking load balancers in 
front.
lb_recognition_period_seconds = 3

# Every message is matched against the configured streams and it can happen 
that a stream contains rules which
# take an unusual amount of time to run, for example if its using regular 
expressions that perform excessive backtracking.
# This will impact the processing of the entire server. To keep such 
misbehaving stream rules from impacting other
# streams, Graylog limits the execution time for each stream.
# The default values are noted below, the timeout is in milliseconds.
# If the stream matching for one stream took longer than the timeout value, and 
this happened more than "max_faults" times
# that stream is disabled and a notification is shown in the web interface.
#stream_processing_timeout = 2000
#stream_processing_max_faults = 3

# Length of the interval in seconds in which the alert conditions for all 
streams should be checked
# and alarms are being sent.
#alert_check_interval = 60

# Since 0.21 the graylog2 server supports pluggable output modules. This means 
a single message can be written to multiple
# outputs. The next setting defines the timeout for a single output module, 
including the default output module where all
# messages end up.
#
# Time in milliseconds to wait for all message outputs to finish writing a 
single message.
#output_module_timeout = 10000

# Time in milliseconds after which a detected stale master node is being 
rechecked on startup.
#stale_master_timeout = 2000

# Time in milliseconds which Graylog is waiting for all threads to stop on 
shutdown.
#shutdown_timeout = 30000

# MongoDB connection string
# See http://docs.mongodb.org/manual/reference/connection-string/ for details
#mongodb_uri = mongodb://localhost/graylog2

# Authenticate against the MongoDB server
mongodb_uri = mongodb://user:passwd@mydbserver:27017/graylog2

# Use a replica set instead of a single host
#mongodb_uri = 
mongodb://grayloguser:secret@localhost:27017,localhost:27018,localhost:27019/graylog2

# Increase this value according to the maximum connections your MongoDB server 
can handle from a single client
# if you encounter MongoDB connection problems.
mongodb_max_connections = 100

# Number of threads allowed to be blocked by MongoDB connections multiplier. 
Default: 5
# If mongodb_max_connections is 100, and 
mongodb_threads_allowed_to_block_multiplier is 5,
# then 500 threads can block. More than that and an exception will be thrown.
# 
http://api.mongodb.org/java/current/com/mongodb/MongoOptions.html#threadsAllowedToBlockForConnectionMultiplier
mongodb_threads_allowed_to_block_multiplier = 5

# Drools Rule File (Use to rewrite incoming log messages)
# See: https://www.graylog.org/documentation/general/rewriting/
#rules_file = /etc/graylog/server/rules.drl

# Email transport
transport_email_enabled = true
transport_email_hostname = mymailserver
transport_email_port = 25
transport_email_use_auth = false
transport_email_use_tls = false
transport_email_use_ssl = false
#transport_email_auth_username = [email protected]
#transport_email_auth_password = secret
transport_email_subject_prefix = [ict-graylog]
transport_email_from_email = [email protected]

# Specify and uncomment this if you want to include links to the stream in your 
stream alert mails.
# This should define the fully qualified base url to your web interface exactly 
the same way as it is accessed by your users.
#transport_email_web_interface_url = https://graylog2.example.com

# The default connect timeout for outgoing HTTP connections.
# Values must be a positive duration (and between 1 and 2147483647 when 
converted to milliseconds).
# Default: 5s
#http_connect_timeout = 5s

# The default read timeout for outgoing HTTP connections.
# Values must be a positive duration (and between 1 and 2147483647 when 
converted to milliseconds).
# Default: 10s
#http_read_timeout = 10s

# The default write timeout for outgoing HTTP connections.
# Values must be a positive duration (and between 1 and 2147483647 when 
converted to milliseconds).
# Default: 10s
#http_write_timeout = 10s

# HTTP proxy for outgoing HTTP connections
#http_proxy_uri =

# Disable the optimization of Elasticsearch indices after index cycling. This 
may take some load from Elasticsearch
# on heavily used systems with large indices, but it will decrease search 
performance. The default is to optimize
# cycled indices.
#disable_index_optimization = true

# Optimize the index down to <= index_optimization_max_num_segments. A higher 
number may take some load from Elasticsearch
# on heavily used systems with large indices, but it will decrease search 
performance. The default is 1.
#index_optimization_max_num_segments = 1

# Disable the index range calculation on all open/available indices and only 
calculate the range for the latest
# index.
# This may speed up index cycling on systems with large indices but it might 
lead to wrong search results
# in regard to the time range of the messages (i. e. messages within a certain 
range may not be found) if the indices
# have been modified after Graylog rotated them.
# Default: true
#disable_index_range_calculation = true

# The threshold of the garbage collection runs. If GC runs take longer than 
this threshold, a system notification
# will be generated to warn the administrator about possible problems with the 
system. Default is 1 second.
#gc_warning_threshold = 1s

# Connection timeout for a configured LDAP server (e. g. ActiveDirectory) in 
milliseconds.
#ldap_connection_timeout = 2000

# https://github.com/bazhenov/groovy-shell-server
#groovy_shell_enable = false
#groovy_shell_port = 6789

# Enable collection of Graylog-related metrics into MongoDB
#enable_metrics_collection = false

# Disable the use of SIGAR for collecting system stats
#disable_sigar = false

# Amount of time of inactivity after which collectors are flagged as inactive 
(Default: 1 minute)
#collector_inactive_threshold = 1m

# Amount of time after which inactive collectors are purged (Default: 14 days)
#collector_expiration_threshold = 14d

# The default cache time for dashboard widgets. (Default: 10 seconds, minimum: 
1 second)
#dashboard_widget_default_cache_time = 10s
# graylog2-server REST URIs (one or more, comma separated) For example: 
"http://127.0.0.1:12900/,http://127.0.0.1:12910/";
graylog2-server.uris="https://vl-ictlog03.haufe-ep.de:12900/";

# Learn how to configure custom logging in the documentation:
#    https://www.graylog.org/documentation/setup/webinterface/

# Secret key
# ~~~~~
# The secret key is used to secure cryptographics functions. Set this to a long 
and randomly generated string.
# If you deploy your application to several instances be sure to use the same 
key!
# Generate for example with: pwgen -N 1 -s 96
application.secret="..."

# Web interface timezone
# Graylog stores all timestamps in UTC. To properly display times, set the 
default timezone of the interface.
# If you leave this out, Graylog will pick your system default as the timezone. 
Usually you will want to configure it explicitly.
timezone="Europe/Berlin"

# Message field limit
# Your web interface can cause high load in your browser when you have a lot of 
different message fields. The default
# limit of message fields is 100. Set it to 0 if you always want to get all 
fields. They are for example used in the
# search result sidebar or for autocompletion of field names.
field_list_limit=100

# Use this to run Graylog with a path prefix
#application.context=/graylog2

# You usually do not want to change this.
application.global=lib.Global

Reply via email to