Compare commits
3 Commits
v3.5.1-rc.
...
sweep/feat
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5fb8598d07 | ||
|
|
2955b251b3 | ||
|
|
c7997329c2 |
@@ -2,6 +2,7 @@
|
|||||||
// Reference Doc: https://code.visualstudio.com/remote/advancedcontainers/overview
|
// Reference Doc: https://code.visualstudio.com/remote/advancedcontainers/overview
|
||||||
"name": "OpenIM Dev Environment",
|
"name": "OpenIM Dev Environment",
|
||||||
// Update the container version when you publish dev-container
|
// Update the container version when you publish dev-container
|
||||||
|
"dockerComposeFile": "docker-compose.yml",
|
||||||
"build": { "dockerfile": "Dockerfile" },
|
"build": { "dockerfile": "Dockerfile" },
|
||||||
// Replace with uncommented line below to build your own local copy of the image
|
// Replace with uncommented line below to build your own local copy of the image
|
||||||
// "dockerFile": "../docker/Dockerfile-dev",
|
// "dockerFile": "../docker/Dockerfile-dev",
|
||||||
|
|||||||
1
.github/workflows/help-comment-issue.yml
vendored
1
.github/workflows/help-comment-issue.yml
vendored
@@ -17,7 +17,6 @@ on:
|
|||||||
issues:
|
issues:
|
||||||
types:
|
types:
|
||||||
- labeled
|
- labeled
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
add-comment:
|
add-comment:
|
||||||
if: github.event.label.name == 'help wanted' || github.event.label.name == 'good first issue'
|
if: github.event.label.name == 'help wanted' || github.event.label.name == 'good first issue'
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -34,7 +34,6 @@ deployments/charts/generated-configs/
|
|||||||
### OpenIM Config ###
|
### OpenIM Config ###
|
||||||
.env
|
.env
|
||||||
config/config.yaml
|
config/config.yaml
|
||||||
config/openim.yaml
|
|
||||||
config/alertmanager.yml
|
config/alertmanager.yml
|
||||||
config/prometheus.yml
|
config/prometheus.yml
|
||||||
config/email.tmpl
|
config/email.tmpl
|
||||||
|
|||||||
15
CHANGELOG/CHANGELOG-3.5.0.md
Normal file
15
CHANGELOG/CHANGELOG-3.5.0.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Version logging for OpenIM
|
||||||
|
|
||||||
|
<!-- BEGIN MUNGE: GENERATED_TOC -->
|
||||||
|
|
||||||
|
<!-- END MUNGE: GENERATED_TOC -->
|
||||||
|
|
||||||
|
<a name="unreleased"></a>
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
|
||||||
|
<a name="v3.5.0+3.97baaac"></a>
|
||||||
|
## [v3.5.0+3.97baaac] - 2024-01-12
|
||||||
|
|
||||||
|
[Unreleased]: https://github.com/openimsdk/open-im-server/compare/v3.5.0+3.97baaac...HEAD
|
||||||
|
[v3.5.0+3.97baaac]: https://github.com/openimsdk/open-im-server/compare/v3.5.0+5.950e970...v3.5.0+3.97baaac
|
||||||
47
config/templates/alertmanager.yml.template
Normal file
47
config/templates/alertmanager.yml.template
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
###################### AlertManager Configuration ######################
|
||||||
|
# AlertManager configuration using environment variables
|
||||||
|
#
|
||||||
|
# Resolve timeout
|
||||||
|
# SMTP configuration for sending alerts
|
||||||
|
# Templates for email notifications
|
||||||
|
# Routing configurations for alerts
|
||||||
|
# Receiver configurations
|
||||||
|
global:
|
||||||
|
resolve_timeout: 5m
|
||||||
|
smtp_from: alert@openim.io
|
||||||
|
smtp_smarthost: smtp.163.com:465
|
||||||
|
smtp_auth_username: alert@openim.io
|
||||||
|
smtp_auth_password: YOURAUTHPASSWORD
|
||||||
|
smtp_require_tls: false
|
||||||
|
smtp_hello: xxx监控告警
|
||||||
|
|
||||||
|
templates:
|
||||||
|
- /etc/alertmanager/email.tmpl
|
||||||
|
|
||||||
|
route:
|
||||||
|
group_by: ['alertname']
|
||||||
|
group_wait: 5s
|
||||||
|
group_interval: 5s
|
||||||
|
repeat_interval: 5m
|
||||||
|
receiver: email
|
||||||
|
receivers:
|
||||||
|
- name: email
|
||||||
|
email_configs:
|
||||||
|
- to: 'alert@example.com'
|
||||||
|
html: '{{ template "email.to.html" . }}'
|
||||||
|
headers: { Subject: "[OPENIM-SERVER]Alarm" }
|
||||||
|
send_resolved: true
|
||||||
@@ -0,0 +1,521 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the License);
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
# TODO: This config file is the template file
|
||||||
|
# --| source: deployments/templates/openim.yaml
|
||||||
|
# --| env: scripts/install/environment
|
||||||
|
# --| target: config/config.yaml
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
|
||||||
|
envs:
|
||||||
|
discovery: zookeeper
|
||||||
|
|
||||||
|
###################### Zookeeper ######################
|
||||||
|
# Zookeeper configuration
|
||||||
|
# It's not recommended to modify the schema
|
||||||
|
#
|
||||||
|
# Zookeeper address
|
||||||
|
# Zookeeper username
|
||||||
|
# Zookeeper password
|
||||||
|
zookeeper:
|
||||||
|
schema: openim
|
||||||
|
address: [ 172.28.0.1:12181 ]
|
||||||
|
username: ''
|
||||||
|
password: ''
|
||||||
|
|
||||||
|
###################### Mongo ######################
|
||||||
|
# MongoDB configuration
|
||||||
|
|
||||||
|
# If uri is not empty, it will be used directly for the MongoDB connection.
|
||||||
|
# This is a complete MongoDB URI string.
|
||||||
|
# Example: mongodb://user:password@host1:port1,host2:port2/dbname?options
|
||||||
|
mongo:
|
||||||
|
uri: ''
|
||||||
|
|
||||||
|
# List of MongoDB server addresses.
|
||||||
|
# Used for constructing the MongoDB URI if 'uri' above is empty.
|
||||||
|
# For a standalone setup, specify the address of the single server.
|
||||||
|
# For a sharded cluster, specify the addresses of the Mongos servers.
|
||||||
|
# Example: [ '172.28.0.1:37017', '172.28.0.2:37017' ]
|
||||||
|
# Default MongoDB database name
|
||||||
|
# Maximum connection pool size
|
||||||
|
address: [ 172.28.0.1:37017 ]
|
||||||
|
database: openim_v3
|
||||||
|
username: root
|
||||||
|
password: openIM123
|
||||||
|
maxPoolSize: 100
|
||||||
|
|
||||||
|
###################### Redis configuration information ######################
|
||||||
|
# Redis configuration
|
||||||
|
#
|
||||||
|
# Username is required only for Redis version 6.0+
|
||||||
|
redis:
|
||||||
|
address: [ 172.28.0.1:16379 ]
|
||||||
|
username: ''
|
||||||
|
password: openIM123
|
||||||
|
|
||||||
|
###################### Kafka configuration information ######################
|
||||||
|
# Kafka configuration
|
||||||
|
#
|
||||||
|
# Kafka username
|
||||||
|
# Kafka password
|
||||||
|
# It's not recommended to modify this topic name
|
||||||
|
# Consumer group ID, it's not recommended to modify
|
||||||
|
kafka:
|
||||||
|
username: ''
|
||||||
|
password: ''
|
||||||
|
addr: [ 172.28.0.1:19094 ]
|
||||||
|
latestMsgToRedis:
|
||||||
|
topic: "latestMsgToRedis"
|
||||||
|
offlineMsgToMongo:
|
||||||
|
topic: "offlineMsgToMongoMysql"
|
||||||
|
msgToPush:
|
||||||
|
topic: "msgToPush"
|
||||||
|
consumerGroupID:
|
||||||
|
msgToRedis: redis
|
||||||
|
msgToMongo: mongo
|
||||||
|
msgToMySql: mysql
|
||||||
|
msgToPush: push
|
||||||
|
|
||||||
|
###################### RPC configuration information ######################
|
||||||
|
# RPC configuration
|
||||||
|
#
|
||||||
|
# IP address to register with zookeeper when starting RPC, the IP and corresponding rpcPort should be accessible by api/gateway
|
||||||
|
# Default listen IP is 0.0.0.0
|
||||||
|
rpc:
|
||||||
|
registerIP: ''
|
||||||
|
listenIP: 0.0.0.0
|
||||||
|
|
||||||
|
###################### API configuration information ######################
|
||||||
|
# API configuration
|
||||||
|
#
|
||||||
|
# API service port
|
||||||
|
# Default listen IP is 0.0.0.0
|
||||||
|
api:
|
||||||
|
openImApiPort: [ 10002 ]
|
||||||
|
listenIP: 0.0.0.0
|
||||||
|
|
||||||
|
###################### Object configuration information ######################
|
||||||
|
# Object storage configuration
|
||||||
|
#
|
||||||
|
# Use minio for object storage
|
||||||
|
# API URL should be accessible by the app
|
||||||
|
# It's not recommended to modify the bucket name
|
||||||
|
# Endpoint should be accessible by the app
|
||||||
|
# Session token
|
||||||
|
# Configuration for Tencent COS
|
||||||
|
# Configuration for Aliyun OSS
|
||||||
|
# apiURL is the address of the api, the access address of the app, use s3 must be configured
|
||||||
|
# minio.endpoint can be configured as an intranet address,
|
||||||
|
# minio.signEndpoint is minio public network address
|
||||||
|
object:
|
||||||
|
enable: "minio"
|
||||||
|
apiURL: "http://14.155.64.202:10002"
|
||||||
|
minio:
|
||||||
|
bucket: "openim"
|
||||||
|
endpoint: "http://172.28.0.1:10005"
|
||||||
|
accessKeyID: "root"
|
||||||
|
secretAccessKey: "openIM123"
|
||||||
|
sessionToken: ''
|
||||||
|
signEndpoint: "http://14.155.64.202:10005"
|
||||||
|
publicRead: false
|
||||||
|
cos:
|
||||||
|
bucketURL: https://temp-1252357374.cos.ap-chengdu.myqcloud.com
|
||||||
|
secretID: ''
|
||||||
|
secretKey: ''
|
||||||
|
sessionToken: ''
|
||||||
|
publicRead: false
|
||||||
|
oss:
|
||||||
|
endpoint: "https://oss-cn-chengdu.aliyuncs.com"
|
||||||
|
bucket: "demo-9999999"
|
||||||
|
bucketURL: "https://demo-9999999.oss-cn-chengdu.aliyuncs.com"
|
||||||
|
accessKeyID: ''
|
||||||
|
accessKeySecret: ''
|
||||||
|
sessionToken: ''
|
||||||
|
publicRead: false
|
||||||
|
kodo:
|
||||||
|
endpoint: "http://s3.cn-east-1.qiniucs.com"
|
||||||
|
bucket: "demo-9999999"
|
||||||
|
bucketURL: "http://your.domain.com"
|
||||||
|
accessKeyID: ''
|
||||||
|
accessKeySecret: ''
|
||||||
|
sessionToken: ''
|
||||||
|
publicRead: false
|
||||||
|
|
||||||
|
###################### RPC Port Configuration ######################
|
||||||
|
# RPC service ports
|
||||||
|
# These ports are passed into the program by the script and are not recommended to modify
|
||||||
|
# For launching multiple programs, just fill in multiple ports separated by commas
|
||||||
|
# For example, [10110, 10111]
|
||||||
|
rpcPort:
|
||||||
|
openImUserPort: [ 10110 ]
|
||||||
|
openImFriendPort: [ 10120 ]
|
||||||
|
openImMessagePort: [ 10130 ]
|
||||||
|
openImGroupPort: [ 10150 ]
|
||||||
|
openImAuthPort: [ 10160 ]
|
||||||
|
openImPushPort: [ 10170 ]
|
||||||
|
openImConversationPort: [ 10180 ]
|
||||||
|
openImThirdPort: [ 10190 ]
|
||||||
|
|
||||||
|
###################### RPC Register Name Configuration ######################
|
||||||
|
# RPC service names for registration, it's not recommended to modify these
|
||||||
|
rpcRegisterName:
|
||||||
|
openImUserName: User
|
||||||
|
openImFriendName: Friend
|
||||||
|
openImMsgName: Msg
|
||||||
|
openImPushName: Push
|
||||||
|
openImMessageGatewayName: MessageGateway
|
||||||
|
openImGroupName: Group
|
||||||
|
openImAuthName: Auth
|
||||||
|
openImConversationName: Conversation
|
||||||
|
openImThirdName: Third
|
||||||
|
|
||||||
|
###################### Log Configuration ######################
|
||||||
|
# Log configuration
|
||||||
|
#
|
||||||
|
# Storage directory
|
||||||
|
# Log rotation time
|
||||||
|
# Maximum number of logs to retain
|
||||||
|
# Log level, 6 means all levels
|
||||||
|
# Whether to output to stdout
|
||||||
|
# Whether to output in json format
|
||||||
|
# Whether to include stack trace in logs
|
||||||
|
log:
|
||||||
|
storageLocation: /data/workspaces/open-im-server/logs/
|
||||||
|
rotationTime: 24
|
||||||
|
remainRotationCount: 2
|
||||||
|
remainLogLevel: 6
|
||||||
|
isStdout: false
|
||||||
|
isJson: false
|
||||||
|
withStack: false
|
||||||
|
|
||||||
|
###################### Variables definition ######################
|
||||||
|
# Long connection server configuration
|
||||||
|
#
|
||||||
|
# Websocket port for msg_gateway
|
||||||
|
# Maximum number of websocket connections
|
||||||
|
# Maximum length of websocket request package
|
||||||
|
# Websocket connection handshake timeout
|
||||||
|
longConnSvr:
|
||||||
|
openImWsPort: [ 10001 ]
|
||||||
|
websocketMaxConnNum: 100000
|
||||||
|
openImMessageGatewayPort: [ 10140 ]
|
||||||
|
websocketMaxMsgLen: 4096
|
||||||
|
websocketTimeout: 10
|
||||||
|
|
||||||
|
# Push notification service configuration
|
||||||
|
#
|
||||||
|
# Use GeTui for push notifications
|
||||||
|
# GeTui offline push configuration
|
||||||
|
# FCM offline push configuration
|
||||||
|
# Account file, place it in the config directory
|
||||||
|
# JPush configuration, modify these after applying in JPush backend
|
||||||
|
push:
|
||||||
|
enable: getui
|
||||||
|
geTui:
|
||||||
|
pushUrl: "https://restapi.getui.com/v2/$appId"
|
||||||
|
masterSecret: ''
|
||||||
|
appKey: ''
|
||||||
|
intent: ''
|
||||||
|
channelID: ''
|
||||||
|
channelName: ''
|
||||||
|
fcm:
|
||||||
|
serviceAccount: "x.json"
|
||||||
|
jpns:
|
||||||
|
appKey: ''
|
||||||
|
masterSecret: ''
|
||||||
|
pushUrl: ''
|
||||||
|
pushIntent: ''
|
||||||
|
|
||||||
|
# App manager configuration
|
||||||
|
#
|
||||||
|
# Built-in app manager user IDs
|
||||||
|
# Built-in app manager nicknames
|
||||||
|
manager:
|
||||||
|
userID: [ "openIM123456", "openIM654321", "openIMAdmin" ]
|
||||||
|
nickname: [ "system1", "system2", "system3" ]
|
||||||
|
|
||||||
|
# Multi-platform login policy
|
||||||
|
# For each platform(Android, iOS, Windows, Mac, web), only one can be online at a time
|
||||||
|
multiLoginPolicy: 1
|
||||||
|
|
||||||
|
# Whether to store messages in MySQL, messages in MySQL are only used for management background
|
||||||
|
chatPersistenceMysql: true
|
||||||
|
|
||||||
|
# Message cache timeout in seconds, it's not recommended to modify
|
||||||
|
msgCacheTimeout: 86400
|
||||||
|
|
||||||
|
# Whether to enable read receipts for group chat
|
||||||
|
groupMessageHasReadReceiptEnable: true
|
||||||
|
|
||||||
|
# Whether to enable read receipts for single chat
|
||||||
|
singleMessageHasReadReceiptEnable: true
|
||||||
|
|
||||||
|
# MongoDB offline message retention period in days
|
||||||
|
retainChatRecords: 365
|
||||||
|
|
||||||
|
# Schedule to clear expired messages(older than retainChatRecords days) in MongoDB every Wednesday at 2am
|
||||||
|
# This deletion is just for cleaning up disk usage according to previous configuration retainChatRecords, no notification will be sent
|
||||||
|
chatRecordsClearTime: "0 2 * * 3"
|
||||||
|
|
||||||
|
# Schedule to auto delete messages every day at 2am
|
||||||
|
# This deletion is for messages that have been retained for more than msg_destruct_time (seconds) in the conversation field
|
||||||
|
msgDestructTime: "0 2 * * *"
|
||||||
|
|
||||||
|
# Secret key
|
||||||
|
secret: openIM123
|
||||||
|
|
||||||
|
# Token policy
|
||||||
|
#
|
||||||
|
# Token expiration period in days
|
||||||
|
tokenPolicy:
|
||||||
|
expire: 90
|
||||||
|
|
||||||
|
# Message verification policy
|
||||||
|
#
|
||||||
|
# Whether to verify friendship when sending messages
|
||||||
|
messageVerify:
|
||||||
|
friendVerify: false
|
||||||
|
|
||||||
|
# iOS push notification configuration
|
||||||
|
#
|
||||||
|
# iOS push notification sound
|
||||||
|
# Whether to count badge
|
||||||
|
# Whether it's production environment
|
||||||
|
iosPush:
|
||||||
|
pushSound: "xxx"
|
||||||
|
badgeCount: true
|
||||||
|
production: false
|
||||||
|
|
||||||
|
###################### Third-party service configuration ######################
|
||||||
|
# Callback configuration
|
||||||
|
#
|
||||||
|
# Callback URL
|
||||||
|
# Whether to enable this callback event
|
||||||
|
# Timeout in seconds
|
||||||
|
# Whether to continue execution if callback fails
|
||||||
|
callback:
|
||||||
|
url: ""
|
||||||
|
beforeSendSingleMsg:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeUpdateUserInfoEx:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
afterUpdateUserInfoEx:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
afterSendSingleMsg:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeSendGroupMsg:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
afterSendGroupMsg:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
msgModify:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
userOnline:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
userOffline:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
userKickOff:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
onlinePush:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
superGroupOnlinePush:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeAddFriend:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeUpdateUserInfo:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeCreateGroup:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
afterCreateGroup:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeMemberJoinGroup:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeSetGroupMemberInfo:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
afterSetGroupMemberInfo:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
setMessageReactionExtensions:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
quitGroup:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
killGroupMember:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
dismissGroup:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
joinGroup:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
groupMsgRead:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
singleMsgRead:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
updateUserInfo:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeUserRegister:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
afterUserRegister:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
transferGroupOwner:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeSetFriendRemark:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
afterSetFriendRemark:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
afterGroupMsgRead:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
afterGroupMsgRevoke:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
afterJoinGroup:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
beforeInviteUserToGroup:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
joinGroupAfter:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
setGroupInfoAfter:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
setGroupInfoBefore:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
revokeMsgAfter:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
addBlackBefore:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
addFriendAfter:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
addFriendAgreeBefore:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
deleteFriendAfter:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
importFriendsBefore:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
importFriendsAfter:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
removeBlackAfter:
|
||||||
|
enable: false
|
||||||
|
timeout: 5
|
||||||
|
failedContinue: true
|
||||||
|
###################### Prometheus ######################
|
||||||
|
# Prometheus configuration for various services
|
||||||
|
# The number of Prometheus ports per service needs to correspond to rpcPort
|
||||||
|
# The number of ports needs to be consistent with msg_transfer_service_num in script/path_info.sh
|
||||||
|
prometheus:
|
||||||
|
enable: false
|
||||||
|
grafanaUrl: 172.28.0.1:13000
|
||||||
|
apiPrometheusPort: [20100]
|
||||||
|
userPrometheusPort: [ 20110 ]
|
||||||
|
friendPrometheusPort: [ 20120 ]
|
||||||
|
messagePrometheusPort: [ 20130 ]
|
||||||
|
messageGatewayPrometheusPort: [ 20140 ]
|
||||||
|
groupPrometheusPort: [ 20150 ]
|
||||||
|
authPrometheusPort: [ 20160 ]
|
||||||
|
pushPrometheusPort: [ 20170 ]
|
||||||
|
conversationPrometheusPort: [ 20230 ]
|
||||||
|
rtcPrometheusPort: [ 21300 ]
|
||||||
|
thirdPrometheusPort: [ 21301 ]
|
||||||
|
messageTransferPrometheusPort: [ 21400, 21401, 21402, 21403 ] # List of ports
|
||||||
|
|||||||
16
config/templates/email.tmpl.template
Normal file
16
config/templates/email.tmpl.template
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{{ define "email.to.html" }}
|
||||||
|
{{ range .Alerts }}
|
||||||
|
<!-- Begin of OpenIM Alert -->
|
||||||
|
<div style="border:1px solid #ccc; padding:10px; margin-bottom:10px;">
|
||||||
|
<h3>OpenIM Alert</h3>
|
||||||
|
<p><strong>Alert Program:</strong> Prometheus Alert</p>
|
||||||
|
<p><strong>Severity Level:</strong> {{ .Labels.severity }}</p>
|
||||||
|
<p><strong>Alert Type:</strong> {{ .Labels.alertname }}</p>
|
||||||
|
<p><strong>Affected Host:</strong> {{ .Labels.instance }}</p>
|
||||||
|
<p><strong>Affected Service:</strong> {{ .Labels.job }}</p>
|
||||||
|
<p><strong>Alert Subject:</strong> {{ .Annotations.summary }}</p>
|
||||||
|
<p><strong>Trigger Time:</strong> {{ .StartsAt.Format "2006-01-02 15:04:05" }}</p>
|
||||||
|
</div>
|
||||||
|
<!-- End of OpenIM Alert -->
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
252
config/templates/env.template
Normal file
252
config/templates/env.template
Normal file
@@ -0,0 +1,252 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========= Basic Configuration ========
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# The user for authentication or system operations.
|
||||||
|
# Default: OPENIM_USER=root
|
||||||
|
USER=root
|
||||||
|
|
||||||
|
# Password associated with the specified user for authentication.
|
||||||
|
# Default: PASSWORD=openIM123
|
||||||
|
PASSWORD=openIM123
|
||||||
|
|
||||||
|
# Base URL for the application programming interface (API).
|
||||||
|
# Default: API_URL=http://172.28.0.1:10002
|
||||||
|
API_URL=http://14.155.64.202:10002
|
||||||
|
|
||||||
|
# Directory path for storing data files or related information.
|
||||||
|
# Default: DATA_DIR=./
|
||||||
|
DATA_DIR=/data/workspaces/open-im-server
|
||||||
|
|
||||||
|
# Choose the appropriate image address, the default is GITHUB image,
|
||||||
|
# you can choose docker hub, for Chinese users can choose Ali Cloud
|
||||||
|
# export IMAGE_REGISTRY="ghcr.io/openimsdk"
|
||||||
|
# export IMAGE_REGISTRY="openim"
|
||||||
|
# export IMAGE_REGISTRY="registry.cn-hangzhou.aliyuncs.com/openimsdk"
|
||||||
|
IMAGE_REGISTRY=ghcr.io/openimsdk
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========= Network Configuration ======
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Subnet for the Docker network.
|
||||||
|
# Default: DOCKER_BRIDGE_SUBNET=172.28.0.0/16
|
||||||
|
DOCKER_BRIDGE_SUBNET=172.28.0.0/16
|
||||||
|
|
||||||
|
# Gateway for the Docker network.
|
||||||
|
# Default: DOCKER_BRIDGE_GATEWAY=172.28.0.1
|
||||||
|
DOCKER_BRIDGE_GATEWAY=172.28.0.1
|
||||||
|
|
||||||
|
MONGO_NETWORK_ADDRESS=172.28.0.2
|
||||||
|
REDIS_NETWORK_ADDRESS=172.28.0.3
|
||||||
|
KAFKA_NETWORK_ADDRESS=172.28.0.4
|
||||||
|
ZOOKEEPER_NETWORK_ADDRESS=172.28.0.5
|
||||||
|
MINIO_NETWORK_ADDRESS=172.28.0.6
|
||||||
|
OPENIM_WEB_NETWORK_ADDRESS=172.28.0.7
|
||||||
|
OPENIM_SERVER_NETWORK_ADDRESS=172.28.0.8
|
||||||
|
OPENIM_CHAT_NETWORK_ADDRESS=172.28.0.9
|
||||||
|
PROMETHEUS_NETWORK_ADDRESS=172.28.0.10
|
||||||
|
GRAFANA_NETWORK_ADDRESS=172.28.0.11
|
||||||
|
NODE_EXPORTER_NETWORK_ADDRESS=172.28.0.12
|
||||||
|
OPENIM_ADMIN_FRONT_NETWORK_ADDRESS=172.28.0.13
|
||||||
|
ALERT_MANAGER_NETWORK_ADDRESS=172.28.0.14
|
||||||
|
|
||||||
|
# ===============================================
|
||||||
|
# = Component Extension Configuration =
|
||||||
|
# ===============================================
|
||||||
|
|
||||||
|
# ============ Component Extension Configuration ==========
|
||||||
|
# ----- ZooKeeper Configuration -----
|
||||||
|
# Address or hostname for the ZooKeeper service.
|
||||||
|
# Default: ZOOKEEPER_ADDRESS=172.28.0.1
|
||||||
|
ZOOKEEPER_ADDRESS=172.28.0.5
|
||||||
|
|
||||||
|
# Port for ZooKeeper service.
|
||||||
|
# Default: ZOOKEEPER_PORT=12181
|
||||||
|
ZOOKEEPER_PORT=12181
|
||||||
|
|
||||||
|
# ----- MongoDB Configuration -----
|
||||||
|
# Address or hostname for the MongoDB service.
|
||||||
|
# Default: MONGO_ADDRESS=172.28.0.1
|
||||||
|
MONGO_ADDRESS=172.28.0.2
|
||||||
|
|
||||||
|
# Port on which MongoDB service is running.
|
||||||
|
# Default: MONGO_PORT=37017
|
||||||
|
# MONGO_PORT=37017
|
||||||
|
|
||||||
|
# Username to authenticate with the MongoDB service.
|
||||||
|
# Default: MONGO_USERNAME=root
|
||||||
|
# MONGO_USERNAME=root
|
||||||
|
|
||||||
|
# Password to authenticate with the MongoDB service.
|
||||||
|
# Default: MONGO_PASSWORD=openIM123
|
||||||
|
MONGO_PASSWORD=openIM123
|
||||||
|
|
||||||
|
# Name of the database in MongoDB to be used.
|
||||||
|
# Default: MONGO_DATABASE=openim_v3
|
||||||
|
MONGO_DATABASE=openim_v3
|
||||||
|
|
||||||
|
# ----- Redis Configuration -----
|
||||||
|
# Address or hostname for the Redis service.
|
||||||
|
# Default: REDIS_ADDRESS=172.28.0.1
|
||||||
|
REDIS_ADDRESS=172.28.0.3
|
||||||
|
|
||||||
|
# Port on which Redis in-memory data structure store is running.
|
||||||
|
# Default: REDIS_PORT=16379
|
||||||
|
REDIS_PORT=16379
|
||||||
|
|
||||||
|
# Password to authenticate with the Redis service.
|
||||||
|
# Default: REDIS_PASSWORD=openIM123
|
||||||
|
REDIS_PASSWORD=openIM123
|
||||||
|
|
||||||
|
# ----- Kafka Configuration -----
|
||||||
|
# Address or hostname for the Kafka service.
|
||||||
|
# Default: KAFKA_ADDRESS=172.28.0.1
|
||||||
|
KAFKA_ADDRESS=172.28.0.4
|
||||||
|
|
||||||
|
# Kakfa username to authenticate with the Kafka service.
|
||||||
|
# KAFKA_USERNAME=''
|
||||||
|
|
||||||
|
# Port on which Kafka distributed streaming platform is running.
|
||||||
|
# Default: KAFKA_PORT=19092
|
||||||
|
KAFKA_PORT=19094
|
||||||
|
|
||||||
|
# Topic in Kafka for storing the latest messages in Redis.
|
||||||
|
# Default: KAFKA_LATESTMSG_REDIS_TOPIC=latestMsgToRedis
|
||||||
|
KAFKA_LATESTMSG_REDIS_TOPIC=latestMsgToRedis
|
||||||
|
|
||||||
|
# Topic in Kafka for pushing messages (e.g. notifications or updates).
|
||||||
|
# Default: KAFKA_MSG_PUSH_TOPIC=msgToPush
|
||||||
|
KAFKA_MSG_PUSH_TOPIC=msgToPush
|
||||||
|
|
||||||
|
# Topic in Kafka for storing offline messages in MongoDB.
|
||||||
|
# Default: KAFKA_OFFLINEMSG_MONGO_TOPIC=offlineMsgToMongoMysql
|
||||||
|
KAFKA_OFFLINEMSG_MONGO_TOPIC=offlineMsgToMongoMysql
|
||||||
|
|
||||||
|
# ----- MinIO Configuration ----
|
||||||
|
# Address or hostname for the MinIO object storage service.
|
||||||
|
# Default: MINIO_ADDRESS=172.28.0.1
|
||||||
|
MINIO_ADDRESS=172.28.0.6
|
||||||
|
|
||||||
|
# Port on which MinIO object storage service is running.
|
||||||
|
# Default: MINIO_PORT=10005
|
||||||
|
MINIO_PORT=10005
|
||||||
|
|
||||||
|
# Access key to authenticate with the MinIO service.
|
||||||
|
# Default: MINIO_ACCESS_KEY=root
|
||||||
|
# MINIO_ACCESS_KEY=root
|
||||||
|
|
||||||
|
# Secret key corresponding to the access key for MinIO authentication.
|
||||||
|
# Default: MINIO_SECRET_KEY=openIM123
|
||||||
|
MINIO_SECRET_KEY=openIM123
|
||||||
|
|
||||||
|
# ----- Prometheus Configuration -----
|
||||||
|
# Address or hostname for the Prometheus service.
|
||||||
|
# Default: PROMETHEUS_ADDRESS=172.28.0.1
|
||||||
|
PROMETHEUS_ADDRESS=172.28.0.10
|
||||||
|
|
||||||
|
# Port on which Prometheus service is running.
|
||||||
|
# Default: PROMETHEUS_PORT=19090
|
||||||
|
PROMETHEUS_PORT=19090
|
||||||
|
|
||||||
|
# ----- Grafana Configuration -----
|
||||||
|
# Address or hostname for the Grafana service.
|
||||||
|
# Default: GRAFANA_ADDRESS=172.28.0.1
|
||||||
|
GRAFANA_ADDRESS=172.28.0.11
|
||||||
|
|
||||||
|
# Port on which Grafana service is running.
|
||||||
|
# Default: GRAFANA_PORT=13000
|
||||||
|
GRAFANA_PORT=13000
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ============ OpenIM Web ===============
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Port on which OpenIM web service is running.
|
||||||
|
# Default: OPENIM_WEB_PORT=11001
|
||||||
|
OPENIM_WEB_PORT=11001
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========= OpenIM Server ==============
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM server.
|
||||||
|
# Default: OPENIM_SERVER_ADDRESS=172.28.0.1
|
||||||
|
OPENIM_SERVER_ADDRESS=172.28.0.8
|
||||||
|
|
||||||
|
# Port for the OpenIM WebSockets.
|
||||||
|
# Default: OPENIM_WS_PORT=10001
|
||||||
|
OPENIM_WS_PORT=10001
|
||||||
|
|
||||||
|
# Port for the OpenIM API.
|
||||||
|
# Default: API_OPENIM_PORT=10002
|
||||||
|
API_OPENIM_PORT=10002
|
||||||
|
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========== OpenIM Chat ===============
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Branch name for OpenIM chat.
|
||||||
|
# Default: CHAT_IMAGE_VERSION=main
|
||||||
|
# https://github.com/openimsdk/open-im-server/blob/main/docs/contrib/version.md
|
||||||
|
CHAT_IMAGE_VERSION=main
|
||||||
|
|
||||||
|
# Address or hostname for the OpenIM chat service.
|
||||||
|
# Default: OPENIM_CHAT_ADDRESS=172.28.0.1
|
||||||
|
OPENIM_CHAT_ADDRESS=172.28.0.9
|
||||||
|
|
||||||
|
# Port for the OpenIM chat API.
|
||||||
|
# Default: OPENIM_CHAT_API_PORT=10008
|
||||||
|
OPENIM_CHAT_API_PORT=10008
|
||||||
|
|
||||||
|
# Directory path for storing data files or related information for OpenIM chat.
|
||||||
|
# Default: OPENIM_CHAT_DATA_DIR=./openim-chat/main
|
||||||
|
OPENIM_CHAT_DATA_DIR=./openim-chat/main
|
||||||
|
|
||||||
|
|
||||||
|
# ======================================
|
||||||
|
# ========== OpenIM Admin ==============
|
||||||
|
# ======================================
|
||||||
|
|
||||||
|
# Branch name for OpenIM server.
|
||||||
|
# Default: SERVER_IMAGE_VERSION=main
|
||||||
|
SERVER_IMAGE_VERSION=main
|
||||||
|
|
||||||
|
# Port for the OpenIM admin API.
|
||||||
|
# Default: OPENIM_ADMIN_API_PORT=10009
|
||||||
|
OPENIM_ADMIN_API_PORT=10009
|
||||||
|
|
||||||
|
# Port for the node exporter.
|
||||||
|
# Default: NODE_EXPORTER_PORT=19100
|
||||||
|
NODE_EXPORTER_PORT=19100
|
||||||
|
|
||||||
|
# Port for the prometheus.
|
||||||
|
# Default: PROMETHEUS_PORT=19090
|
||||||
|
PROMETHEUS_PORT=19090
|
||||||
|
|
||||||
|
# Port for the grafana.
|
||||||
|
# Default: GRAFANA_PORT=13000
|
||||||
|
GRAFANA_PORT=13000
|
||||||
|
|
||||||
|
# Port for the admin front.
|
||||||
|
# Default: OPENIM_ADMIN_FRONT_PORT=11002
|
||||||
|
OPENIM_ADMIN_FRONT_PORT=11002
|
||||||
|
|
||||||
|
# Port for the alertmanager.
|
||||||
|
# Default: ALERT_MANAGER_PORT=19093
|
||||||
|
ALERT_MANAGER_PORT=19093
|
||||||
36
config/templates/instance-down-rules.yml.template
Normal file
36
config/templates/instance-down-rules.yml.template
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
groups:
|
||||||
|
- name: instance_down
|
||||||
|
rules:
|
||||||
|
- alert: InstanceDown
|
||||||
|
expr: up == 0
|
||||||
|
for: 1m
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
|
annotations:
|
||||||
|
summary: "Instance {{ $labels.instance }} down"
|
||||||
|
description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."
|
||||||
|
|
||||||
|
- name: database_insert_failure_alerts
|
||||||
|
rules:
|
||||||
|
- alert: DatabaseInsertFailed
|
||||||
|
expr: (increase(msg_insert_redis_failed_total[5m]) > 0) or (increase(msg_insert_mongo_failed_total[5m]) > 0)
|
||||||
|
for: 1m
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
|
annotations:
|
||||||
|
summary: "Increase in MsgInsertRedisFailedCounter or MsgInsertMongoFailedCounter detected"
|
||||||
|
description: "Either MsgInsertRedisFailedCounter or MsgInsertMongoFailedCounter has increased in the last 5 minutes, indicating failures in message insert operations to Redis or MongoDB,maybe the redis or mongodb is crash."
|
||||||
354
config/templates/notification.yaml.template
Normal file
354
config/templates/notification.yaml.template
Normal file
@@ -0,0 +1,354 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Determines if a message should be sent. If set to false, it triggers a silent sync without a message. If true, it requires triggering a conversation.
|
||||||
|
# For rpc notification, send twice: once as a message and once as a notification.
|
||||||
|
# The options field 'isNotification' indicates if it's a notification.
|
||||||
|
groupCreated:
|
||||||
|
isSendMsg: true
|
||||||
|
|
||||||
|
# Reliability level of the message sending.
|
||||||
|
# Set to 1 to send only when online, 2 for guaranteed delivery.
|
||||||
|
reliabilityLevel: 1
|
||||||
|
|
||||||
|
# This setting is effective only when 'isSendMsg' is true.
|
||||||
|
# It controls whether to count unread messages.
|
||||||
|
unreadCount: false
|
||||||
|
|
||||||
|
# Configuration for offline push notifications.
|
||||||
|
offlinePush:
|
||||||
|
# Enables or disables offline push notifications.
|
||||||
|
enable: false
|
||||||
|
|
||||||
|
# Title for the notification when a group is created.
|
||||||
|
title: "create group title"
|
||||||
|
|
||||||
|
# Description for the notification.
|
||||||
|
desc: "create group desc"
|
||||||
|
|
||||||
|
# Additional information for the notification.
|
||||||
|
ext: "create group ext"
|
||||||
|
|
||||||
|
# Content type is not added here.
|
||||||
|
# Content should use a JSON structure conforming to the protobuf format.
|
||||||
|
|
||||||
|
groupInfoSet:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "groupInfoSet title"
|
||||||
|
desc: "groupInfoSet desc"
|
||||||
|
ext: "groupInfoSet ext"
|
||||||
|
|
||||||
|
|
||||||
|
joinGroupApplication:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "joinGroupApplication title"
|
||||||
|
desc: "joinGroupApplication desc"
|
||||||
|
ext: "joinGroupApplication ext"
|
||||||
|
|
||||||
|
memberQuit:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "memberQuit title"
|
||||||
|
desc: "memberQuit desc"
|
||||||
|
ext: "memberQuit ext"
|
||||||
|
|
||||||
|
groupApplicationAccepted:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "groupApplicationAccepted title"
|
||||||
|
desc: "groupApplicationAccepted desc"
|
||||||
|
ext: "groupApplicationAccepted ext"
|
||||||
|
|
||||||
|
groupApplicationRejected:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: " title"
|
||||||
|
desc: " desc"
|
||||||
|
ext: " ext"
|
||||||
|
|
||||||
|
|
||||||
|
groupOwnerTransferred:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "groupOwnerTransferred title"
|
||||||
|
desc: "groupOwnerTransferred desc"
|
||||||
|
ext: "groupOwnerTransferred ext"
|
||||||
|
|
||||||
|
memberKicked:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "memberKicked title"
|
||||||
|
desc: "memberKicked desc"
|
||||||
|
ext: "memberKicked ext"
|
||||||
|
|
||||||
|
memberInvited:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "memberInvited title"
|
||||||
|
desc: "memberInvited desc"
|
||||||
|
ext: "memberInvited ext"
|
||||||
|
|
||||||
|
memberEnter:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "memberEnter title"
|
||||||
|
desc: "memberEnter desc"
|
||||||
|
ext: "memberEnter ext"
|
||||||
|
|
||||||
|
groupDismissed:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "groupDismissed title"
|
||||||
|
desc: "groupDismissed desc"
|
||||||
|
ext: "groupDismissed ext"
|
||||||
|
|
||||||
|
groupMuted:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "groupMuted title"
|
||||||
|
desc: "groupMuted desc"
|
||||||
|
ext: "groupMuted ext"
|
||||||
|
|
||||||
|
groupCancelMuted:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "groupCancelMuted title"
|
||||||
|
desc: "groupCancelMuted desc"
|
||||||
|
ext: "groupCancelMuted ext"
|
||||||
|
defaultTips:
|
||||||
|
tips: "group Cancel Muted"
|
||||||
|
|
||||||
|
|
||||||
|
groupMemberMuted:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "groupMemberMuted title"
|
||||||
|
desc: "groupMemberMuted desc"
|
||||||
|
ext: "groupMemberMuted ext"
|
||||||
|
|
||||||
|
groupMemberCancelMuted:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "groupMemberCancelMuted title"
|
||||||
|
desc: "groupMemberCancelMuted desc"
|
||||||
|
ext: "groupMemberCancelMuted ext"
|
||||||
|
|
||||||
|
groupMemberInfoSet:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "groupMemberInfoSet title"
|
||||||
|
desc: "groupMemberInfoSet desc"
|
||||||
|
ext: "groupMemberInfoSet ext"
|
||||||
|
|
||||||
|
groupInfoSetAnnouncement:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "groupInfoSetAnnouncement title"
|
||||||
|
desc: "groupInfoSetAnnouncement desc"
|
||||||
|
ext: "groupInfoSetAnnouncement ext"
|
||||||
|
|
||||||
|
|
||||||
|
groupInfoSetName:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "groupInfoSetName title"
|
||||||
|
desc: "groupInfoSetName desc"
|
||||||
|
ext: "groupInfoSetName ext"
|
||||||
|
|
||||||
|
|
||||||
|
#############################friend#################################
|
||||||
|
friendApplicationAdded:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "Somebody applies to add you as a friend"
|
||||||
|
desc: "Somebody applies to add you as a friend"
|
||||||
|
ext: "Somebody applies to add you as a friend"
|
||||||
|
|
||||||
|
friendApplicationApproved:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: true
|
||||||
|
title: "Someone applies to add your friend application"
|
||||||
|
desc: "Someone applies to add your friend application"
|
||||||
|
ext: "Someone applies to add your friend application"
|
||||||
|
|
||||||
|
friendApplicationRejected:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: true
|
||||||
|
title: "Someone rejected your friend application"
|
||||||
|
desc: "Someone rejected your friend application"
|
||||||
|
ext: "Someone rejected your friend application"
|
||||||
|
|
||||||
|
friendAdded:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: true
|
||||||
|
title: "We have become friends"
|
||||||
|
desc: "We have become friends"
|
||||||
|
ext: "We have become friends"
|
||||||
|
|
||||||
|
friendDeleted:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: true
|
||||||
|
title: "deleted a friend"
|
||||||
|
desc: "deleted a friend"
|
||||||
|
ext: "deleted a friend"
|
||||||
|
|
||||||
|
friendRemarkSet:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: true
|
||||||
|
title: "Your friend's profile has been changed"
|
||||||
|
desc: "Your friend's profile has been changed"
|
||||||
|
ext: "Your friend's profile has been changed"
|
||||||
|
|
||||||
|
blackAdded:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: true
|
||||||
|
title: "blocked a user"
|
||||||
|
desc: "blocked a user"
|
||||||
|
ext: "blocked a user"
|
||||||
|
|
||||||
|
blackDeleted:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: true
|
||||||
|
title: "Remove a blocked user"
|
||||||
|
desc: "Remove a blocked user"
|
||||||
|
ext: "Remove a blocked user"
|
||||||
|
|
||||||
|
friendInfoUpdated:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: true
|
||||||
|
title: "friend info updated"
|
||||||
|
desc: "friend info updated"
|
||||||
|
ext: "friend info updated"
|
||||||
|
|
||||||
|
#####################user#########################
|
||||||
|
userInfoUpdated:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: true
|
||||||
|
title: "Remove a blocked user"
|
||||||
|
desc: "Remove a blocked user"
|
||||||
|
ext: "Remove a blocked user"
|
||||||
|
|
||||||
|
userStatusChanged:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: false
|
||||||
|
title: "user status changed"
|
||||||
|
desc: "user status changed"
|
||||||
|
ext: "user status changed"
|
||||||
|
|
||||||
|
#####################conversation#########################
|
||||||
|
conversationChanged:
|
||||||
|
isSendMsg: false
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: true
|
||||||
|
title: "conversation changed"
|
||||||
|
desc: "conversation changed"
|
||||||
|
ext: "conversation changed"
|
||||||
|
|
||||||
|
conversationSetPrivate:
|
||||||
|
isSendMsg: true
|
||||||
|
reliabilityLevel: 1
|
||||||
|
unreadCount: false
|
||||||
|
offlinePush:
|
||||||
|
enable: true
|
||||||
|
title: "burn after reading"
|
||||||
|
desc: "burn after reading"
|
||||||
|
ext: "burn after reading"
|
||||||
172
config/templates/open-im-ng-example.conf
Normal file
172
config/templates/open-im-ng-example.conf
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
upstream im_msg_gateway{
|
||||||
|
server 127.0.0.1:10001; #IM Message server address Multiple can be specified according to the deployment
|
||||||
|
}
|
||||||
|
upstream im_api{
|
||||||
|
server 127.0.0.1:10002; #IM Group user api server address Multiple can be specified according to the deployment
|
||||||
|
}
|
||||||
|
upstream im_grafana{
|
||||||
|
server 127.0.0.1:10007; #IM Statistical server address The machine where docker-compose starts
|
||||||
|
}
|
||||||
|
upstream im_chat_api{
|
||||||
|
server 127.0.0.1:10008; #IM Business version login registration server address Multiple can be specified according to the deployment
|
||||||
|
}
|
||||||
|
upstream im_admin_api{
|
||||||
|
server 127.0.0.1:10009; #IM The admin address of the commercial version can specify multiple units according to the deployment situation
|
||||||
|
}
|
||||||
|
upstream im_open_rtc{
|
||||||
|
server 127.0.0.1:7880; #rtc Audio and video call server address Multiple devices can be specified according to the deployment
|
||||||
|
}
|
||||||
|
upstream minio_s3_2 {
|
||||||
|
least_conn;
|
||||||
|
server 127.0.0.1:10005;
|
||||||
|
}
|
||||||
|
|
||||||
|
upstream minio_console_2 {
|
||||||
|
least_conn;
|
||||||
|
server 127.0.0.1:9090;
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
listen 443;
|
||||||
|
server_name your-domain.com; #your-domain.com
|
||||||
|
|
||||||
|
ssl on;
|
||||||
|
ssl_certificate /etc/nginx/conf.d/ssl/your-domain.com.crt; #2 Certificate
|
||||||
|
ssl_certificate_key /etc/nginx/conf.d/ssl/your-domain.com.key; #3 Certificate
|
||||||
|
ssl_session_timeout 5m;
|
||||||
|
gzip on;
|
||||||
|
gzip_min_length 1k;
|
||||||
|
gzip_buffers 4 16k;
|
||||||
|
gzip_comp_level 2;
|
||||||
|
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/wasm;
|
||||||
|
gzip_vary off;
|
||||||
|
gzip_disable "MSIE [1-6]\.";
|
||||||
|
error_page 405 =200 $uri;
|
||||||
|
|
||||||
|
default_type application/wasm;
|
||||||
|
location /{ #web demo
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-Ip $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
|
proxy_set_header X-NginX-Proxy true;
|
||||||
|
root /data1/online/Pc-Web-Demo/build/; # web im static resource storage path
|
||||||
|
index index.html;
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
location /msg_gateway { #10001 ws
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
proxy_set_header X-real-ip $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
|
proxy_pass http://im_msg_gateway/;
|
||||||
|
}
|
||||||
|
location ^~/api/ { #10002 api
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
proxy_set_header X-real-ip $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
|
proxy_pass http://im_api/;
|
||||||
|
}
|
||||||
|
location ^~/grafana/ { #10007 prometheus
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
proxy_set_header X-real-ip $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
|
proxy_pass http://im_grafana/;
|
||||||
|
}
|
||||||
|
location ^~/chat/ { #10008 im_chat_api
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
proxy_set_header X-real-ip $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
|
proxy_pass http://im_chat_api/;
|
||||||
|
}
|
||||||
|
location ^~/complete_admin/ { #10009 admin
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
proxy_set_header X-real-ip $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
|
proxy_pass http://im_admin_api/;
|
||||||
|
}
|
||||||
|
location ^~/open_rtc/ { #7880 rtc
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
proxy_set_header X-real-ip $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $remote_addr;
|
||||||
|
proxy_pass http://im_open_rtc/;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name test-web.rentsoft.cn ; #1 web im end domain name
|
||||||
|
rewrite ^(.*)$ https://${server_name}$1 permanent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 443;
|
||||||
|
|
||||||
|
server_name your-domain.com; #your-domain.com
|
||||||
|
ssl on;
|
||||||
|
ssl_certificate /etc/nginx/conf.d/ssl/your-domain.com.crt; #Certificate
|
||||||
|
ssl_certificate_key /etc/nginx/conf.d/ssl/your-domain.com.key; #Certificate
|
||||||
|
gzip on;
|
||||||
|
gzip_min_length 1k;
|
||||||
|
gzip_buffers 4 16k;
|
||||||
|
gzip_comp_level 2;
|
||||||
|
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/wasm;
|
||||||
|
gzip_vary off;
|
||||||
|
gzip_disable "MSIE [1-6]\.";
|
||||||
|
# Allow special characters in headers
|
||||||
|
ignore_invalid_headers off;
|
||||||
|
# Allow any size file to be uploaded.
|
||||||
|
# Set to a value such as 1000m; to restrict file size to a specific value
|
||||||
|
client_max_body_size 0;
|
||||||
|
# Disable buffering
|
||||||
|
proxy_buffering off;
|
||||||
|
proxy_request_buffering off;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
|
||||||
|
proxy_connect_timeout 300;
|
||||||
|
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Connection "";
|
||||||
|
chunked_transfer_encoding off;
|
||||||
|
|
||||||
|
proxy_pass http://minio_s3_2; # This uses the upstream directive definition to load balance
|
||||||
|
}
|
||||||
|
|
||||||
|
location /minio/ui {
|
||||||
|
rewrite ^/minio/ui/(.*) /$1 break;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header X-NginX-Proxy true;
|
||||||
|
|
||||||
|
# This is necessary to pass the correct IP to be hashed
|
||||||
|
real_ip_header X-Real-IP;
|
||||||
|
|
||||||
|
proxy_connect_timeout 300;
|
||||||
|
|
||||||
|
# To support websockets in MinIO versions released after January 2023
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
|
||||||
|
chunked_transfer_encoding off;
|
||||||
|
|
||||||
|
proxy_pass http://minio_console_2; # This uses the upstream directive definition to load balance
|
||||||
|
}
|
||||||
|
}
|
||||||
1474
config/templates/prometheus-dashboard.yaml
Normal file
1474
config/templates/prometheus-dashboard.yaml
Normal file
File diff suppressed because it is too large
Load Diff
99
config/templates/prometheus.yml.template
Normal file
99
config/templates/prometheus.yml.template
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
# Copyright © 2023 OpenIM. All rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# my global config
|
||||||
|
global:
|
||||||
|
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
|
||||||
|
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
|
||||||
|
# scrape_timeout is set to the global default (10s).
|
||||||
|
|
||||||
|
# Alertmanager configuration
|
||||||
|
alerting:
|
||||||
|
alertmanagers:
|
||||||
|
- static_configs:
|
||||||
|
- targets: ['172.28.0.1:19093']
|
||||||
|
|
||||||
|
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
|
||||||
|
rule_files:
|
||||||
|
- "instance-down-rules.yml"
|
||||||
|
# - "first_rules.yml"
|
||||||
|
# - "second_rules.yml"
|
||||||
|
|
||||||
|
# A scrape configuration containing exactly one endpoint to scrape:
|
||||||
|
# Here it's Prometheus itself.
|
||||||
|
scrape_configs:
|
||||||
|
# The job name is added as a label "job='job_name'"" to any timeseries scraped from this config.
|
||||||
|
# Monitored information captured by prometheus
|
||||||
|
- job_name: 'node-exporter'
|
||||||
|
static_configs:
|
||||||
|
- targets: [ '172.28.0.1:19100' ]
|
||||||
|
labels:
|
||||||
|
namespace: 'default'
|
||||||
|
|
||||||
|
# prometheus fetches application services
|
||||||
|
- job_name: 'openimserver-openim-api'
|
||||||
|
static_configs:
|
||||||
|
- targets: [ '172.28.0.1:20100' ]
|
||||||
|
labels:
|
||||||
|
namespace: 'default'
|
||||||
|
- job_name: 'openimserver-openim-msggateway'
|
||||||
|
static_configs:
|
||||||
|
- targets: [ '172.28.0.1:20140' ]
|
||||||
|
labels:
|
||||||
|
namespace: 'default'
|
||||||
|
- job_name: 'openimserver-openim-msgtransfer'
|
||||||
|
static_configs:
|
||||||
|
- targets: [ 172.28.0.1:21400, 172.28.0.1:21401, 172.28.0.1:21402, 172.28.0.1:21403 ]
|
||||||
|
labels:
|
||||||
|
namespace: 'default'
|
||||||
|
- job_name: 'openimserver-openim-push'
|
||||||
|
static_configs:
|
||||||
|
- targets: [ '172.28.0.1:20170' ]
|
||||||
|
labels:
|
||||||
|
namespace: 'default'
|
||||||
|
- job_name: 'openimserver-openim-rpc-auth'
|
||||||
|
static_configs:
|
||||||
|
- targets: [ '172.28.0.1:20160' ]
|
||||||
|
labels:
|
||||||
|
namespace: 'default'
|
||||||
|
- job_name: 'openimserver-openim-rpc-conversation'
|
||||||
|
static_configs:
|
||||||
|
- targets: [ '172.28.0.1:20230' ]
|
||||||
|
labels:
|
||||||
|
namespace: 'default'
|
||||||
|
- job_name: 'openimserver-openim-rpc-friend'
|
||||||
|
static_configs:
|
||||||
|
- targets: [ '172.28.0.1:20120' ]
|
||||||
|
labels:
|
||||||
|
namespace: 'default'
|
||||||
|
- job_name: 'openimserver-openim-rpc-group'
|
||||||
|
static_configs:
|
||||||
|
- targets: [ '172.28.0.1:20150' ]
|
||||||
|
labels:
|
||||||
|
namespace: 'default'
|
||||||
|
- job_name: 'openimserver-openim-rpc-msg'
|
||||||
|
static_configs:
|
||||||
|
- targets: [ '172.28.0.1:20130' ]
|
||||||
|
labels:
|
||||||
|
namespace: 'default'
|
||||||
|
- job_name: 'openimserver-openim-rpc-third'
|
||||||
|
static_configs:
|
||||||
|
- targets: [ '172.28.0.1:21301' ]
|
||||||
|
labels:
|
||||||
|
namespace: 'default'
|
||||||
|
- job_name: 'openimserver-openim-rpc-user'
|
||||||
|
static_configs:
|
||||||
|
- targets: [ '172.28.0.1:20110' ]
|
||||||
|
labels:
|
||||||
|
namespace: 'default'
|
||||||
@@ -165,7 +165,7 @@ export MINIO_ENDPOINT="http://im-minio:9000"
|
|||||||
export MINIO_SIGN_ENDPOINT="https://openim.server.com/im-minio-api"
|
export MINIO_SIGN_ENDPOINT="https://openim.server.com/im-minio-api"
|
||||||
|
|
||||||
mkdir ./charts/generated-configs
|
mkdir ./charts/generated-configs
|
||||||
../scripts/genconfig.sh ../scripts/install/environment.sh ./templates/config.yaml > ./charts/generated-configs/config.yaml
|
../scripts/genconfig.sh ../scripts/install/environment.sh ./templates/openim.yaml > ./charts/generated-configs/config.yaml
|
||||||
cp ../config/notification.yaml ./charts/generated-configs/notification.yaml
|
cp ../config/notification.yaml ./charts/generated-configs/notification.yaml
|
||||||
../scripts/genconfig.sh ../scripts/install/environment.sh ./templates/helm-image.yaml > ./charts/generated-configs/helm-image.yaml
|
../scripts/genconfig.sh ../scripts/install/environment.sh ./templates/helm-image.yaml > ./charts/generated-configs/helm-image.yaml
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# TODO: This config file is the template file
|
# TODO: This config file is the template file
|
||||||
# --| source: deployments/templates/config.yaml
|
# --| source: deployments/templates/openim.yaml
|
||||||
# --| env: scripts/install/environment
|
# --| env: scripts/install/environment
|
||||||
# --| target: config/config.yaml
|
# --| target: config/config.yaml
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
@@ -31,7 +31,7 @@ docs/guide/en-US/cmd/openim/openim-rpc-user_list.md
|
|||||||
docs/guide/en-US/cmd/openim/openim-rpc-user_update.md
|
docs/guide/en-US/cmd/openim/openim-rpc-user_update.md
|
||||||
docs/guide/en-US/cmd/openim/openim_validate.md
|
docs/guide/en-US/cmd/openim/openim_validate.md
|
||||||
docs/guide/en-US/cmd/openim/openim_version.md
|
docs/guide/en-US/cmd/openim/openim_version.md
|
||||||
docs/guide/en-US/yaml/openim/config.yaml
|
docs/guide/en-US/yaml/openim/openim.yaml
|
||||||
docs/guide/en-US/yaml/openim/openim_color.yaml
|
docs/guide/en-US/yaml/openim/openim_color.yaml
|
||||||
docs/guide/en-US/yaml/openim/openim_completion.yaml
|
docs/guide/en-US/yaml/openim/openim_completion.yaml
|
||||||
docs/guide/en-US/yaml/openim/openim_info.yaml
|
docs/guide/en-US/yaml/openim/openim_info.yaml
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ While the first two methods will be our main focus, it's worth noting that the t
|
|||||||
|
|
||||||
### 1.2. <a name='SourceCodeDeployment'></a>Source Code Deployment
|
### 1.2. <a name='SourceCodeDeployment'></a>Source Code Deployment
|
||||||
|
|
||||||
In the source code deployment method, the configuration generation process involves executing `make init`, which fundamentally runs the script `./scripts/init-config.sh`. This script utilizes variables defined in the [`environment.sh`](https://github.com/openimsdk/open-im-server/blob/main/scripts/install/environment.sh) script to render the [`config.yaml`](https://github.com/openimsdk/open-im-server/blob/main/deployments/templates/config.yaml) template file, subsequently generating the [`config.yaml`](https://github.com/openimsdk/open-im-server/blob/main/config/config.yaml) configuration file.
|
In the source code deployment method, the configuration generation process involves executing `make init`, which fundamentally runs the script `./scripts/init-config.sh`. This script utilizes variables defined in the [`environment.sh`](https://github.com/openimsdk/open-im-server/blob/main/scripts/install/environment.sh) script to render the [`openim.yaml`](https://github.com/openimsdk/open-im-server/blob/main/deployments/templates/openim.yaml) template file, subsequently generating the [`config.yaml`](https://github.com/openimsdk/open-im-server/blob/main/config/config.yaml) configuration file.
|
||||||
|
|
||||||
### 1.3. <a name='DockerComposeDeployment'></a>Docker Compose Deployment
|
### 1.3. <a name='DockerComposeDeployment'></a>Docker Compose Deployment
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,63 @@ Homebrew is an essential package manager for macOS. Install it using:
|
|||||||
git config --global user.email "your.email@example.com"
|
git config --global user.email "your.email@example.com"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
### Forking and Cloning the Repository
|
||||||
|
|
||||||
|
To optimize and add logic to your instructions, particularly regarding deploying on a Mac, you can modify them as follows:
|
||||||
|
|
||||||
|
1. **Fork the OpenIM Repository**: Fork the OpenIM repository on GitHub to your account.
|
||||||
|
|
||||||
|
2. **Clone Your Fork to Your Local Machine**:
|
||||||
|
Open your terminal and execute the following commands:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Clone the repository
|
||||||
|
git clone https://github.com/<your-username>/open-im-server.git
|
||||||
|
|
||||||
|
# Set Docker bridging network mode for Mac
|
||||||
|
export DOCKER_BRIDGE_SUBNET=127.0.0.0/16
|
||||||
|
|
||||||
|
# Set OpenIM IP
|
||||||
|
export OPENIM_IP=<your-ip>
|
||||||
|
|
||||||
|
# Initialize configuration
|
||||||
|
make init
|
||||||
|
|
||||||
|
# Start components using Docker
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# Start OpenIM Server
|
||||||
|
make start
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Additional Steps for Mac Deployment**:
|
||||||
|
If you are deploying on a Mac and wish to use the chat feature, you need to modify the `docker-compose` file. Specifically, you'll need to uncomment the sections related to `openim-chat` and `mysql`.
|
||||||
|
|
||||||
|
Here's how to do it:
|
||||||
|
|
||||||
|
- Open the `docker-compose.yml` file in a text editor.
|
||||||
|
- Find the sections for `openim-chat` and `mysql`.
|
||||||
|
- Remove the comment marks (`#`) at the beginning of the lines in these sections to enable them.
|
||||||
|
- Save the file after making these changes.
|
||||||
|
|
||||||
|
4. **Update and Restart Services**:
|
||||||
|
After modifying the `docker-compose` file, you need to update and restart the services to apply these changes. Run the following command in your terminal:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Update and restart services
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# Check openim-chat start
|
||||||
|
docker compose logs openim-chat
|
||||||
|
```
|
||||||
|
|
||||||
|
This command will re-read the `docker-compose.yml` file, apply the new configuration, and restart the necessary containers.
|
||||||
|
|
||||||
|
Remember, replacing `<your-username>` and `<your-ip>` with your actual GitHub username and desired IP address for OpenIM is crucial. These steps should streamline the setup process, particularly for Mac users wishing to use the chat feature.
|
||||||
|
|
||||||
|
>>>>>>> origin/main
|
||||||
### Setting Up the Devcontainer
|
### Setting Up the Devcontainer
|
||||||
|
|
||||||
`Devcontainers` provide a Docker-based isolated development environment.
|
`Devcontainers` provide a Docker-based isolated development environment.
|
||||||
@@ -185,9 +242,12 @@ make start
|
|||||||
To check, ensure the following four processes start successfully:
|
To check, ensure the following four processes start successfully:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make check
|
➜ chat git:(main) ✗ ps -ef | grep chat
|
||||||
|
# [Output showing four running chat processes]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Access the web interface: http://ip:11001
|
||||||
|
|
||||||
### Docker Deployment
|
### Docker Deployment
|
||||||
|
|
||||||
Refer to https://github.com/openimsdk/openim-docker for Docker deployment instructions, which can be followed similarly on Linux.
|
Refer to https://github.com/openimsdk/openim-docker for Docker deployment instructions, which can be followed similarly on Linux.
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
|
|||||||
source "${OPENIM_ROOT}/scripts/lib/init.sh"
|
source "${OPENIM_ROOT}/scripts/lib/init.sh"
|
||||||
|
|
||||||
if [ $# -ne 2 ];then
|
if [ $# -ne 2 ];then
|
||||||
openim::log::error "Usage: scripts/genconfig.sh scripts/environment.sh configs/config.yaml"
|
openim::log::error "Usage: scripts/genconfig.sh scripts/environment.sh configs/openim-api.yaml"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ readonly ENV_FILE=${ENV_FILE:-"${OPENIM_ROOT}/scripts/install/environment.sh"}
|
|||||||
# Templates for configuration files
|
# Templates for configuration files
|
||||||
declare -A TEMPLATES=(
|
declare -A TEMPLATES=(
|
||||||
["${OPENIM_ROOT}/deployments/templates/env-template.yaml"]="${OPENIM_ROOT}/.env"
|
["${OPENIM_ROOT}/deployments/templates/env-template.yaml"]="${OPENIM_ROOT}/.env"
|
||||||
["${OPENIM_ROOT}/deployments/templates/config.yaml"]="${OPENIM_ROOT}/config/openim.yaml"
|
["${OPENIM_ROOT}/deployments/templates/openim.yaml"]="${OPENIM_ROOT}/config/config.yaml"
|
||||||
["${OPENIM_ROOT}/deployments/templates/prometheus.yml"]="${OPENIM_ROOT}/config/prometheus.yml"
|
["${OPENIM_ROOT}/deployments/templates/prometheus.yml"]="${OPENIM_ROOT}/config/prometheus.yml"
|
||||||
["${OPENIM_ROOT}/deployments/templates/alertmanager.yml"]="${OPENIM_ROOT}/config/alertmanager.yml"
|
["${OPENIM_ROOT}/deployments/templates/alertmanager.yml"]="${OPENIM_ROOT}/config/alertmanager.yml"
|
||||||
)
|
)
|
||||||
@@ -39,7 +39,7 @@ declare -A TEMPLATES=(
|
|||||||
# Templates for example files
|
# Templates for example files
|
||||||
declare -A EXAMPLES=(
|
declare -A EXAMPLES=(
|
||||||
["${OPENIM_ROOT}/deployments/templates/env-template.yaml"]="${OPENIM_ROOT}/config/templates/env.template"
|
["${OPENIM_ROOT}/deployments/templates/env-template.yaml"]="${OPENIM_ROOT}/config/templates/env.template"
|
||||||
["${OPENIM_ROOT}/deployments/templates/config.yaml"]="${OPENIM_ROOT}/config/templates/openim.yaml.template"
|
["${OPENIM_ROOT}/deployments/templates/openim.yaml"]="${OPENIM_ROOT}/config/templates/config.yaml.template"
|
||||||
["${OPENIM_ROOT}/deployments/templates/prometheus.yml"]="${OPENIM_ROOT}/config/templates/prometheus.yml.template"
|
["${OPENIM_ROOT}/deployments/templates/prometheus.yml"]="${OPENIM_ROOT}/config/templates/prometheus.yml.template"
|
||||||
["${OPENIM_ROOT}/deployments/templates/alertmanager.yml"]="${OPENIM_ROOT}/config/templates/alertmanager.yml.template"
|
["${OPENIM_ROOT}/deployments/templates/alertmanager.yml"]="${OPENIM_ROOT}/config/templates/alertmanager.yml.template"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ function openim::install::install_openim() {
|
|||||||
openim::log::info "check openim dependency"
|
openim::log::info "check openim dependency"
|
||||||
openim::common::sudo "cp -r ${OPENIM_ROOT}/config/* ${OPENIM_CONFIG_DIR}/"
|
openim::common::sudo "cp -r ${OPENIM_ROOT}/config/* ${OPENIM_CONFIG_DIR}/"
|
||||||
|
|
||||||
${OPENIM_ROOT}/scripts/genconfig.sh ${ENV_FILE} ${OPENIM_ROOT}/deployments/templates/config.yaml > ${OPENIM_CONFIG_DIR}/config.yaml
|
${OPENIM_ROOT}/scripts/genconfig.sh ${ENV_FILE} ${OPENIM_ROOT}/deployments/templates/openim.yaml > ${OPENIM_CONFIG_DIR}/config.yaml
|
||||||
${OPENIM_ROOT}/scripts/genconfig.sh ${ENV_FILE} ${OPENIM_ROOT}/deployments/templates/prometheus.yml > ${OPENIM_CONFIG_DIR}/prometheus.yml
|
${OPENIM_ROOT}/scripts/genconfig.sh ${ENV_FILE} ${OPENIM_ROOT}/deployments/templates/prometheus.yml > ${OPENIM_CONFIG_DIR}/prometheus.yml
|
||||||
|
|
||||||
openim::util::check_ports ${OPENIM_DEPENDENCY_PORT_LISTARIES[@]}
|
openim::util::check_ports ${OPENIM_DEPENDENCY_PORT_LISTARIES[@]}
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ function openim::rpc::start() {
|
|||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
sleep 5
|
sleep 1
|
||||||
|
|
||||||
openim::util::check_ports ${OPENIM_RPC_PORT_TARGETS[@]}
|
openim::util::check_ports ${OPENIM_RPC_PORT_TARGETS[@]}
|
||||||
# openim::util::check_ports ${OPENIM_RPC_PROM_PORT_TARGETS[@]}
|
# openim::util::check_ports ${OPENIM_RPC_PROM_PORT_TARGETS[@]}
|
||||||
|
|||||||
@@ -104,7 +104,12 @@ function openim::tools::start_service() {
|
|||||||
cmd="${cmd} --prometheus_port ${prometheus_port}"
|
cmd="${cmd} --prometheus_port ${prometheus_port}"
|
||||||
fi
|
fi
|
||||||
openim::log::status "Starting ${binary_name}..."
|
openim::log::status "Starting ${binary_name}..."
|
||||||
|
# Later, after discarding Docker, the Docker keyword is unreliable, and Kubepods is used
|
||||||
|
if grep -qE 'docker|kubepods' /proc/1/cgroup || [ -f /.dockerenv ]; then
|
||||||
|
${cmd} >> "${LOG_FILE}" 2>&1
|
||||||
|
else
|
||||||
${cmd} | tee -a "${LOG_FILE}"
|
${cmd} | tee -a "${LOG_FILE}"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function openim::tools::start() {
|
function openim::tools::start() {
|
||||||
|
|||||||
14
tools/imctl/.gitignore
vendored
14
tools/imctl/.gitignore
vendored
@@ -36,6 +36,20 @@ config/config.yaml
|
|||||||
.env
|
.env
|
||||||
./.env
|
./.env
|
||||||
|
|
||||||
|
### OpenIM deploy ###
|
||||||
|
deploy/openim_demo
|
||||||
|
deploy/openim-api
|
||||||
|
deploy/openim-rpc-msg_gateway
|
||||||
|
deploy/openim-msgtransfer
|
||||||
|
deploy/openim-push
|
||||||
|
deploy/openim_timer_task
|
||||||
|
deploy/openim-rpc-user
|
||||||
|
deploy/openim-rpc-friend
|
||||||
|
deploy/openim-rpc-group
|
||||||
|
deploy/openim-rpc-msg
|
||||||
|
deploy/openim-rpc-auth
|
||||||
|
deploy/Open-IM-SDK-Core
|
||||||
|
|
||||||
# files used by the developer
|
# files used by the developer
|
||||||
.idea.md
|
.idea.md
|
||||||
.todo.md
|
.todo.md
|
||||||
|
|||||||
Reference in New Issue
Block a user