Deployment and Design of Management Backend and Monitoring
This post guides you through the process of deploying OpenIM using Docker, setting up the management backend, and monitoring the application. It provides detailed steps for beginners and insights for more advanced users.
November 15, 2023 · 7 min · 1401 words · Xinwei Xiong, Me | Translations:
OpenIM offers various flexible deployment options to suit different environments and requirements. Here is a simplified and optimized description of these deployment options:
Source Code Deployment:
Regular Source Code Deployment: Deployment using the nohup method. This is a basic deployment method suitable for development and testing environments. For details, refer to the Regular Source Code Deployment Guide
.
Production-Level Deployment: Deployment using the system method, more suitable for production environments. This method provides higher stability and reliability. For details, refer to the Production-Level Deployment Guide
.
Cluster Deployment:
Kubernetes Deployment: Provides two deployment methods, including deployment through Helm and sealos. This is suitable for environments that require high availability and scalability. Specific methods can be found in the Kubernetes Deployment Guide
.
Docker Deployment:
Regular Docker Deployment: Suitable for quick deployments and small projects. For detailed information, refer to the Docker Deployment Guide
.
Docker Compose Deployment: Provides more convenient service management and configuration, suitable for complex multi-container applications.
Next, we will introduce the specific steps, monitoring, and management backend configuration for each of these deployment methods, as well as usage tips to help you choose the most suitable deployment option according to your needs.
OpenIM deploys openim-server and openim-chat from source code, while other components are deployed via Docker.
For Docker deployment, you can deploy all components with a single command using the openimsdk/openim-docker
repository. The deployment configuration can be found in the environment.sh
document, which provides information on how to learn and familiarize yourself with various environment variables.
For Prometheus, it is not enabled by default. To enable it, set the environment variable before executing make init:
To configure Prometheus data sources in Grafana, follow these steps:
Log in to Grafana: First, open your web browser and access the Grafana URL. If you haven’t changed the port, the address is typically http://localhost:3000
.
Log in with default credentials: Grafana’s default username and password are both admin. You will be prompted to change the password on your first login.
Access Data Sources Settings:
In the left menu of Grafana, look for and click the “gear” icon representing “Configuration.”
In the configuration menu, select “Data Sources.”
Add a New Data Source:
On the Data Sources page, click the “Add data source” button.
In the list, find and select “Prometheus.”
⌀Image no longer available · image-20231114175117374
Click Add New connection to add more data sources, such as Loki (responsible for log storage and query processing).
Configure the Prometheus Data Source:
On the configuration page, fill in the details of the Prometheus server. This typically includes the URL of the Prometheus service (e.g., if Prometheus is running on the same machine as OpenIM, the URL might be http://172.28.0.1:19090, with the address matching the DOCKER_BRIDGE_GATEWAY variable address). OpenIM and the components are linked via a gateway. The default port used by OpenIM is 19090.
Adjust other settings as needed, such as authentication and TLS settings.
⌀Image no longer available · image-20231114180351923
Save and Test:
After completing the configuration, click the “Save & Test” button to ensure that Grafana can successfully connect to Prometheus.
Importing Dashboards in Grafana
Importing Grafana Dashboards is a straightforward process and is applicable to OpenIM Server application services and Node Exporter. Here are detailed steps and necessary considerations:
Key Metrics Overview and Deployment Steps
To monitor OpenIM in Grafana, you need to focus on three categories of key metrics, each with its specific deployment and configuration steps:
OpenIM Metrics (prometheus-dashboard.yaml):
Configuration File Path: Located at config/prometheus-dashboard.yaml.
Enabling Monitoring: Set the environment variable export PROMETHEUS_ENABLE=true to enable Prometheus monitoring.
Middleware Metrics: Each middleware requires specific steps and configurations to enable monitoring. Here is a list of common middleware and links to their respective setup guides:
MySQL:
Configuration: Ensure MySQL has performance monitoring enabled.
This guide provides the steps to run OpenIM using Docker. OpenIM is an open-source instant messaging solution that can be quickly deployed using Docker. For more information, please refer to the OpenIM Docker GitHub
.
When deploying and monitoring OpenIM in a Kubernetes environment, you will focus on three main metrics: middleware, custom OpenIM metrics, and Node Exporter. Here are detailed steps and guidelines:
Custom OpenIM metrics provide essential information about the OpenIM application itself, such as user activity, message traffic, system performance, and more. To monitor these metrics in Kubernetes:
Node Exporter is used to collect hardware and operating system-level metrics for Kubernetes nodes, such as CPU, memory, disk usage, and more. To integrate Node Exporter in Kubernetes:
Deploy Node Exporter using the appropriate Helm chart. You can find information and guides on Prometheus Community
.
Ensure Node Exporter’s data is collected by Prometheus instances within your cluster.
Responses