or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

auto-configuration.mdconfiguration-properties.mddatasource-management.mdfilter-configuration.mdindex.mdmonitoring-integration.md

monitoring-integration.mddocs/

0

# Monitoring Integration

1

2

The Druid Spring Boot Starter provides comprehensive monitoring capabilities including web-based console, request statistics, and AOP method monitoring with configurable security and filtering options.

3

4

## Capabilities

5

6

### StatViewServlet Configuration

7

8

Web-based monitoring console that provides real-time database connection pool statistics and SQL execution monitoring.

9

10

```java { .api }

11

/**

12

* Auto-configuration for Druid's web monitoring console

13

* Only activates when explicitly enabled for security reasons

14

*/

15

@ConditionalOnWebApplication

16

@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true")

17

public class DruidStatViewServletConfiguration {

18

19

/**

20

* Creates and configures ServletRegistrationBean for StatViewServlet

21

* Applies security settings including IP filtering and authentication

22

* @param properties DruidStatProperties containing servlet configuration

23

* @return Configured ServletRegistrationBean for monitoring console

24

*/

25

@Bean

26

public ServletRegistrationBean statViewServletRegistrationBean(DruidStatProperties properties);

27

}

28

```

29

30

**Key Features:**

31

- **Real-time Monitoring**: Live database connection pool metrics and SQL statistics

32

- **Security Controls**: IP-based access control and login authentication

33

- **Customizable URLs**: Configurable servlet mapping patterns

34

- **Reset Functionality**: Optional ability to reset monitoring statistics

35

36

**Configuration Example:**

37

```properties

38

# Enable monitoring console

39

spring.datasource.druid.stat-view-servlet.enabled=true

40

spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*

41

spring.datasource.druid.stat-view-servlet.login-username=admin

42

spring.datasource.druid.stat-view-servlet.login-password=secure123

43

spring.datasource.druid.stat-view-servlet.allow=127.0.0.1,10.0.0.0/8

44

spring.datasource.druid.stat-view-servlet.deny=192.168.0.100

45

spring.datasource.druid.stat-view-servlet.reset-enable=false

46

```

47

48

**Access:** Once configured, access the monitoring console at `http://your-app/druid/index.html`

49

50

### WebStatFilter Configuration

51

52

HTTP request statistics collection filter that monitors web application performance and usage patterns.

53

54

```java { .api }

55

/**

56

* Auto-configuration for web request statistics collection

57

* Only activates when explicitly enabled and in web application context

58

*/

59

@ConditionalOnWebApplication

60

@ConditionalOnProperty(name = "spring.datasource.druid.web-stat-filter.enabled", havingValue = "true")

61

public class DruidWebStatFilterConfiguration {

62

63

/**

64

* Creates and configures FilterRegistrationBean for WebStatFilter

65

* Sets up URL patterns, exclusions, and session tracking options

66

* @param properties DruidStatProperties containing filter configuration

67

* @return Configured FilterRegistrationBean for web request monitoring

68

*/

69

@Bean

70

public FilterRegistrationBean webStatFilterRegistrationBean(DruidStatProperties properties);

71

}

72

```

73

74

**Monitoring Capabilities:**

75

- **Request Statistics**: URL access patterns, response times, and error rates

76

- **Session Tracking**: User session statistics and behavior analysis

77

- **Performance Metrics**: Request duration histograms and throughput metrics

78

- **User Identification**: Principal-based user activity tracking

79

80

**Configuration Example:**

81

```properties

82

# Enable web request monitoring

83

spring.datasource.druid.web-stat-filter.enabled=true

84

spring.datasource.druid.web-stat-filter.url-pattern=/*

85

spring.datasource.druid.web-stat-filter.exclusions=*.js,*.css,*.ico,/druid/*,/static/*

86

spring.datasource.druid.web-stat-filter.session-stat-enable=true

87

spring.datasource.druid.web-stat-filter.session-stat-max-count=2000

88

spring.datasource.druid.web-stat-filter.principal-session-name=user

89

spring.datasource.druid.web-stat-filter.profile-enable=true

90

```

91

92

### AOP Method Monitoring

93

94

Spring AOP integration for monitoring method execution times and call patterns in service and DAO layers.

95

96

```java { .api }

97

/**

98

* Auto-configuration for Spring AOP method monitoring

99

* Only activates when aop-patterns property is configured

100

*/

101

@ConditionalOnProperty("spring.datasource.druid.aop-patterns")

102

public class DruidSpringAopConfiguration {

103

104

/**

105

* Creates DruidStatInterceptor for method execution monitoring

106

* @return Advice implementation for AOP method interception

107

*/

108

@Bean

109

public Advice advice();

110

111

/**

112

* Creates RegexpMethodPointcutAdvisor with configured patterns

113

* @param properties DruidStatProperties containing AOP patterns

114

* @return Advisor that applies monitoring to matching methods

115

*/

116

@Bean

117

public Advisor advisor(DruidStatProperties properties);

118

119

/**

120

* Creates DefaultAdvisorAutoProxyCreator when Spring AOP auto-proxy is disabled

121

* Ensures AOP advisors are applied even when auto-proxy is off

122

* @return Auto-proxy creator for manual AOP configuration

123

*/

124

@Bean

125

@ConditionalOnProperty(name = "spring.aop.auto", havingValue = "false")

126

public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator();

127

}

128

```

129

130

**Monitoring Features:**

131

