POS Management Stack is designed for management and monitoring of storage in PoseidonOS. It uses a client server model and consists of a client frontend application (README) (developed using reactjs) that facilitates users requests by interacting with a backend server application (developed using Python3). The backend application connects to a middleware server application (written using Golang) to interact with PoseidonOS system. The middleware application also hosts a REST API server (README)
Storage Management enables array management, volume management and user management. Storage Monitoring enables to know the state and health of the storage. It consists of graphs and notification system (will be enabled soon). Graphs can be displayed for benchmarking of I/O, bandwidth, CPU utilization and other metrics gathered from POS (will be enabled soon).
As described above , POS Management Stack consists of a client (Poseidonos-GUI), backend server and middlewware server (API server that interacts with POS server).
- Poseidonos-GUI is developed using Javascript framework Reactjs (README)
- Backend server is developed using Python3
- Middleware server (DAgent) is developed using GO (README)
- Tested and works fine in the following latest modern browsers
- Google Chrome
- Mozilla Firefox
- PoseidonOS service is required to be installed and running already
- Roles, Authentication and Authorization (Only Admin role is supported; default login credentials = admin/admin)
- Storage Management (Array and Volume management - creation, updation and deletion)
- Poseidon Administration (Start, Stop and Status)
- Subsystem Management(Subsystem - creation and deletion)
- Telemetry Dashboard (Start and Stop Telemetry, view Grafana dashboard)
- User Management (Create, update and remove user - only Admin role is supported)
- REST API provider (README)
The official user guide is available here: src/mtool/doc/Samsung_iBOF_Management_Tool_User_Manual.pdf User Guide
- python3
- go v1.18+
- nodejs 14.x
- Grafana 9.0.4+
- IP Address of Mellanox Port should be set (Please refer to the file src/dagent/README.md (README))
- POS service is assumed to be available at "/usr/local/bin". If POS binary is not available in the "usr/local/bin" directory, then user will see an error when staring the pos (e.g. Poseidonos binary not found in /usr/local/bin/). In such a case, please build the poseidonos and run 'make install' from poseidonos root directory to correctly install the POS service
- While setting up Prometheus Database for PoseidonOS, PoseidonOS-GUI assumes the job name as "poseidonos", and the UI might not show any metrics in the dashboard if the database is configured differently
- Internet access is required for downloading the required packages
- SSL certificates have to installed on the server or VM where Poseidonos-GUI will be installed
- Python3 comes with Ubuntu 18.04, If not, please download and install it from https://www.python.org/downloads/
- For Go v1.18+ follow the steps given at https://golang.org/doc/install to install the latest version of Go
- For Node v1.14:
- Download Nodejs tar.xz file from https://nodejs.org/en/download/
- Extract the tar file using the command: sudo tar -xvf node-v14.x.x-linux-x64.tar.xz (Use the version instead of x)
- Copy the contents of inside the extracted directory to /usr/bin directory using the command: sudo cp -r node-v14.x.x-linux-x64/{bin,include,lib,share} /usr/
- node.js is required in the /usr/bin/ directory (you can copy using "sudo cp -r node-v14.x.x-linux-x64/{bin,include,lib,share} /usr/")
- golang is required in the /usr/local directory (you can copy to /usr/local)
- Add golang path to environment using "export PATH=$PATH:/usr/local/go/bin" (this may be added in the profile (e.g. bashrc) file for persistence across sessions)
- If you encounter any SSL related issues, you can set "npm config set strict-ssl false" for npm installation to work with SSL cert (this is a workaround in dev environment and not recommended in production environments).
- For QOS settings maxiops and maxbw to work, a flag "fe_qos" should be set to "true" in /etc/pos/pos.conf (this step assumes that Poseidonos service is running already). After changing this flag, Poseidonos service has to be restarted from Poseidonos-GUI using the "Admin -> Poseidon Operations -> STOP & START"
- Linux Ubuntu 18.04
- POS release/v1.0.0 (Branch: release/v1.0.0 https://github.com/poseidonos/poseidonos/tree/release/v1.0.0)
- Clone the project from GitHub - https://github.com/poseidonos/poseidonos-gui
- Navigate to poseidonos-gui directory
- Run scripts as described below to install and run the application (You need to run these scripts as root or with a user with elevated permissions)
- Access the application in the browser (e.g. http://<local_ip_addr>)
1. git clone https://github.com/poseidonos/poseidonos-gui.git
2. cd poseidonos-gui
3. ./script/install_all.sh
4. ./script/build_all.sh
5. ./script/run_all.sh
6. Access the application from the browser
`
http://localhost
`
7. Access the REST API using a client (e.g. POSTMAN) at
`
http://localhost
`
S.No | Script Name | Location | Description | Notes |
---|---|---|---|---|
1 | install_all.sh | script/ | Installs dependencies for GUI, DAgent (e.g. nginx) | |
2 | build_all.sh | script/ | Builds various components into respective binaries (e.g. DAgent binary, GUI Binary) | |
3 | run_all.sh | script/ | Runs the binaries as services or applications (e.g. DAgent service, GUI web application) | |
4 | run_os.sh | src/dagent/script/ | Runs the POS binary | |
5 | build_dagent.sh | src/dagent/script/ | Builds Dagent code into binary | 1. Used internally by build_all.sh script (#2) |
6 | run_dagent.sh | src/dagent/script/ | Runs Dagent as a service | 1. Used internally by run_all.sh script (#3) |
| 7 | build_mtool.sh | src/mtool/script/ | Builds Mtool code into binary | 1. Used internally by build_all.sh script (#2) | | 8 | run_mtool.sh | src/mtool/script/ | Runs MTool as a web application | 1. Used internally by run_all.sh script (#3) | | 9 | dagent.service | src/dagent/script/ | Registers Dagent as a service | 1. Required and used internally by run_all.sh script (#3) | | 10 | start-iBofMtool.service | src/mtool/script/ | Registers MTool backend API as a service | 1. Required and used internally by run_all.sh script (#3) | | 11 | uninstall.sh | script/ | Uninstalls binaries and kills services for GUI, DAgent (e.g. nginx) |
S.No | Log Name | Log Location | Description | Notes |
---|---|---|---|---|
1 | DAgent Log | /var/log/m9k/dagent1.log | API logs; errors or exceptions | Currently set to log errors only |
2 | GUI Log | src/mtool/api/public/log | Rest API interaction logs; errors or exceptions | This is created when GUI runs |
3 | System Log | /var/log/syslog | Various system level logs |
-
How to check whether POS is running (or check POS status)?
- Using GUI - The Right hand top corner shows the POS status (e.g. RUNNING)
-
How to restart POS?
- Use GUI and use the POS Operations page - (Admin -> Poseidon Operations -> STOP or START)
-
How to check which agents are running?
- ps -aux | grep dagent or systemctl status dagent or service dagent status
- ps -aux | grep app or systemctl status start-iBofMtool or service start-iBofMtool status
-
How to check prometheus db is running ?
- ps -aux | grep prometheus or systemctl status prometheus or service prometheus status
-
How to restart Poseidonos-GUI? (We recommend restarting entire stack rather than individual components as shown below)
- ./script/run_all.sh
-
How to check for any M9K errors or logs?
- /m9k/mtool/public/log (MTool logs - REST API interactions logs)
- /var/log/m9k/dagent1.log (POS API interactions are here - failed create/mount an array will be here)
-
GUI shows “POS is busy”. What should be done?
- In most of the cases, you can wait for 3-4 seconds and retry
- In few cases, you may have to restart POS (by STOP and STOP operations from the GUI)
-
How to know what services are running as a part of GUI?
- nginx, dagent, Mtool backend
-
How to restart all components M9K ?
- ./m9k/run_all.sh
-
Is there a limit of volumes per array ?
- Yes, it is 256
-
Is there a specific directory from which POS should be installed?
- There is no specific directory from which POS should be installed. POS service is assumed to be available at "/usr/local/bin". If POS binary is not available in the "usr/local/bin" directory, then user will see an error when staring the pos (e.g. Poseidonos binary not found in /usr/local/bin/). In such a case, please build the poseidonos and run 'make install' from poseidonos root directory to correctly install the POS service
-
What are the default login credentials for the UI?
- Username: admin
- Password: admin
-
What is "MTool"?
- It is an internal name for Poseidonos-GUI project, the client application of the M9K
-
What is "POS"?
- It is an internal name for Poseidonos server
-
What should I do if I am unable to properly start Poseidonos service from the "Admin" menu?
- This can mean that Poseidonos service may not be installed correctly. Please make sure Poseidonos is installed correctly. You can also try to run setup_env.sh script (this script is available in script directory in the Poseidonos repo)