Configure monitoring components
The performance monitoring and alerting features of obshell Dashboard depend on Prometheus and Alertmanager. This topic describes how to deploy the required monitoring components.
Background
The performance monitoring feature of obshell Dashboard relies on obagent and Prometheus, while the alerting feature relies on Alertmanager. obagent provides an HTTP interface for data collection from seekdb. Prometheus periodically accesses obagent's interface to collect and persist monitoring data. obshell Dashboard displays the monitoring data collected by Prometheus. Alertmanager processes alerts from monitoring systems like Prometheus, offering features such as alert deduplication, grouping, routing, and muting.
Install obagent
Configure seekdb
-
Prepare a user
We recommend that you use a read-only user and grant the SELECT privilege on the oceanbase.* database to the user.
obclient> create user monitor identified by '******';
obclient> grant select on oceanbase.* to monitor; -
Set the instance name
If you want to monitor multiple seekdb instances by using Prometheus, you must set different instance names for these instances. This way, you can better distinguish these instances.
obclient> alter system set `cluster` = 'obcluster';tipTo set the instance name, you must add backticks (
`) to theclusterparameter.
Configure obagent
-
Install obagent
Go to the Open Source Image Library and download the obagent installation package corresponding to the architecture of your environment. Then, run the following command to install obagent. We recommend that you install the latest version.
[root@test ~]# rpm -ivh obagent-*.rpmBy default, obagent is installed in the
/home/admindirectory. -
Configure obagent
Run the following command to configure the account password for data collection and some necessary metadata information.
[root@test ~]# cd /home/admin/obagent
[root@test obagent]# bin/ob_agentctl config --update monagent.ob.monitor.user=monitor,monagent.ob.monitor.password=******,monagent.ob.cluster.name=obcluster,monagent.pipeline.ob.status=active,agent.http.basic.auth.metricAuthEnabled=falseThe following table describes the command parameters.
monagent.ob.monitor.user: specifies the account for data collection. The value is the read-only user created in seekdb. In this example, the value ismonitor.monagent.ob.monitor.password: specifies the password for the account for data collection. The value is the password of the read-only user in seekdb.monagent.ob.cluster.name: specifies the instance name of the seekdb instance. After you connect to the instance, you can run theSHOW PARAMETERS LIKE 'cluster';command to query the instance name. The value in thevaluecolumn is the instance name.monagent.pipeline.ob.status: specifies whether to collect metrics of seekdb. Set the value toactiveto enable the collection of metrics of seekdb.agent.http.basic.auth.metricAuthEnabled: specifies whether to enable basic authentication for the HTTP interface of obagent. Set the value tofalseto disable basic authentication for the HTTP interface of obagent.
The command output is as follows:
{"successful":true,"message":"success","error":""} -
Start obagent
[root@test obagent]# bin/ob_agentctl startThe command output is as follows:
{"successful":true,"message":"ok","error":""}
Verification
You can check whether obagent is started by viewing the process, or you can access the data query interface to verify whether you can obtain monitoring data.
-
View the process.
[root@test obagent]# ps -ef | grep agentThe output is as follows:
root 27064 1 0 14:46 ? 00:00:00 /home/admin/obagent/bin/ob_agentd -c /home/admin/obagent/conf/agentd.yaml
root 27071 27064 0 14:46 ? 00:00:00 /home/admin/obagent/bin/ob_mgragent
root 27072 27064 0 14:46 ? 00:00:00 /home/admin/obagent/bin/ob_monagent
root 27116 26122 0 14:47 pts/0 00:00:00 grep --color=auto agent -
Access the data query interface.
[root@test obagent]# curl -L 'http://127.0.0.1:8088/metrics/ob/basic'The output is as follows:
# HELP ob_active_session_num monitor collected message
# TYPE ob_active_session_num untyped
ob_active_session_num{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 0 1762135926015
# HELP ob_all_session_num monitor collected message
# TYPE ob_all_session_num untyped
ob_all_session_num{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 0 1762135926015
# HELP ob_plan_cache_access_total monitor collected message
# TYPE ob_plan_cache_access_total untyped
ob_plan_cache_access_total{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 33229 1762135926015
# HELP ob_plan_cache_hit_total monitor collected message
# TYPE ob_plan_cache_hit_total untyped
ob_plan_cache_hit_total{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 32051 1762135926015
# HELP ob_plan_cache_memory_bytes monitor collected message
# TYPE ob_plan_cache_memory_bytes untyped
ob_plan_cache_memory_bytes{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 1.15905078e+08 1762135926015
# HELP ob_server_num monitor collected message
# TYPE ob_server_num untyped
ob_server_num{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",obzone="",server_ips="127.0.0.1",status="ACTIVE",svr_ip="127.0.0.1",svr_port="2882"} 1 1762135926015
# HELP ob_sysstat monitor collected message
# TYPE ob_sysstat untyped
ob_sysstat{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",stat_id="10000",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 2673 1762135926015
ob_sysstat{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",stat_id="10001",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 2.838626e+06 1762135926015
······# Subsequent outputs are omitted
Configure Prometheus
For more information, visit the Prometheus website or open source mirror. You can download and deploy the corresponding installation package of Prometheus based on the architecture of the environment in which you want to deploy Prometheus. Generally, one Prometheus instance is sufficient to monitor all seekdb instances. This section provides only a sample configuration. For more information, see Prometheus documentation.
For more information about the Prometheus alerting rules provided by OceanBase, see the GitHub repository.
global:
scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute.
# Alertmanager configuration, prometheus will push alerts to these addresses
alerting:
alertmanagers:
- static_configs:
- targets:
- localhost:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- "prometheus_rules.yaml"
# - "second_rules.yml"
scrape_configs:
- job_name: "ob-basic"
metrics_path: "/metrics/ob/basic"
# Open the following configurations for Prometheus 3.x.
# fallback_scrape_protocol: PrometheusText0.0.4
static_configs:
- targets: ["127.0.0.1:8088"]
- job_name: "ob-extra"
metrics_path: "/metrics/ob/extra"
# prometheus 3.x needs to enable the following configuration.
# fallback_scrape_protocol: PrometheusText0.0.4
static_configs:
- targets: ["127.0.0.1:8088"]
- job_name: "ob-host"
metrics_path: "/metrics/node/host"
# Enable the following configuration for Prometheus 3.x:
# fallback_scrape_protocol: PrometheusText0.0.4
static_configs:
- targets: ["127.0.0.1:8088"]
After you configure Prometheus, you can access the Prometheus graphical interface, click Status in the left navigation pane, and select Target to check whether data is collected.
Different versions of Prometheus may have different interface terms. Therefore, Target is provided as an example only in this case.

Configure Alertmanager
Go to Prometheus or Open Source Mirror and download and decompress the required installation package based on the architecture of your environment. Modify the configuration file (alertmanager.yml) as described in the Alertmanager documentation. Then, go to the working directory and run the following command to start Alertmanager:
[root@test alertmanager]# nohup ./alertmanager --config.file=alertmanager.yml --cluster.advertise-address=127.0.0.1:9093 > alertmanager.log 2>&1 &
In the example, 127.0.0.1:9093 indicates the service address, and nohup indicates that the alertmanager process is run in the background.