Stack monitoringedit
This documentation is still in development and may be changed or removed in a future release.
An important step to making your environment production ready is to configure stack monitoring. Monitoring metrics can be sent to an external resource, such as Elasticsearch Service or Elastic Cloud on Kubernetes, so that in the event that any components of your environment become unresponsive, your monitoring data is available.
To enable Stack monitoring for Logstash, you need Metricbeat to collect Logstash metrics, Elasticsearch to store the metrics and Kibana to view the result.
Stack monitoring with Elastic Cloud on Kubernetes (ECK)edit
Be sure that you have ECK installed so that you can follow the example. Check out Prepare your environment for set up info.
For these examples, we will be modifying the Beats stack monitoring recipe from the ECK examples. This example initiates a production Elasticsearch cluster, a monitoring Elasticsearch cluster, Filebeat, Metricbeat, a production Kibana and a monitoring Kibana. It monitors Elasticsearch and Kibana and sends metrics to the monitoring cluster. We use autodiscover to configure monitoring for multiple Logstash instances.
Configure Metricbeatedit
To monitor Logstash, add the Logstash module to the recipe.
apiVersion: beat.k8s.elastic.co/v1beta1
kind: Beat
metadata:
name: metricbeat
spec:
type: metricbeat
version: 8.4.2
elasticsearchRef:
name: elasticsearch-monitoring
config:
metricbeat:
autodiscover:
providers:
- type: kubernetes
scope: cluster
hints.enabled: true
templates:
- condition:
contains:
kubernetes.labels.app: ls
config:
- module: logstash
metricsets:
- node
- node_stats
period: 10s
hosts: "http://${data.host}:9600"
xpack.enabled: true
...
|
Metricbeat sends metrics to |
|
|
Metricbeat scans for the pods with label |
|
|
Metricbeat logstash module calls metric endpoint of each Logstash from port |
Configure Logstashedit
Add label app: ls to Deployment for autodiscover.
apiVersion: apps/v1
kind: Deployment
metadata:
name: logstash
labels:
app: ls
...
After you have configured Metricbeat and Logstash, the configurations are ready to deploy. Go to View monitoring data in Kibana for info on how to confirm that everything is working.
Show Kibana metrics in the same Elasticsearch cluster (optional)edit
By default Logstash metrics will be shown in a standalone cluster. To associate data with the same cluster of Elasticsearch and Kibana, provide the cluster_uuid of the production Elasticsearch cluster to monitoring.cluster_uuid in logstash.yml.
apiVersion: v1
data:
logstash.yml: |
api.http.host: "0.0.0.0"
monitoring.cluster_uuid: PRODUCTION_ES_CLUSTER_UUID
kind: ConfigMap
metadata:
name: logstash-config
To get the cluster_uuid, go to Kibana > Stack Monitoring page. The URL in the browser shows the uuid in the form of cluster_uuid:PRODUCTION_ES_CLUSTER_UUID,.
View monitoring data in Kibanaedit
When everything is set, the Kibana > Stack Monitoring page will show the Logstash data.
To access Kibana by https://localhost:5601, set the port forwarding:
kubectl port-forward service/kibana-monitoring-kb-http 5601
Get the login password:
kubectl get secret elasticsearch-monitoring-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode; echo
Ship metrics to external Elasticsearch clusteredit
Be sure that you have the Elastic CustomResourceDefinitions (CRDs) installed so that you can follow the example. Check out Prepare your environment for set up info.
Metrics can be sent to an Elasticsearch cluster that is not managed by ECK. To configure Metricbeat, remove the elasticsearchRef from the specification and include an output configuration in the spec.config.
apiVersion: beat.k8s.elastic.co/v1beta1
kind: Beat
metadata:
name: metricbeat
spec:
config:
output.elasticsearch:
hosts: ["https://es:9200"]
username: "elastic"
password: "changeme"
...
Ship metrics to Elastic Cloudedit
Be sure that you have the Elastic CustomResourceDefinitions (CRDs) installed so that you can follow the example. Check out Prepare your environment for set up info.
You can configure Metricbeat to send monitoring data to a hosted Elasticsearch Service on Elastic Cloud. To send to Elastic Cloud, remove the elasticsearchRef from the spec and set the cloud.id and cloud.auth for your Elastic Cloud monitoring cluster in the spec.config section of the Metricbeat configuration.
apiVersion: beat.k8s.elastic.co/v1beta1
kind: Beat
metadata:
name: metricbeat
spec:
config:
cloud.id: CLOUD_ID
cloud.auth: CLOUD_AUTH
...