From 87893dece254196f9b93ab73fe8fd4d3981b3faa Mon Sep 17 00:00:00 2001
From: "Xinwei Xiong (cubxxw)" <3293172751nss@gmail.com>
Date: Tue, 23 Jan 2024 17:19:52 +0800
Subject: [PATCH] feat: optimize config
Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com>
---
.gitignore | 1 +
config/templates/alertmanager.yml.template | 47 -
config/templates/config.yaml.template | 521 ------
config/templates/email.tmpl.template | 16 -
config/templates/env.template | 252 ---
.../instance-down-rules.yml.template | 36 -
config/templates/notification.yaml.template | 354 ----
config/templates/open-im-ng-example.conf | 172 --
config/templates/prometheus-dashboard.yaml | 1474 -----------------
config/templates/prometheus.yml.template | 99 --
deployments/Readme.md | 2 +-
.../templates/{openim.yaml => config.yaml} | 2 +-
docs/.generated_docs | 2 +-
docs/contrib/environment.md | 2 +-
scripts/genconfig.sh | 2 +-
scripts/init-config.sh | 4 +-
scripts/install/install.sh | 2 +-
scripts/install/openim-tools.sh | 7 +-
tools/imctl/.gitignore | 14 -
19 files changed, 10 insertions(+), 2999 deletions(-)
delete mode 100644 config/templates/alertmanager.yml.template
delete mode 100644 config/templates/email.tmpl.template
delete mode 100644 config/templates/env.template
delete mode 100644 config/templates/instance-down-rules.yml.template
delete mode 100644 config/templates/notification.yaml.template
delete mode 100644 config/templates/open-im-ng-example.conf
delete mode 100644 config/templates/prometheus-dashboard.yaml
delete mode 100644 config/templates/prometheus.yml.template
rename deployments/templates/{openim.yaml => config.yaml} (99%)
diff --git a/.gitignore b/.gitignore
index fb8d428d24..5142fe5513 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,6 +34,7 @@ deployments/charts/generated-configs/
### OpenIM Config ###
.env
config/config.yaml
+config/openim.yaml
config/alertmanager.yml
config/prometheus.yml
config/email.tmpl
diff --git a/config/templates/alertmanager.yml.template b/config/templates/alertmanager.yml.template
deleted file mode 100644
index a0daadfbdf..0000000000
--- a/config/templates/alertmanager.yml.template
+++ /dev/null
@@ -1,47 +0,0 @@
-# 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
diff --git a/config/templates/config.yaml.template b/config/templates/config.yaml.template
index f22e265898..e69de29bb2 100644
--- a/config/templates/config.yaml.template
+++ b/config/templates/config.yaml.template
@@ -1,521 +0,0 @@
-# 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
diff --git a/config/templates/email.tmpl.template b/config/templates/email.tmpl.template
deleted file mode 100644
index 0385601d00..0000000000
--- a/config/templates/email.tmpl.template
+++ /dev/null
@@ -1,16 +0,0 @@
-{{ define "email.to.html" }}
-{{ range .Alerts }}
-
-
-
OpenIM Alert
-
Alert Program: Prometheus Alert
-
Severity Level: {{ .Labels.severity }}
-
Alert Type: {{ .Labels.alertname }}
-
Affected Host: {{ .Labels.instance }}
-
Affected Service: {{ .Labels.job }}
-
Alert Subject: {{ .Annotations.summary }}
-
Trigger Time: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
-
-
-{{ end }}
-{{ end }}
diff --git a/config/templates/env.template b/config/templates/env.template
deleted file mode 100644
index cdd0bac6c3..0000000000
--- a/config/templates/env.template
+++ /dev/null
@@ -1,252 +0,0 @@
-# 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
diff --git a/config/templates/instance-down-rules.yml.template b/config/templates/instance-down-rules.yml.template
deleted file mode 100644
index 7a6e9fda9f..0000000000
--- a/config/templates/instance-down-rules.yml.template
+++ /dev/null
@@ -1,36 +0,0 @@
-# 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."
diff --git a/config/templates/notification.yaml.template b/config/templates/notification.yaml.template
deleted file mode 100644
index 665c212611..0000000000
--- a/config/templates/notification.yaml.template
+++ /dev/null
@@ -1,354 +0,0 @@
-# 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"
diff --git a/config/templates/open-im-ng-example.conf b/config/templates/open-im-ng-example.conf
deleted file mode 100644
index 10a2ecb52f..0000000000
--- a/config/templates/open-im-ng-example.conf
+++ /dev/null
@@ -1,172 +0,0 @@
-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
- }
-}
diff --git a/config/templates/prometheus-dashboard.yaml b/config/templates/prometheus-dashboard.yaml
deleted file mode 100644
index e1b569df3e..0000000000
--- a/config/templates/prometheus-dashboard.yaml
+++ /dev/null
@@ -1,1474 +0,0 @@
-# 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.
-
-{
- "annotations": {
- "list": [
- {
- "builtIn": 1,
- "datasource": {
- "type": "grafana",
- "uid": "-- Grafana --"
- },
- "enable": true,
- "hide": true,
- "iconColor": "rgba(0, 211, 255, 1)",
- "name": "Annotations & Alerts",
- "target": {
- "limit": 100,
- "matchAny": false,
- "tags": [],
- "type": "dashboard"
- },
- "type": "dashboard"
- }
- ]
- },
- "editable": true,
- "fiscalYearStartMonth": 0,
- "graphTooltip": 1,
- "id": 3,
- "iteration": 1699530082761,
- "links": [],
- "liveNow": false,
- "panels": [
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 0
- },
- "id": 16,
- "panels": [],
- "title": "openim自定义指标",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 2,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 0,
- "y": 1
- },
- "id": 12,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(online_user_num{job=~\"^($job)$\"})",
- "instant": false,
- "legendFormat": "online_user_num",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "在线人数",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 2,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 12,
- "y": 1
- },
- "id": 15,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(user_login_total{job=~\"^($job)$\"})",
- "instant": false,
- "legendFormat": "user_login_total",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "登入/注册人数",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 2,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 0,
- "y": 9
- },
- "id": 13,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(rate(single_chat_msg_process_failed_total{job=~\"^($job)$\"}[$interval])) by (job)",
- "instant": false,
- "legendFormat": "{{job}}-single_chat_msg_process_failed",
- "range": true,
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(rate(group_chat_msg_process_failed_total{job=~\"^($job)$\"}[$interval])) by (job)",
- "hide": false,
- "instant": false,
- "legendFormat": "{{job}}-group_chat_msg_process_failed",
- "range": true,
- "refId": "B"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(rate(msg_offline_push_failed_total{job=~\"^($job)$\"}[$interval])) by (job)",
- "hide": false,
- "instant": false,
- "legendFormat": "{{job}}-msg_offline_push_failed",
- "range": true,
- "refId": "C"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(rate(msg_insert_redis_failed_total{job=~\"^($job)$\"}[$interval])) by (job)",
- "hide": false,
- "instant": false,
- "legendFormat": "{{job}}-msg_insert_redis_failed",
- "range": true,
- "refId": "D"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(rate(msg_insert_mongo_failed_total{job=~\"^($job)$\"}[$interval])) by (job)",
- "hide": false,
- "instant": false,
- "legendFormat": "{{job}}-msg_insert_mongo_failed",
- "range": true,
- "refId": "E"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(rate(seq_set_failed_total{job=~\"^($job)$\"}[$interval])) by (job)",
- "hide": false,
- "instant": false,
- "legendFormat": "{{job}}-seq_set_failed",
- "range": true,
- "refId": "F"
- }
- ],
- "title": "failues/s",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 2,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 12,
- "y": 9
- },
- "id": 14,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(rate(single_chat_msg_process_success_total{job=~\"^($job)$\"}[$interval])) by (job)",
- "instant": false,
- "legendFormat": "{{job}}-single_chat_msg_process_success",
- "range": true,
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(rate(group_chat_msg_process_success_total{job=~\"^($job)$\"}[$interval])) by (job)",
- "hide": false,
- "instant": false,
- "legendFormat": "{{job}}-group_chat_msg_process_success",
- "range": true,
- "refId": "B"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(rate(msg_insert_redis_success_total{job=~\"^($job)$\"}[$interval])) by (job)",
- "hide": false,
- "instant": false,
- "legendFormat": "{{job}}-msg_insert_redis_success",
- "range": true,
- "refId": "C"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(rate(msg_insert_mongo_success_total{job=~\"^($job)$\"}[$interval])) by (job)",
- "hide": false,
- "instant": false,
- "legendFormat": "{{job}}-msg_insert_mongo_success",
- "range": true,
- "refId": "D"
- }
- ],
- "title": "messages/s",
- "type": "timeseries"
- },
- {
- "collapsed": false,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 17
- },
- "id": 11,
- "panels": [],
- "title": "Go Stats",
- "type": "row"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineStyle": {
- "fill": "solid"
- },
- "lineWidth": 2,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 0,
- "y": 18
- },
- "id": 10,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "avg(go_goroutines{job=~\"^($job)$\"}) by (job)",
- "instant": false,
- "legendFormat": "{{job}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "Goroutines",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineStyle": {
- "fill": "solid"
- },
- "lineWidth": 2,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 12,
- "y": 18
- },
- "id": 7,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "go_gc_duration_seconds{job=~\"^($job)$\",quantile=\"1\"}",
- "instant": false,
- "legendFormat": "{{pod}}: {{quantile}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "GC duration quantiles",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 2,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "bytes"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 0,
- "y": 26
- },
- "id": 9,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "avg(go_memstats_alloc_bytes{job=~\"^($job)$\"}) by (job)",
- "instant": false,
- "legendFormat": "{{job}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "process memory",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 2,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 12,
- "y": 26
- },
- "id": 8,
- "options": {
- "legend": {
- "calcs": [
- "mean",
- "lastNotNull",
- "max"
- ],
- "displayMode": "table",
- "placement": "bottom",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(process_open_fds{job=~\"^($job)$\"})by (job)",
- "instant": false,
- "legendFormat": "{{job}}",
- "range": true,
- "refId": "A"
- }
- ],
- "title": "open fds",
- "type": "timeseries"
- },
- {
- "collapsed": true,
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 34
- },
- "id": 6,
- "panels": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- }
- },
- "overrides": []
- },
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 0,
- "y": 3
- },
- "id": 2,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "10.1.5",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "disableTextWrap": false,
- "editorMode": "code",
- "exemplar": false,
- "expr": "sum(up{job=~\"^($job)$\"})by(job)",
- "fullMetaSearch": false,
- "includeNullMetadata": true,
- "instant": false,
- "legendFormat": "{{job}}-up",
- "range": true,
- "refId": "A",
- "useBackend": false
- }
- ],
- "title": "Up",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 0,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "none"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 8,
- "w": 12,
- "x": 12,
- "y": 3
- },
- "id": 3,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "single",
- "sort": "none"
- }
- },
- "pluginVersion": "10.1.5",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": true,
- "expr": "sum(rate(app_requests_total{job=~\"^($job)$\", code!~\"200\"}[$interval])) by (job)",
- "instant": false,
- "legendFormat": "{{job}}",
- "range": true,
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(rate(grpc_server_handled_total{job=~\"^($job)$\",grpc_code!~\"OK\"}[$interval])) by (job)",
- "hide": false,
- "instant": false,
- "legendFormat": "__auto",
- "range": true,
- "refId": "B"
- }
- ],
- "title": "failures/s",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineWidth": 1,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "req/s"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 7,
- "w": 12,
- "x": 0,
- "y": 11
- },
- "id": 4,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "10.1.5",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(rate(app_requests_total{job=~\"^($job)$\"}[$interval])) by (job)",
- "instant": false,
- "legendFormat": "{{job}}-http",
- "range": true,
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "sum(rate(grpc_server_started_total{job=~\"^($job)$\"}[$interval])) by (job)",
- "hide": false,
- "instant": false,
- "legendFormat": "{{job}}-grpc",
- "range": true,
- "refId": "B"
- }
- ],
- "title": "qps",
- "type": "timeseries"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "fieldConfig": {
- "defaults": {
- "color": {
- "mode": "palette-classic"
- },
- "custom": {
- "axisLabel": "",
- "axisPlacement": "auto",
- "barAlignment": 0,
- "drawStyle": "line",
- "fillOpacity": 10,
- "gradientMode": "none",
- "hideFrom": {
- "legend": false,
- "tooltip": false,
- "viz": false
- },
- "lineInterpolation": "linear",
- "lineStyle": {
- "fill": "solid"
- },
- "lineWidth": 2,
- "pointSize": 5,
- "scaleDistribution": {
- "type": "linear"
- },
- "showPoints": "never",
- "spanNulls": false,
- "stacking": {
- "group": "A",
- "mode": "none"
- },
- "thresholdsStyle": {
- "mode": "off"
- }
- },
- "mappings": [],
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green"
- },
- {
- "color": "red",
- "value": 80
- }
- ]
- },
- "unit": "s"
- },
- "overrides": []
- },
- "gridPos": {
- "h": 7,
- "w": 12,
- "x": 12,
- "y": 11
- },
- "id": 5,
- "maxDataPoints": 100,
- "options": {
- "legend": {
- "calcs": [],
- "displayMode": "table",
- "placement": "right",
- "showLegend": true
- },
- "tooltip": {
- "mode": "multi",
- "sort": "none"
- }
- },
- "pluginVersion": "10.1.5",
- "targets": [
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "exemplar": false,
- "expr": "histogram_quantile(0.95, \r\n sum(rate(app_request_duration_seconds_bucket{job=~\"^($job)$\"}[$interval])) \r\n by (le, job)\r\n)",
- "instant": false,
- "legendFormat": "{{job}}",
- "range": true,
- "refId": "A"
- },
- {
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "editorMode": "code",
- "expr": "histogram_quantile(0.95, \r\n sum(rate(grpc_server_handling_seconds_bucket{job=~\"^($job)$\"}[$interval])) \r\n by (le, job)\r\n)",
- "hide": false,
- "instant": false,
- "legendFormat": "{{job}}",
- "range": true,
- "refId": "B"
- }
- ],
- "title": "Latency",
- "type": "timeseries"
- }
- ],
- "title": "应用服务器流量指标",
- "type": "row"
- }
- ],
- "refresh": "",
- "schemaVersion": 34,
- "style": "dark",
- "tags": [],
- "templating": {
- "list": [
- {
- "current": {
- "selected": false,
- "text": "Prometheus",
- "value": "Prometheus"
- },
- "hide": 0,
- "includeAll": false,
- "label": "Data Source",
- "multi": false,
- "name": "datasource",
- "options": [],
- "query": "prometheus",
- "queryValue": "",
- "refresh": 1,
- "regex": "",
- "skipUrlSync": false,
- "type": "datasource"
- },
- {
- "current": {
- "selected": true,
- "text": [
- "All"
- ],
- "value": [
- "$__all"
- ]
- },
- "datasource": {
- "type": "prometheus",
- "uid": "${datasource}"
- },
- "definition": "label_values(go_memstats_alloc_bytes,job) ",
- "hide": 0,
- "includeAll": true,
- "label": "job",
- "multi": true,
- "name": "job",
- "options": [],
- "query": {
- "query": "label_values(go_memstats_alloc_bytes,job) ",
- "refId": "StandardVariableQuery"
- },
- "refresh": 2,
- "regex": "",
- "skipUrlSync": false,
- "sort": 0,
- "type": "query"
- },
- {
- "auto": false,
- "auto_count": 30,
- "auto_min": "10s",
- "current": {
- "selected": false,
- "text": "1m",
- "value": "1m"
- },
- "hide": 0,
- "name": "interval",
- "options": [
- {
- "selected": true,
- "text": "1m",
- "value": "1m"
- },
- {
- "selected": false,
- "text": "10m",
- "value": "10m"
- },
- {
- "selected": false,
- "text": "30m",
- "value": "30m"
- },
- {
- "selected": false,
- "text": "1h",
- "value": "1h"
- },
- {
- "selected": false,
- "text": "6h",
- "value": "6h"
- },
- {
- "selected": false,
- "text": "12h",
- "value": "12h"
- },
- {
- "selected": false,
- "text": "1d",
- "value": "1d"
- }
- ],
- "query": "1m,10m,30m,1h,6h,12h,1d",
- "queryValue": "",
- "refresh": 2,
- "skipUrlSync": false,
- "type": "interval"
- }
- ]
- },
- "time": {
- "from": "now-24h",
- "to": "now"
- },
- "timepicker": {},
- "timezone": "",
- "title": "docker-openim-custom1",
- "uid": "f5f5de9a-6ec5-499a-841e-6e901c33b1f7",
- "version": 16,
- "weekStart": ""
-}
\ No newline at end of file
diff --git a/config/templates/prometheus.yml.template b/config/templates/prometheus.yml.template
deleted file mode 100644
index 709fe9754a..0000000000
--- a/config/templates/prometheus.yml.template
+++ /dev/null
@@ -1,99 +0,0 @@
-# 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'
diff --git a/deployments/Readme.md b/deployments/Readme.md
index 03f6d112bb..a7b288130d 100644
--- a/deployments/Readme.md
+++ b/deployments/Readme.md
@@ -165,7 +165,7 @@ export MINIO_ENDPOINT="http://im-minio:9000"
export MINIO_SIGN_ENDPOINT="https://openim.server.com/im-minio-api"
mkdir ./charts/generated-configs
-../scripts/genconfig.sh ../scripts/install/environment.sh ./templates/openim.yaml > ./charts/generated-configs/config.yaml
+../scripts/genconfig.sh ../scripts/install/environment.sh ./templates/config.yaml > ./charts/generated-configs/config.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
```
diff --git a/deployments/templates/openim.yaml b/deployments/templates/config.yaml
similarity index 99%
rename from deployments/templates/openim.yaml
rename to deployments/templates/config.yaml
index 82087bc4d0..82f76597c3 100644
--- a/deployments/templates/openim.yaml
+++ b/deployments/templates/config.yaml
@@ -14,7 +14,7 @@
# -----------------------------------------------------------------
# TODO: This config file is the template file
-# --| source: deployments/templates/openim.yaml
+# --| source: deployments/templates/config.yaml
# --| env: scripts/install/environment
# --| target: config/config.yaml
# -----------------------------------------------------------------
diff --git a/docs/.generated_docs b/docs/.generated_docs
index 0867d721c2..f9b8da6757 100644
--- a/docs/.generated_docs
+++ b/docs/.generated_docs
@@ -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_validate.md
docs/guide/en-US/cmd/openim/openim_version.md
-docs/guide/en-US/yaml/openim/openim.yaml
+docs/guide/en-US/yaml/openim/config.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_info.yaml
diff --git a/docs/contrib/environment.md b/docs/contrib/environment.md
index 7d672eda56..366a1d94fc 100644
--- a/docs/contrib/environment.md
+++ b/docs/contrib/environment.md
@@ -89,7 +89,7 @@ While the first two methods will be our main focus, it's worth noting that the t
### 1.2. 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 [`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.
+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.
### 1.3. Docker Compose Deployment
diff --git a/scripts/genconfig.sh b/scripts/genconfig.sh
index 659e8f4be6..eac84189aa 100755
--- a/scripts/genconfig.sh
+++ b/scripts/genconfig.sh
@@ -25,7 +25,7 @@ OPENIM_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
source "${OPENIM_ROOT}/scripts/lib/init.sh"
if [ $# -ne 2 ];then
- openim::log::error "Usage: scripts/genconfig.sh scripts/environment.sh configs/openim-api.yaml"
+ openim::log::error "Usage: scripts/genconfig.sh scripts/environment.sh configs/config.yaml"
exit 1
fi
diff --git a/scripts/init-config.sh b/scripts/init-config.sh
index c75fc55023..9142b0acda 100755
--- a/scripts/init-config.sh
+++ b/scripts/init-config.sh
@@ -31,7 +31,7 @@ readonly ENV_FILE=${ENV_FILE:-"${OPENIM_ROOT}/scripts/install/environment.sh"}
# Templates for configuration files
declare -A TEMPLATES=(
["${OPENIM_ROOT}/deployments/templates/env-template.yaml"]="${OPENIM_ROOT}/.env"
- ["${OPENIM_ROOT}/deployments/templates/openim.yaml"]="${OPENIM_ROOT}/config/config.yaml"
+ ["${OPENIM_ROOT}/deployments/templates/config.yaml"]="${OPENIM_ROOT}/config/openim.yaml"
["${OPENIM_ROOT}/deployments/templates/prometheus.yml"]="${OPENIM_ROOT}/config/prometheus.yml"
["${OPENIM_ROOT}/deployments/templates/alertmanager.yml"]="${OPENIM_ROOT}/config/alertmanager.yml"
)
@@ -39,7 +39,7 @@ declare -A TEMPLATES=(
# Templates for example files
declare -A EXAMPLES=(
["${OPENIM_ROOT}/deployments/templates/env-template.yaml"]="${OPENIM_ROOT}/config/templates/env.template"
- ["${OPENIM_ROOT}/deployments/templates/openim.yaml"]="${OPENIM_ROOT}/config/templates/config.yaml.template"
+ ["${OPENIM_ROOT}/deployments/templates/config.yaml"]="${OPENIM_ROOT}/config/templates/openim.yaml.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"
)
diff --git a/scripts/install/install.sh b/scripts/install/install.sh
index b88fe90831..f226567870 100755
--- a/scripts/install/install.sh
+++ b/scripts/install/install.sh
@@ -76,7 +76,7 @@ function openim::install::install_openim() {
openim::log::info "check openim dependency"
openim::common::sudo "cp -r ${OPENIM_ROOT}/config/* ${OPENIM_CONFIG_DIR}/"
- ${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/config.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::util::check_ports ${OPENIM_DEPENDENCY_PORT_LISTARIES[@]}
diff --git a/scripts/install/openim-tools.sh b/scripts/install/openim-tools.sh
index 385df64f52..69d537c37e 100755
--- a/scripts/install/openim-tools.sh
+++ b/scripts/install/openim-tools.sh
@@ -104,12 +104,7 @@ function openim::tools::start_service() {
cmd="${cmd} --prometheus_port ${prometheus_port}"
fi
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}"
- fi
+ ${cmd} | tee -a "${LOG_FILE}"
}
function openim::tools::start() {
diff --git a/tools/imctl/.gitignore b/tools/imctl/.gitignore
index a2e773394e..72ff17ca90 100644
--- a/tools/imctl/.gitignore
+++ b/tools/imctl/.gitignore
@@ -36,20 +36,6 @@ config/config.yaml
.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
.idea.md
.todo.md