Sisense Configuration Tips
Sisense Configuration Tips
What You’ll Learn
In this course you will learn how to:
- Export Sisense configuration
- Search for settings in the configuration
- Change the configuration settings
- Compare different configurations
- Import configuration
Use Cases For Applying What You Will Learn
The following are some scenarios where this content can be applied when working with Sisense configurations:
- You see the operation in the logs hitting the timeout equaling 300000, but you are not sure if there is a setting for such a timeout in the configuration.
- You are performing an upgrade and want to check if the upgrade affected some of your configurations.
- You want to back up the configuration.
- You want to compare the configurations of two different environments.
Prerequisites
- Familiarity with Sisense UI
- Basic knowledge of Linux
- Basic knowledge of Kubernetes
Configuration Types In Sisense
Sisense configuration settings may be logically divided into a couple of main categories:
- Fixed: Those that are ‘fixed’ for the current deployment like the ones you set during Sisense's installation.
- Configurable: Those that can be changed using the Configuration UI or the SI Client commands, without having to reinstall or update the Sisense application.
- Add-ons: Those that are not directly related to the core application, but apply to add-ons like plugins or connectors
In this article, we will focus on Configurable settings that can be accessed from the Admin tab > System Management > Configuration
To get access to the full configuration menu, click on the Sisense logo 5 times:
Services Responsible For Configuration Management
Two services in Sisense are responsible for configuration management:
- Zookeeper stores the configuration settings.
- Configuration is responsible for manipulating configuration parameters and providing the configuration data to other services using ConfigurationSDK.
Configurations are set when the configuration service starts. The service sets all of the base (shared) configurations under the base configurations path in Zookeeper. All other services copy their required configurations during boot time using the configuration manifest file each service has stored using the Sisense-configuration SDK.
Base Vs Specific Configuration
The base configuration is shared between services. For example, if you change the log level in the base configuration it will change for all the services.
Specific configuration settings for services affect those services only.
You should be mindful of the Base and specific configuration when setting configuration parameters using tools outside of the UI!
Hidden UI Configuration “File Explorer”
As we already learned, we cannot change the base configuration parameters for specific services using the standard UI configuration menu. But what if we want to change the log level just for the Galaxy service? The hidden UI configuration, “file explorer” will come in handy. It will display all available Zookeeper configuration parameters. To access the hidden configuration “file explorer” click on the General section header 5 times.
The menu will expand and then, you will be able to see the File Explorer sub-menu
Find the galaxy service folder in the file tree. From there you will be able to see the base configuration settings for galaxy services:
Please note, if you change the base configuration setting, it will reset the individual value.
Changing Configuration Settings
There are 4 ways to change configuration settings:
- From the UI regular menu Admin > System Management > Configuration
- From the UI hidden file explorer (see above)
- From inside the Zookeeper pod using zkCli.sh
- Using SI CLI commands
Using the UI and hidden file explorer is quite straightforward, so below is a review on how to use zkCli.sh and SI CLI commands.
From Inside The Zookeeper Pod Using Zkcli.Sh
Exec into Zookeeper:
kubectl -n sisense exec -it $(kubectl -n sisense get po -l=app=zookeeper -o name) -- bash
Run zkCli.sh
You will see the prompt:
help — to see the help with all commands
ls — to list configurations, Sisense configurations are located at
ls /Sisense/S1/configuration/production/
get — to get the particular value for example
get /Sisense/S1/configuration/production/translation-service/SwitchOffSameGuids
set — to set the particular value in the format, set the parameter value. For example,
set /Sisense/S1/configuration/production/translation-service/SwitchOffSameGuids true
Using SI CLI commands
si configuration is responsible for manipulating the configuration settings:
get — to get the particular value in the format of
si configuration get -key category.entry -type key
set — to set the particular value in the format of
si configuration set -key category.entry -new-value 1412
Read more about SI commands in Sisense’s documentation site: Using Sisense CLI Commands.
Exporting Configuration Settings:
Say you see in the logs that the request is hitting the 300000 msec timeout threshold, but you don’t know where the timeout is set and if there is such a timeout setting at all. It would be great to search the entire configuration set for the value 300000 and see if anything comes out, but the UI doesn’t provide that functionality yet, since you can only search per service. Please note, that at this time you cannot search through all configuration settings via the comprehensive configuration menu nor in the file explorer.
To perform a global search in all configuration settings, we can export the configurations and perform the search in the output file. Remember that configurations are stored in Zookeeper while the configuration service is responsible for interacting with the Zookeeper database. Therefore, we will use configuration commands to perform the export.
1. Run this command to get the Zookeeper service ClusterIP: kubectl get svc -A | grep zookeeper.
2. Put the IP in this command (but don’t run it yet!).
node /usr/src/app/node_modules/@sisense/sisense-configuration/bin/sisense-conf export -p -c 10.43.198.82:2181
3. Then exec into the configuration pod.
kubectl -n sisense get po | grep configuration
kubectl exec -it -n sisense configuration-84777bdfd9-n2wn5 -- /bin/bash
4. Then run the above command (with the correct cluster IP). It will dump the output into sisenseConfiguration.json, then run exit.
5. Copy sisenseConfiguration.json out of the pod, to the host, so you could work with the file
kubectl -n sisense cp configuration-84777bdfd9-n2wn5:/usr/src/app/sisenseConfiguration.json sisenseConfiguration.json
Or simply run this command from the host, which will do everything for you.
kubectl -n sisense exec -it $(kubectl -n sisense get po -l=app=configuration -o name) -- node /usr/src/app/node_modules/@sisense/sisense-configuration/bin/sisense-conf export -p -c sisense-zookeeper:2181 > sisenseConfiguration.json
It will put sisenseConfiguration.json into the folder you are running it from. Now you can search for the 300000 value in the entire configuration.
To perform an extensive search, you can use your favorite editor like vim or nano to open the file or use the Linux command “less”.
Importing Configuration Settings
Copy sisenseConfiguration.json to the new environment and to the configuration pod. Then exec into the configuration pod on the new environment using the following command:
kubectl exec -it -n sisense configuration-84777bdfd9-n2wn5 -- /bin/bash
and run: node /usr/src/app/node_modules/@sisense/sisense-configuration/bin/sisense-conf import -p -c sisense-zookeeper:2181 -i sisenseConfiguration.json
Comparing Configurations Of Different Environments
Say you want to compare configurations of two different environments or compare configurations before and after the upgrade to make sure nothing has changed. Now it is easy to do! You can export configurations into files and compare files using diff or your favorite online text-comparing tool like https://text-compare.com/
Summary
I hope this article helps you perform searches in Sisense’s configuration, compare configurations and check if a configuration setting exists at all in Sisense. Using this article, we hope to empower Sisense users and show that users are not limited by UI limitations when working with configurations.