integrations/kibana/documentation.yaml (127 lines of code) (raw):
exporter_type: included
app_name_short: Kibana
app_name: {{app_name_short}}
app_site_name: Kibana
app_site_url: https://www.elastic.co/kibana/
exporter_name: the Kibana Prometheus exporter
exporter_pkg_name: kibana-prometheus-exporter
exporter_repo_url: https://github.com/pjhampton/kibana-prometheus-exporter
minimum_exporter_version: "8.0.0"
additional_prereq_info: |
{{app_name_short}} exposes Prometheus-format metrics only after you install
{{exporter_name}} plugin. To install the plugin, follow the
<a href="{{exporter_repo_url}}#installing" class="external">installation instructions</a>.
The installation process requires the use of `bin/kibana-plugin install {{plugin_var}}`. One way to install the plugin is
to define a custom Kibana Docker image; see the following example:
```Dockerfile
FROM kibana:{{kibana_version_var}}
RUN bin/kibana-plugin install https://github.com/pjhampton/kibana-prometheus-exporter/releases/download/{{plugin_version_var}}/kibanaPrometheusExporter-{{plugin_version_var}}.zip
```
After building the image and pushing it to a remote repository, it can be used within the Kubernetes deployment. For example:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: kibana
data:
kibana.yml: |
server.name: kibana
server.host: "0.0.0.0"
# Update this with credentials to match your Elasticsearch instance
elasticsearch.hosts: http://username:password@elasticsearch-service-name:9200
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kibana
labels:
app.kubernetes.io/name: kibana
spec:
...
template:
...
spec:
containers:
- name: kibana
image: {{custom_image_var}}
ports:
- containerPort: 5601
name: kibana
protocol: TCP
volumeMounts:
- mountPath: /usr/share/kibana/config/kibana.yml
subPath: kibana.yml
name: kibana
volumes:
- name: kibana
configMap:
name: kibana
items:
- key: kibana.yml
path: kibana.yml
```
To verify that {{exporter_name}} is emitting metrics on the expected endpoints,
do the following:
1. Set up port-forwarding with the following command:
<pre class="devsite-click-to-copy">
kubectl -n {{namespace_name}} port-forward {{pod_name}} 5601
</pre>
1. Access the endpoint `localhost:5601/_prometheus/metrics` by using the
browser or the `curl` utility in another terminal session.
dashboard_available: true
multiple_dashboards: false
dashboard_display_name: {{app_name_short}} Prometheus Overview
podmonitoring_config: |
apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
name: kibana
labels:
app.kubernetes.io/name: kibana
app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
endpoints:
- port: 5601
scheme: http
interval: 30s
path: /_prometheus/metrics
selector:
matchLabels:
app.kubernetes.io/name: kibana
sample_promql_query: up{job="kibana", cluster="{{cluster_name}}", namespace="{{namespace_name}}"}
alerts_config: |
apiVersion: monitoring.googleapis.com/v1
kind: Rules
metadata:
name: kibana-rules
labels:
app.kubernetes.io/component: rules
app.kubernetes.io/name: kibana-rules
app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
groups:
- name: kibana
interval: 30s
rules:
- alert: KibanaHighCPUUsage
annotations:
description: |-
Kibana high cpu usage
VALUE = {{ $value }}
LABELS: {{ $labels }}
summary: Kibana high cpu usage (instance {{ $labels.instance }})
expr: kibana_os_load5 >= 90
for: 5m
labels:
severity: critical
- alert: KibanaHighMemoryUsage
annotations:
description: |-
Kibana high memory usage
VALUE = {{ $value }}
LABELS: {{ $labels }}
summary: Kibana high memory usage (instance {{ $labels.instance }})
expr: kibana_os_mem_bytes_used / kibana_os_mem_bytes_total >= 0.9
for: 5m
labels:
severity: critical
additional_alert_info: You can adjust the alert thresholds to suit your application.