- **Method Execution Times**: Track method call durations and performance bottlenecks

132

- **Call Patterns**: Monitor method invocation frequency and usage patterns

133

- **Error Tracking**: Capture method execution exceptions and failure rates

134

- **Layered Monitoring**: Separate monitoring for service, DAO, and controller layers

135

136

**Configuration Example:**

137

```properties

138

# Enable AOP method monitoring

139

spring.datasource.druid.aop-patterns=com.example.service.*,com.example.dao.*,com.example.controller.*

140

```

141

142

**Usage Example:**

143

```java

144

@Service

145

public class UserService {

146

147

// This method will be monitored due to the AOP pattern

148

public User findById(Long id) {

149

// Method execution time and call count will be tracked

150

return userRepository.findById(id);

151

}

152

}

153

```

154

155

## Monitoring Data Access

156

157

### Programmatic Access

158

159

Access monitoring data programmatically through Druid's management facade:

160

161

```java

162

@RestController

163

public class MonitoringController {

164

165

@GetMapping("/monitoring/datasource")

166

public Object getDataSourceStats() {

167

return DruidStatManagerFacade.getInstance().getDataSourceStatDataList();

168

}

169

170

@GetMapping("/monitoring/sql")

171

public Object getSqlStats() {

172

return DruidStatManagerFacade.getInstance().getSqlStatDataList();

173

}

174

175

@GetMapping("/monitoring/web")

176

public Object getWebStats() {

177

return DruidStatManagerFacade.getInstance().getWebAppStatDataList();

178

}

179

}

180

```

181

182

### Monitoring Data Types

183

184

**DataSource Statistics:**

185

- Connection pool metrics (active, idle, wait counts)

186

- Connection creation and destruction rates

187

- Query execution statistics

188

- Error counts and rates

189

190

**SQL Statistics:**

191

- Individual SQL statement performance

192

- Execution counts and average times

193

- Slow SQL identification

194

- Parameter binding statistics

195

196

**Web Statistics:**

197

- URL access patterns and response times

198

- Session statistics and user activity

199

- Request/response size metrics

200

- Error rate analysis

201

202

## Security Configuration

203

204

### StatViewServlet Security

205

206

**IP-based Access Control:**

207

```properties

208

# Allow specific IPs

209

spring.datasource.druid.stat-view-servlet.allow=127.0.0.1,192.168.1.100

210

211

# Deny specific IPs (takes precedence over allow)

212

spring.datasource.druid.stat-view-servlet.deny=192.168.1.200

213

214

# Allow IP ranges

215

spring.datasource.druid.stat-view-servlet.allow=10.0.0.0/8,172.16.0.0/12

216

```

217

218

**Authentication:**

219

```properties

220

# Required credentials for console access

221

spring.datasource.druid.stat-view-servlet.login-username=admin

222

spring.datasource.druid.stat-view-servlet.login-password=${DRUID_ADMIN_PASSWORD}

223

```

224

225

**Reset Protection:**

226

```properties

227

# Disable reset functionality in production

228

spring.datasource.druid.stat-view-servlet.reset-enable=false

229

```

230

231

### WebStatFilter Privacy

232

233

**URL Exclusions:**

234

```properties

235

# Exclude sensitive or unnecessary endpoints

236

spring.datasource.druid.web-stat-filter.exclusions=*.js,*.css,*.ico,/druid/*,/admin/*,/api/internal/*

237

```

238

239

**Session Privacy:**

240

```properties

241

# Limit session tracking scope

242

spring.datasource.druid.web-stat-filter.session-stat-max-count=1000

243

spring.datasource.druid.web-stat-filter.principal-session-name=username

244

```

245

246

## Production Considerations

247

248

### Performance Impact

249

250

- **Minimal Overhead**: Druid monitoring has minimal performance impact

251

- **Configurable Depth**: Control monitoring granularity through configuration

252

- **Resource Management**: Automatic cleanup of old statistics data

253

254

### Security Best Practices

255

256

1. **Disable in Development**: Keep StatViewServlet disabled by default

257

2. **Strong Authentication**: Use strong passwords and consider additional authentication layers

258

3. **Network Isolation**: Restrict access to monitoring endpoints via firewall rules

259

4. **HTTPS Only**: Ensure monitoring console is only accessed over HTTPS in production

260

5. **Regular Auditing**: Monitor access logs for unauthorized access attempts

261

262

### Monitoring Configuration Examples

263

264

**Development Environment:**

265

```yaml

266

spring:

267

datasource:

268

druid:

269

stat-view-servlet:

270

enabled: true

271

login-username: dev

272

login-password: dev123

273

allow: 127.0.0.1

274

reset-enable: true

275

web-stat-filter:

276

enabled: true

277

exclusions: "*.js,*.css,*.ico,/druid/*"

278

aop-patterns: com.example.service.*

279

```

280

281

**Production Environment:**

282

```yaml

283

spring:

284

datasource:

285

druid:

286

stat-view-servlet:

287

enabled: true

288

login-username: ${DRUID_USERNAME}

289

login-password: ${DRUID_PASSWORD}

290

allow: ${MONITORING_ALLOWED_IPS}

291

reset-enable: false

292

url-pattern: /internal/druid/*

293

web-stat-filter:

294

enabled: true

295

exclusions: "*.js,*.css,*.ico,/druid/*,/static/*,/actuator/*"

296

session-stat-max-count: 5000

297

aop-patterns: com.example.service.*,com.example.dao.*

298

```