Kibana¶
Architecture¶
Kibana, as a powerful visualization tool for exploring and analyzing your data in real-time integrated into the Elastic Stack, is used by NetEye for providing a user-friendly interface for interacting with Elasticsearch data.
In order to enhance the availability and scalability of Kibana, it is possible to run multiple instances of Kibana across different nodes in the NetEye cluster. This multi-instance architecture allows for better load balancing and improved performance, especially in larger deployments where Kibana is heavily utilized.
The multi-instance architecture is based on Nginx and Keepalived, which work together to provide a highly available and scalable Kibana service. Nginx acts as a reverse proxy, distributing incoming requests to the available Kibana instances, while Keepalived ensures that the service remains available even in the event of node failures by managing virtual IP addresses.
Kibana instances can be configured through the /etc/neteye-cluster
file, where you can specify which nodes
should host the Kibana service by adding the role “kibana” to the nodes’ roles field.
Note
For a valid configuration of the NetEye cluster, at least one node must be assigned the “kibana” role and the kibana role can be assigned to any node in the cluster (including elastic only nodes) except for the voting node.
Once the Kibana nodes are defined in the cluster configuration, launching the neteye install command will automatically initialize the Kibana instances on the specified nodes.
Note
Refer to Cluster Nodes Roles and Cluster Services Configuration for more information on how to configure the Kibana services in the cluster nodes.
Keystore Usage¶
The Kibana Keystore feature comes with a keybana-keystore tool, which permits to manage the settings in the keystore.
If your installation is a NetEye Cluster, you are advised to use kibana-keystore tool only from the cluster nodes where the Kibana service is running. If you have multiple kibana instances running in the NetEye cluster, keep in mind that the kibana-keystore will not be synchronized across the cluster nodes: any changes made on one node will not be reflected on the other nodes.
Using the keybana-keystore
tool from nodes where Kibana is not
running will have no effect on the Kibana Keystore configuration.
Kibana Performance¶
There is a number of interesting tuning options that could be applied on Kibana settings to improve performance on production.
For more information, see the official documentation.
Require Content Security Policy (CSP)
Kibana uses a Content Security Policy to help prevent the browser from allowing unsafe scripting, but older browsers will silently ignore this policy. If your organization does not need to support Internet Explorer 11 or much older versions of our other supported browsers, we recommend that you enable Kibana’s strict mode for content security policy, which will block access to Kibana for any browser that does not enforce even a rudimentary set of CSP protections.
To do this, set csp.strict
to true in file
/neteye/shared/kibana/conf/kibana.yml
.
Memory
Kibana has a default maximum memory limit of 1.4 GB, and in most cases, we recommend leaving this setting to its default value. However, in some scenarios, such as large reporting jobs, it may make sense to tweak limits to meet more specific requirements.
You can modify this limit by setting --max-old-space-size
in the
NODE_OPTIONS
environment variable. In Neteye this can be configured
creating a file
/etc/systemd/system/kibana-logmanager.service.d/memory.conf
containing a limit in MB such as:
[Service]
NODE_OPTIONS="--max-old-space-size=2048"
For more information, see the official documentation.
User Customization
The Kibana environment file /neteye/local/kibana/conf/sysconfig/kibana
contains some options used by the Kibana service. Please note how
this file must not be modified, since it will be overwritten at each update.
The dedicated file /neteye/local/kibana/conf/sysconfig/kibana-user-customization
can be used to specify or override one or more Kibana environment variables.