はじめに
Instana Host Agentをインストールするときに気になるのが、そのサーバーで動いているアプリケーションやサービスへ影響を与えないかということです。Instana Agentの使用するリソースを制限する設定についてドキュメントに記載がありますので、実際に設定して試してみました。
本手順は以下の環境で実施しています。
- クライアントPC: macOS
- Instana Backend: Self-Hosted Build 241-3
- Instana Agent: RHEL 7.9
設定する前のリソース使用状況
デフォルトでは、使用リソース制限は設定されていません。
Instana AgentのUIから確認したところ、ある時間帯において、CPUは53%、メモリは約420MB使用していました。
設定した内容
対象のサーバーにログインして、以下のファイルを作成します。
cat <<EOF > /etc/systemd/system/instana-agent.service.d/20-resource_limits.conf
[Service]
CPUAccounting=true
CPUQuota=25%
MemoryAccounting=true
MemoryLimit=512M
EOF
そして、以下のコマンドで設定を読み込みます。
systemctl daemon-reload
Statusコマンドでも、ファイルが読み込まれていること、メモリのlimitが設定されていることが読み取れます。ここではCPUの設定は確認できませんでした。
[root@instana-server]# systemctl status instana-agent
● instana-agent.service - "Instana(tm) agent."
Loaded: loaded (/usr/lib/systemd/system/instana-agent.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/instana-agent.service.d
└─20-resource_limits.conf, custom-environment.conf
Active: active (running) since 金 2022-11-11 14:34:54 JST; 3 months 25 days ago
Main PID: 1563 (java)
Tasks: 202
Memory: 511.9M (limit: 512.0M)
CGroup: /system.slice/instana-agent.service
├─ 1563 /opt/instana/agent/jvm/bin/java -XX:+UnlockDiagnosticVMOptions -Xmx636641K -XX:MaxDirectMemorySize=70737K -XX:+UseSerialGC -Xmn32m -Xss512k -XX:InitialCodeCache...
└─10906 /opt/instana/agent/data/repo/com/instana/ebpf-sensor/0.1.7/ebpf-sensor-0.1.7.bin
ドキュメントに記載のあるMemoryMax
はRHEL7のsystemdでは使用できないようで、MemoryLimit
を使用しています。使えないオプションを使用すると、systemctl status instana-agent
の結果に以下のメッセージが出力されます。
systemd[1]: [/etc/systemd/system/instana-agent.service.d/20-resource_limits.conf:5] Unknown lvalue 'MemoryMax' in section 'Service'
どのオプションが使用可能かはman systemd.resource-control
コマンドで確認することができます。
上記の値は検証のために設定した値であり、推奨値ではありません。
特にメモリの制限は想定外の事態を引き起こしかねないので慎重になった方が良さそうです。(参考)
設定した後のリソース使用状況
設定後のリソース使用状況を確認すると、CPUが25%以下に制限されていることが確認できました。
メモリは元々の使用量よりも大きい上限を指定したので特に変化はありませんでした。
CPUの負荷が張り付きになっているようなグラフになっていますが、これはCPUの割り当てに対しての比率をベースにしているようで、割り当てられた25%は使い切っているのでこのようなグラフになると解釈しました。念のため確認しましたが、サーバー全体の負荷が上がっているわけではありませんでした。
まとめ
Instana Agentの使用リソース制限について、設定通りに動作することを確認できました。
AgentのCPU使用率はAgent起動時に高くなる傾向があるので、少な過ぎない程度に上限を設定しておくのは効果的ではないかと思いました。その分、起動により時間がかかると思うのでトレードオフになると思います。
今回はOSに直接インストールする場合について検証しましたが、Kubernetes/OpenShiftの環境では、Instana Agentを定義するDaemonSetのresource limitがデフォルトで設定されていますので、その値を基準に見直す形になると思います。特に監視対象が多い場合など、使用リソースを制限するだけでなく、使用リソース制限の上限を上げる可能性があることも考慮に入れる必要がありそうです。
おわりに
Instana Agentの使用リソース制限について試してみた内容をまとめました。
少しでも参考になれば幸いです。