# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

logsearch.solr.zk_connect_string=localhost:9983

# Service Logs
logsearch.solr.collection.service.logs=hadoop_logs

logsearch.service.logs.split.interval.mins=15
logsearch.collection.service.logs.numshards=3
logsearch.collection.service.logs.replication.factor=2

# Audit logs
logsearch.solr.audit.logs.zk_connect_string=localhost:9983
logsearch.solr.collection.audit.logs=audit_logs
logsearch.solr.audit.logs.url=

logsearch.audit.logs.split.interval.mins=15
logsearch.collection.audit.logs.numshards=3
logsearch.collection.audit.logs.replication.factor=2

# History logs
logsearch.solr.collection.history=history
logsearch.solr.history.config.name=history
logsearch.collection.history.replication.factor=1

logsearch.solr.config_set.folder=/root/ambari/ambari-logsearch/ambari-logsearch-portal/target/package/solr_configsets
logsearch.solr.audit.logs.config_set.folder=/root/ambari/ambari-logsearch/ambari-logsearch-portal/target/package/solr_configsets

# Metrics
logsearch.solr.metrics.collector.hosts=
logsearch.solr.jmx.port=18886

# Logfeeder Settings

logsearch.logfeeder.include.default.level=FATAL,ERROR,WARN,INFO,DEBUG,TRACE,UNKNOWN

# logsearch-admin.json
logsearch.auth.file.enable=true
logsearch.login.credentials.file=user_pass.json

logsearch.auth.ldap.enable=false
logsearch.auth.simple.enable=false
logsearch.auth.external_auth.enable=false

logsearch.protocol=https
