Extend storage
SkyWalking has already provided several storage solutions. In this document, you could learn how to easily implement a new storage.
Define your storage provider
- Define class extension
org.apache.skywalking.oap.server.library.module.ModuleProvider
. - Set this provider targeting to storage module.
@Override
public Class<? extends ModuleDefine> module() {
return StorageModule.class;
}
Implement all DAOs
Here’s a list of all DAO interfaces in storage:
-
IServiceInventoryCacheDAO
-
IServiceInstanceInventoryCacheDAO
-
IEndpointInventoryCacheDAO
-
INetworkAddressInventoryCacheDAO
-
IBatchDAO
-
StorageDAO
-
IRegisterLockDAO
-
ITopologyQueryDAO
-
IMetricsQueryDAO
-
ITraceQueryDAO
-
IMetadataQueryDAO
-
IAggregationQueryDAO
-
IAlarmQueryDAO
-
IHistoryDeleteDAO
-
IMetricsDAO
-
IRecordDAO
-
IRegisterDAO
-
ILogQueryDAO
-
ITopNRecordsQueryDAO
-
IBrowserLogQueryDAO
-
IProfileTaskQueryDAO
-
IProfileTaskLogQueryDAO
-
IProfileThreadSnapshotQueryDAO
-
UITemplateManagementDAO
Register all service implementations
In public void prepare()
, use this#registerServiceImplementation
method to register and bind with your implementation of the above interfaces.
Example
org.apache.skywalking.oap.server.storage.plugin.elasticsearch.StorageModuleElasticsearchProvider
and org.apache.skywalking.oap.server.storage.plugin.jdbc.mysql.MySQLStorageProvider
are good examples.