mirror of
https://github.com/helm/charts.git
synced 2026-08-23 22:37:45 +00:00
212 lines
10 KiB
YAML
212 lines
10 KiB
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: {{ template "graylog.fullname" . }}
|
|
labels:
|
|
{{ include "graylog.metadataLabels" . | indent 4 }}
|
|
data:
|
|
log4j2.xml: |-
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<Configuration packages="org.graylog2.log4j" shutdownHook="disable">
|
|
<Appenders>
|
|
<Console name="STDOUT" target="SYSTEM_OUT">
|
|
{{- if .Values.graylog.logInJson }}
|
|
<JsonLayout eventEOL="true" compact="true"/>
|
|
{{- else }}
|
|
<PatternLayout pattern="%d %-7level [%c{1}] - %m - %X%n"/>
|
|
{{- end }}
|
|
</Console>
|
|
<RollingFile name="rolling-file" fileName="/usr/share/graylog/log/server.log" filePattern="/usr/share/graylog/log/server.log.%i.gz">
|
|
<PatternLayout>
|
|
<Pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX} %-5p [%c{1}] %m%n</Pattern>
|
|
</PatternLayout>
|
|
<Policies>
|
|
<SizeBasedTriggeringPolicy size="50MB"/>
|
|
</Policies>
|
|
<DefaultRolloverStrategy max="10" fileIndex="min"/>
|
|
</RollingFile>
|
|
<!-- Internal Graylog log appender. Please do not disable. This makes internal log messages available via REST calls. -->
|
|
<Memory name="graylog-internal-logs" bufferSize="500"/>
|
|
<!-- Rotate audit logs daily -->
|
|
<RollingFile name="AUDITLOG" fileName="/usr/share/graylog/log/audit.log" filePattern="/usr/share/graylog/log/audit-%d{yyyy-MM-dd}.log.gz">
|
|
<PatternLayout>
|
|
<Pattern>%d [%c{1}] - %m - %X%n</Pattern>
|
|
</PatternLayout>
|
|
<Policies>
|
|
<TimeBasedTriggeringPolicy />
|
|
</Policies>
|
|
</RollingFile>
|
|
</Appenders>
|
|
<Loggers>
|
|
<!-- Application Loggers -->
|
|
<Logger name="org.graylog2" level="warn"/>
|
|
<Logger name="com.github.joschi.jadconfig" level="warn"/>
|
|
<!-- This emits a harmless warning for ActiveDirectory every time which we can't work around :( -->
|
|
<Logger name="org.apache.directory.api.ldap.model.message.BindRequestImpl" level="error"/>
|
|
<!-- Prevent DEBUG message about Lucene Expressions not found. -->
|
|
<Logger name="org.elasticsearch.script" level="warn"/>
|
|
<!-- Disable messages from the version check -->
|
|
<Logger name="org.graylog2.periodical.VersionCheckThread" level="off"/>
|
|
<!-- Suppress crazy byte array dump of Drools -->
|
|
<Logger name="org.drools.compiler.kie.builder.impl.KieRepositoryImpl" level="warn"/>
|
|
<!-- Silence chatty natty -->
|
|
<Logger name="com.joestelmach.natty.Parser" level="warn"/>
|
|
<!-- Silence Kafka log chatter -->
|
|
<Logger name="kafka.log.Log" level="warn"/>
|
|
<Logger name="kafka.log.OffsetIndex" level="warn"/>
|
|
<!-- Silence useless session validation messages -->
|
|
<Logger name="org.apache.shiro.session.mgt.AbstractValidatingSessionManager" level="warn"/>
|
|
<Root level="warn">
|
|
<AppenderRef ref="STDOUT"/>
|
|
</Root>
|
|
<!-- Security Loggers -->
|
|
<Logger name="org.graylog2.security.realm.PasswordAuthenticator" level="trace" additivity="false">
|
|
<AppenderRef ref="AUDITLOG"/>
|
|
</Logger>
|
|
<Logger name="org.graylog2.security.realm.AccessTokenAuthenticator" level="trace" additivity="false">
|
|
<AppenderRef ref="AUDITLOG"/>
|
|
</Logger>
|
|
<Logger name="org.graylog2.security.realm.RootAccountRealm" level="trace" additivity="false">
|
|
<AppenderRef ref="AUDITLOG"/>
|
|
</Logger>
|
|
<Logger name="org.graylog2.shared.security.ShiroAuthorizationFilter" level="trace" additivity="false">
|
|
<AppenderRef ref="AUDITLOG"/>
|
|
</Logger>
|
|
</Loggers>
|
|
</Configuration>
|
|
graylog.conf: |-
|
|
node_id_file = /usr/share/graylog/data/journal/node-id
|
|
root_username = {{ .Values.graylog.rootUsername }}
|
|
root_email = {{ .Values.graylog.rootEmail }}
|
|
root_timezone = {{ default "UTC" .Values.graylog.rootTimezone }}
|
|
plugin_dir = /usr/share/graylog/plugin
|
|
{{- $externalUri := include "graylog.url" . }}
|
|
{{- if contains ":2" .Values.graylog.image.repository }}
|
|
rest_listen_uri = http://0.0.0.0:9000/api/
|
|
web_listen_uri = http://0.0.0.0:9000/
|
|
{{- if $externalUri }}
|
|
web_endpoint_uri = {{ $externalUri }}/api
|
|
{{- end }}
|
|
{{- else }}
|
|
http_bind_address = 0.0.0.0:9000
|
|
{{- if .Values.graylog.tls.enabled }}
|
|
http_enable_tls = true
|
|
http_tls_cert_file = {{ .Values.graylog.tls.certFile }}
|
|
http_tls_key_file = {{ .Values.graylog.tls.keyFile }}
|
|
{{- end }}
|
|
{{- if $externalUri }}
|
|
http_external_uri = {{ $externalUri }}/
|
|
{{- end }}
|
|
{{- end }}
|
|
elasticsearch_hosts = {{ template "graylog.elasticsearch.hosts" . }}
|
|
allow_leading_wildcard_searches = false
|
|
allow_highlighting = false
|
|
output_batch_size = 500
|
|
output_flush_interval = 1
|
|
output_fault_count_threshold = 5
|
|
output_fault_penalty_seconds = 30
|
|
processbuffer_processors = 5
|
|
outputbuffer_processors = 3
|
|
processor_wait_strategy = blocking
|
|
ring_size = 65536
|
|
inputbuffer_ring_size = 65536
|
|
inputbuffer_processors = 2
|
|
inputbuffer_wait_strategy = blocking
|
|
message_journal_enabled = true
|
|
# Do not change `message_journal_dir` location
|
|
message_journal_dir = /usr/share/graylog/data/journal
|
|
lb_recognition_period_seconds = 3
|
|
# Use a replica set instead of a single host
|
|
mongodb_uri = {{ template "graylog.mongodb.uri" . }}
|
|
mongodb_max_connections = {{ default 1000 .Values.graylog.mongodb.maxConnections }}
|
|
mongodb_threads_allowed_to_block_multiplier = 5
|
|
# Email transport
|
|
transport_email_enabled = {{ default false .Values.graylog.transportEmail.enabled }}
|
|
transport_email_hostname = {{ default .Values.graylog.transportEmail.hostname }}
|
|
transport_email_port = {{ default .Values.graylog.transportEmail.port }}
|
|
transport_email_use_auth = {{ default .Values.graylog.transportEmail.useAuth }}
|
|
transport_email_use_tls = {{ default .Values.graylog.transportEmail.useTls }}
|
|
transport_email_use_ssl = {{ default false .Values.graylog.transportEmail.useSsl }}
|
|
transport_email_auth_username = {{ default .Values.graylog.transportEmail.authUsername }}
|
|
transport_email_auth_password = {{ default .Values.graylog.transportEmail.authPassword }}
|
|
transport_email_subject_prefix = {{ default .Values.graylog.transportEmail.subjectPrefix }}
|
|
transport_email_from_email = {{ default .Values.graylog.transportEmail.fromEmail }}
|
|
{{- if $externalUri }}
|
|
transport_email_web_interface_url = {{ $externalUri }}
|
|
{{- end }}
|
|
content_packs_dir = /usr/share/graylog/data/contentpacks
|
|
content_packs_auto_load = grok-patterns.json
|
|
proxied_requests_thread_pool_size = 32
|
|
{{- if .Values.graylog.config }}
|
|
{{ .Values.graylog.config | indent 4 }}
|
|
{{- end }}
|
|
entrypoint.sh: |-
|
|
#!/usr/bin/env bash
|
|
|
|
export GRAYLOG_HTTP_PUBLISH_URI="{{ template "graylog.formatUrl" (list . "$(hostname -f):9000/") }}"
|
|
|
|
GRAYLOG_HOME=/usr/share/graylog
|
|
# Looking for Master IP
|
|
MASTER_IP=`/k8s/kubectl --namespace {{ .Release.Namespace }} get pod -o jsonpath='{range .items[*]}{.metadata.name} {.status.podIP}{"\n"}{end}' -l graylog-role=master --field-selector=status.phase=Running|awk '{print $2}'`
|
|
SELF_IP=`/k8s/kubectl --namespace {{ .Release.Namespace }} get pod $HOSTNAME -o jsonpath='{.status.podIP}'`
|
|
echo "Current master is $MASTER_IP"
|
|
echo "Self IP is $SELF_IP"
|
|
if [[ -z "$MASTER_IP" ]]; then
|
|
echo "Launching $HOSTNAME as master"
|
|
export GRAYLOG_IS_MASTER="true"
|
|
/k8s/kubectl --namespace {{ .Release.Namespace }} label --overwrite pod $HOSTNAME graylog-role="master"
|
|
else
|
|
# When container was recreated or restart, MASTER_IP == SELF_IP, running as master and no need to change label graylog-role="master"
|
|
if [ "$SELF_IP" == "$MASTER_IP" ];then
|
|
export GRAYLOG_IS_MASTER="true"
|
|
else
|
|
# MASTER_IP != SELF_IP, running as coordinating
|
|
echo "Launching $HOSTNAME as coordinating"
|
|
export GRAYLOG_IS_MASTER="false"
|
|
/k8s/kubectl --namespace {{ .Release.Namespace }} label --overwrite pod $HOSTNAME graylog-role="coordinating"
|
|
fi
|
|
fi
|
|
# Download plugins
|
|
{{- if .Values.graylog.plugins }}
|
|
echo "Downloading Graylog Plugins..."
|
|
{{- range .Values.graylog.plugins }}
|
|
echo "Downloading {{ .url }} ..."
|
|
curl -s --location --retry 3 -o ${GRAYLOG_HOME}/plugin/{{ .name }} "{{ .url }}"
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if .Values.graylog.metrics.enabled }}
|
|
echo "Downloading https://github.com/graylog-labs/graylog-plugin-metrics-reporter/releases/download/3.0.0/metrics-reporter-prometheus-3.0.0.jar ..."
|
|
curl -s --location --retry 3 -o ${GRAYLOG_HOME}/plugin/metrics-reporter-prometheus-3.0.0.jar "https://github.com/graylog-labs/graylog-plugin-metrics-reporter/releases/download/3.0.0/metrics-reporter-prometheus-3.0.0.jar"
|
|
{{- end }}
|
|
{{- if .Values.graylog.geoip.enabled }}
|
|
echo "Downloading Maxmind GeoLite2 ..."
|
|
curl -s --location --retry 3 -o /tmp/GeoLite2-City.tar.gz "{{ .Values.graylog.geoip.mmdbUri }}"
|
|
curlreturn=$?
|
|
if [[ $curlreturn -eq 0 ]]; then
|
|
mkdir -p ${GRAYLOG_HOME}/geoip && cd ${GRAYLOG_HOME}/geoip && tar xvzf /tmp/GeoLite2-City.tar.gz --wildcards "*.mmdb" --strip-components=1 -C ${GRAYLOG_HOME}/geoip && chown -R graylog:graylog ${GRAYLOG_HOME}/geoip
|
|
fi
|
|
{{- end }}
|
|
# Start Graylog
|
|
echo "Starting graylog"
|
|
# Original docker-entrypoint.sh in Graylog Docker will error while executing since you can't chown readonly files in `config`
|
|
# exec /docker-entrypoint.sh graylog
|
|
{{- if or (.Values.graylog.elasticsearch.uriSecretKey) (.Values.graylog.mongodb.uriSecretKey) }}
|
|
# Interpolate
|
|
sed 's/"/\\\"/g;s/.*/echo "&"/e' ${GRAYLOG_HOME}/config/graylog.conf > ${GRAYLOG_HOME}/graylog.conf.subst
|
|
{{- end }}
|
|
echo "Graylog Home ${GRAYLOG_HOME}"
|
|
echo "JVM Options ${GRAYLOG_SERVER_JAVA_OPTS}"
|
|
"${JAVA_HOME}/bin/java" \
|
|
${GRAYLOG_SERVER_JAVA_OPTS} \
|
|
-jar \
|
|
-Dlog4j.configurationFile=${GRAYLOG_HOME}/config/log4j2.xml \
|
|
-Djava.library.path=${GRAYLOG_HOME}/lib/sigar/ \
|
|
-Dgraylog2.installation_source=docker \
|
|
${GRAYLOG_HOME}/graylog.jar \
|
|
server \
|
|
{{- if or (.Values.graylog.elasticsearch.uriSecretKey) (.Values.graylog.mongodb.uriSecretKey) }}
|
|
-f ${GRAYLOG_HOME}/graylog.conf.subst
|
|
{{- else }}
|
|
-f ${GRAYLOG_HOME}/config/graylog.conf
|
|
{{- end }}
|