7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Zabbix-agentでTomcatのプロセスを監視する

Last updated at Posted at 2020-02-06

どうやるの?

Tomcatの起動プロセスの監視アイテムを作るぞ。
まずはzabbix_getで動作確認だ。

$ zabbix_get -s 192.168.200.24 -k proc.num[httpd]
6
$ zabbix_get -s 192.168.200.24 -k proc.num[tomcat]
0

tomcatはどうやって取るんだ・・・?

答えはこれ

$ zabbix_get -s 192.168.200.24 -k proc.num[java,,,"org.apache.catalina.startup.Bootstrap start"]
1

環境

  • RHEL 7.7 (Maipo)
  • zabbix_server 4.0.16
  • zabbix_agent 4.0.16
  • Tomcat 8.5.50

リファレンスをちゃんと読む

Zabbix Documentation 2.2に使い方があったので調べてみると、プロセス名を知る必要があることを知る。

proc.num[<name>,<user>,<state>,<cmdline>]

  • name - プロセス名(デフォルトは「全プロセス」)
  • user - ユーザー名(デフォルトは「全ユーザー」)
  • state - 可能な値: all (デフォルト)、run, sleep, zomb
  • cmdline - コマンドラインによるフィルター(正規表現)

tomcatのプロセス名を調べる

起動しているtomcatの状態を調べます。

$ systemctl status tomcat
● tomcat.service - Apache Tomcat 8
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (exited) since 木 2020-02-06 15:01:19 JST; 1h 29min ago
  Process: 844 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 844 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/tomcat.service
           └─875 /usr/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.prot...

 2月 06 15:01:19 192.168.200.24 systemd[1]: Starting Apache Tomcat 8...
 2月 06 15:01:19 192.168.200.24 systemd[1]: Started Apache Tomcat 8.

PID875をさらに調べます。

$ cat /proc/875/stat 
875 (java) S 1 844 844 0 -1 1077944320 19379 0 124 0 937 64 0 0 20 0 41 0 752 2357014528 21813 18446744073709551615 4194304 4196524 140724105374304 140724105356960 140023800299543 0 0 2 16800973 18446744073709551615 0 0 17 0 0 0 5 0 0 6294912 6295604 12607488 140724105383058 140724105383592 140724105383592 140724105383914 0

()で囲われている箇所がプロセス名です。
tomcatを起動しているプロセス名はjavaのようです。

解決(間違い)

$ zabbix_get -s 192.168.200.24 -k proc.num[java]
1

取れました!

...でもふと気づく。
これではただのJavaのプロセスなだけで、tomcatのプロセスかどうかは判別できないことに。

プロセスをもう一度確認

$ ps aux | grep java
tomcat     875  0.1  8.6 2301772 87452 ?       Sl   15:01   0:10 /usr/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.io.tmpdir=/opt/tomcat/temp org.apache.catalina.startup.Bootstrap start

どうやらこのプロセスはtomcatが実行しているようです。

$ zabbix_get -s 192.168.200.24 -k proc.num[java,tomcat]
1

取れました。

ただ、よくよく考えてみると、tomcatユーザがjavaコマンドを実行しているだけで
Tomcatの起動プロセスを監視しているわけではないことに気付きました。

もう一度調べる

プロセスを確認して気付きました。
optionが長くてわかりにくかったけど、起動プロセス(org.apache.catalina.startup.Bootstrap start)の記述があるじゃないですか。

$ ps aux | grep java
tomcat    2023 83.6  7.3 2299724 74204 ?       Sl   17:26   0:02 

/usr/bin/java 
  -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties 
  -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
  -Djdk.tls.ephemeralDHKeySize=2048 
  -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 
  -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 
  -Dignore.endorsed.dirs= 
  -classpath /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar 
  -Dcatalina.base=/opt/tomcat 
  -Dcatalina.home=/opt/tomcat 
  -Djava.io.tmpdir=/opt/tomcat/temp 
  org.apache.catalina.startup.Bootstrap start

proc.num[<name>,<user>,<state>,<cmdline>]
第4引数のコマンドラインを使えば抽出できそうです。

$ zabbix_get -s 192.168.200.24 -k proc.num[java,,,"org.apache.catalina.startup.Bootstrap start"]
1

無事に起動プロセスのカウントを取得できました。
tomcatユーザであるかどうかはあまり意味がないと思ったのであえて書きませんでした。

終わりに

長々と書いてしまいました。
proc.num[java,tomcat]と書いてある記述も見かけたので、こちらを紹介させていただきました。

補足

Tomcatのインストール方法によっては上記のやり方とは異なりますが、調べ方さえ分かれば応用は効きくと思います。
私の場合はソースをDL・展開してインストールを行いました。
参考:ApacheとTomcatを連携させてみた

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?