我正在尝试使用 Jolokia 监视某些 Java 应用程序的 JDBC 池。我可以使用以下方法获取 JDBC 池的所有属性的完整列表:
# curl -k http://127.0.0.1:50147/jolokia/read/'Catalina:type=DataSource,class=javax.sql.DataSource,connectionpool=connections,context=*,host=*,name=*' | python -m json.tool
{
"request": {
"mbean": "Catalina:class=javax.sql.DataSource,connectionpool=connections,context=*,host=*,name=*,type=DataSource",
"type": "read"
},
"status": 200,
"timestamp": 1696324668,
"value": {
"Catalina:class=javax.sql.DataSource,connectionpool=connections,context=/XXXXXX,host=localhost,name=\"jdbc/ZZZZZZ\",type=DataSource": {
"AbandonedConfig": false,
"BlockWhenExhausted": true,
"BorrowedCount": 739850,
"Closed": false,
"CreatedCount": 36,
·
·
·
但现在我只想获取一个 JDBC 池的 maxIdle 属性(例如),并且只获取一个
HTTP 400 error code
:
# curl -k http://127.0.0.1:50147/jolokia/read/'Catalina:class=javax.sql.DataSource,connectionpool=connections,context=/XXXXXX,host=localhost,name=\"jdbc/ZZZZZZ\",type=DataSource"/maxIdle' -v
* About to connect() to 127.0.0.1 port 50147 (#0)
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 50147 (#0)
> GET /jolokia/read/Catalina:class=javax.sql.DataSource,connectionpool=connections,context=/XXXXXX,host=localhost,name=\"jdbc/ZZZZZZ\",type=DataSource"/maxIdle HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 127.0.0.1:50147
> Accept: */*
>
< HTTP/1.1 400
< Transfer-Encoding: chunked
< Date: Tue, 03 Oct 2023 09:20:59 GMT
< Connection: close
<
* Closing connection 0
我尝试了各种变体——重新排列关键字、删除引号和反斜杠...但只得到 400。
成功检索到其他值:
# curl -k http://127.0.0.1:50147/jolokia/read/'java.lang:type=Runtime/SystemProperties/java.version'
{"request":{"path":"java.version","mbean":"java.lang:type=Runtime","attribute":"SystemProperties","type":"read"},"value":"1.8.0_131","timestamp":1696325283,"status":200}
我做错了什么?
致以诚挚的问候
我有一个类似的问题,看起来你没有使用正确的转义:
看看这个文档页面:
https://jolokia.org/reference/html/protocol.html#escape-rules
逃避/与!帮助我获得了我需要的指标。