3 [Logstash](https://www.elastic.co/products/logstash) is an open source, server-side data processing pipeline that ingests data from a multitude of sources simultaneously, transforms it, and then sends it to your favorite “stash.”
8 $ helm install stable/logstash
11 ## Installing the Chart
13 To install the chart with the release name `my-release`:
16 $ helm install --name my-release stable/logstash
19 ## Uninstalling the Chart
21 To uninstall/delete the `my-release` deployment:
24 $ helm delete my-release
27 The command removes nearly all the Kubernetes components associated with the
28 chart and deletes the release.
32 ### Release and tune this chart once per Logstash pipeline
34 To achieve multiple pipelines with this chart, current best practice is to
35 maintain one pipeline per chart release. In this way configuration is
36 simplified and pipelines are more isolated from one another.
38 ### Default Pipeline: Beats Input -> Elasticsearch Output
40 Current best practice for ELK logging is to ship logs from hosts using Filebeat
41 to logstash where persistent queues are enabled. Filebeat supports structured
42 (e.g. JSON) and unstructured (e.g. log lines) log shipment.
44 ### Load Beats-generated index template into Elasticsearch
46 To best utilize the combination of Beats, Logstash and Elasticsearch,
47 load Beats-generated index templates into Elasticsearch as described [here](
48 https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-template.html).
50 On a remote-to-Kubernetes Linux instance you might run the following command to
51 load that instance's Beats-generated index template into Elasticsearch
52 (Elasticsearch hostname will vary).
55 filebeat setup --template -E output.logstash.enabled=false \
56 -E 'output.elasticsearch.hosts=["elasticsearch.cluster.local:9200"]'
61 Please review the following links that expound on current best practices.
63 - https://www.elastic.co/blog/structured-logging-filebeat
64 - https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-template.html
65 - https://www.elastic.co/guide/en/logstash/current/deploying-and-scaling.html
66 - https://www.elastic.co/guide/en/logstash/current/persistent-queues.html
70 The following table lists the configurable parameters of the chart and its default values.
72 | Parameter | Description | Default |
73 | --------------------------- | -------------------------------------------------- | ------------------------------------------------ |
74 | `replicaCount` | Number of replicas | `1` |
75 | `podDisruptionBudget` | Pod disruption budget | `maxUnavailable: 1` |
76 | `updateStrategy` | Update strategy | `type: RollingUpdate` |
77 | `image.repository` | Container image name | `docker.elastic.co/logstash/logstash-oss` |
78 | `image.tag` | Container image tag | `6.7.0` |
79 | `image.pullPolicy` | Container image pull policy | `IfNotPresent` |
80 | `service.type` | Service type (ClusterIP, NodePort or LoadBalancer) | `ClusterIP` |
81 | `service.annotations` | Service annotations | `{}` |
82 | `service.ports` | Ports exposed by service | beats |
83 | `service.loadBalancerIP` | The load balancer IP for the service | unset |
84 | `service.loadBalancerSourceRanges` | CIDR ranges to allow access to load balancer | unset |
85 | `service.clusterIP` | The cluster IP for the service | unset |
86 | `service.nodePort` | The nodePort for the service | unset |
87 | `service.externalTrafficPolicy` | Set externalTrafficPolicy | unset |
88 | `ports` | Ports exposed by logstash container | beats |
89 | `ingress.enabled` | Enables Ingress | `false` |
90 | `ingress.annotations` | Ingress annotations | `{}` |
91 | `ingress.path` | Ingress path | `/` |
92 | `ingress.hosts` | Ingress accepted hostnames | `["logstash.cluster.local"]` |
93 | `ingress.tls` | Ingress TLS configuration | `[]` |
94 | `logstashJavaOpts` | Java options for logstash like heap size | `"-Xmx1g -Xms1g"` |
95 | `resources` | Pod resource requests & limits | `{}` |
96 | `priorityClassName` | priorityClassName | `nil` |
97 | `nodeSelector` | Node selector | `{}` |
98 | `tolerations` | Tolerations | `[]` |
99 | `affinity` | Affinity or Anti-Affinity | `{}` |
100 | `podAnnotations` | Pod annotations | `{}` |
101 | `podLabels` | Pod labels | `{}` |
102 | `extraEnv` | Extra pod environment variables | `[]` |
103 | `extraInitContainers` | Add additional initContainers | `[]` |
104 | `podManagementPolicy` | podManagementPolicy of the StatefulSet | `OrderedReady` |
105 | `livenessProbe` | Liveness probe settings for logstash container | (see `values.yaml`) |
106 | `readinessProbe` | Readiness probe settings for logstash container | (see `values.yaml`) |
107 | `persistence.enabled` | Enable persistence | `true` |
108 | `persistence.storageClass` | Storage class for PVCs | unset |
109 | `persistence.accessMode` | Access mode for PVCs | `ReadWriteOnce` |
110 | `persistence.size` | Size for PVCs | `2Gi` |
111 | `volumeMounts` | Volume mounts to configure for logstash container | (see `values.yaml`) |
112 | `volumes` | Volumes to configure for logstash container | [] |
113 | `terminationGracePeriodSeconds` | Duration the pod needs to terminate gracefully | `30`
114 | `exporter.logstash` | Prometheus logstash-exporter settings | (see `values.yaml`) |
115 | `exporter.logstash.enabled` | Enables Prometheus logstash-exporter | `false` |
116 | `elasticsearch.host` | ElasticSearch hostname | `elasticsearch-client.default.svc.cluster.local` |
117 | `elasticsearch.port` | ElasticSearch port | `9200` |
118 | `config` | Logstash configuration key-values | (see `values.yaml`) |
119 | `patterns` | Logstash patterns configuration | `nil` |
120 | `files` | Logstash custom files configuration | `nil` |
121 | `binaryFiles` | Logstash custom binary files | `nil` |
122 | `inputs` | Logstash inputs configuration | beats |
123 | `filters` | Logstash filters configuration | `nil` |
124 | `outputs` | Logstash outputs configuration | elasticsearch |
125 | `securityContext.fsGroup` | Group ID for the container | `1000` |
126 | `securityContext.runAsUser` | User ID for the container | `1000` |