はじめに
Instana は 対象ホストにAgentを導入するだけで自動的にアプリやインフラの可視化を実現できます。(全部ではないですけど)いやぁ楽ですよね。
…なんですが、たまに「このプロセスは別に可視化しなくて良いのだけど…されちゃうのね」みたいなことってあるじゃないですか。ちょっとしたポーリング用プロセスとか?
いや全部可視化しとけば良いじゃないですか、というのが Observability的には良いと個人的には思うものの、やっぱり人間が扱うものは例外もあるもの。
というわけで、特定のプロセスだけを可視化対象から外す方法を検証してみました。
要約
こちらを読みましょう。そして設定してみましょう。
監視対象アプリケーションの稼働
アプリケーション自体の説明
今回、アプリケーション自体はサンプル検証用の適当なものなので、説明は省きます。
以下をご参照ください。なんとなく Spring Bootにしてみました。
アプリの開始
Sprint Bootで処理を実行します。
./mvnw spring-boot:run
ちなみに、Spring Boot開始後に、Springを起動しているコンソールに以下が表示されていました。
Instana Java AgentがJavaアプリケーションに組み込まれる時にこんな警告が出るようになったんですね。
WARNING: A Java agent has been loaded dynamically (/tmp/.instana/javaagent-loader-1.3.64.jar)
WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning
WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information
WARNING: Dynamic loading of agents will be disallowed by default in a future release
この警告を表示したくない人は java の引数に XX:+EnableDynamicAgentLoading
を指定してください。
将来のリリースで、dynamic loadingはデフォルトで不許可になるらしい。。。対策は明示的に上記引数を指定することなんだろうか…
アプリの呼び出し
以下を実行して、永遠にアクセスしていることにします。
while true
> do
> sleep 1
> curl http://localhost:8080/cpu/load
> done
こんな感じの結果がコンソールに出ます。
CPU Load Task ExecutedCPU Load Task ExecutedCPU Load Task ExecutedCPU Load Ta...
Instanaでの可視化
インフラ
ホスト上でSpringBootプロセス:JVM(tomcat)認識してますね
アプリケーション
Sprint Bootプロセスを可視化対象から外す
Spring Boot プロセス の確認
Spring Boot プロセスは ps aux |grep java
で状況を確認できます。
/usr/lib/jvm/java-21-openjdk-21.0.5.0.10-3.el8.x86_64/bin/java
-XX:TieredStopAtLevel=1 (中略) com.example.cpuusage.CpuUsageApplication
Instana上でも、引数が可視化されていることが確認できます。
Instana Agent設定ファイルの変更
Instana Agent設定ファイルで不可視対象設定を記載します。
設定ファイルデフォルトは /opt/instana/agent/etc/instana/configuration.yaml
です。
java
プロセスで引数に--instana.ignored=true
を持つものを不可視対象にします。
com.instana.ignore:
processes:
- 'java'
arguments:
- '--instana.ignored=true'
Spring Boot アプリ 引数の追加
Spring Bootアプリに引数を追加して実行します。
./mvnw spring-boot:run -Dspring-boot.run.arguments=--instana.ignored=true
参考:https://www.baeldung.com/spring-boot-command-line-arguments
Instana での確認
数分待つと、、、 インフラ画面でJVM(tomcat)が一番下にあったのですが、表示が消えていますね!
tomcatアプリケーション自身は過去の情報があるため消えていませんが、トレース情報が一切取得されていないことを確認できますね!確実に監視対象外になっていそうです!
最後に
これで、表示したくないプロセスを表示しなくてよくなりましたね!