ほわいとぼーど

ぷろぐらまのメモ帳

rootでjstatできなかった話(Jdk8u40)

※この話は時限的なものなので注意が必要です。

sudo jstat が実行できずにハマりました。
sudo jpsを実施するとprocess information unavailableと表示されます。
最初はjdk 8u40で遭遇したのですが、jdk 8u31以降のようです。
java実行ユーザでは実行できます。

実行ユーザ以外はrootでも実行できなくする仕様変更か?とか疑いましたが、調べた所、Issueっぽいのを見つけました。
https://bugs.launchpad.net/ubuntu/+source/openjdk-6/+bug/1417962
https://bugs.openjdk.java.net/browse/JDK-8073858?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab
jdk 8u60でも直ってない?

Java8に上げたらmackerel-plugin-jvmの結果がとれてなさそうだったので調べた所、mackerel-plugin-jvmの内部で使用しているjps, jstatに問題を発見したという流れです。
現在はmackerelのconfigで

[plugin.metrics.jvm]
command = "sudo -u 実行ユーザ /path/to/mackerel-plugin-jvm ..."

みたいにして回避しています。

(5/2追記) プログラムでsudoするにはttyの設定も必要です。