jmeterモニタPerfMonのPTQL(sigar)
6506 ワード
jmeterモニタPerfMonのPTQL
1、sigar
1.1 sigar
Sigar(system information gather and report)は、Hyperic-hq製品のベースパッケージであり、Hyperic HQの主なデータ収集コンポーネントである.多くのプラットフォームからシステムと処理情報を収集するために使用される.これらのプラットフォームには、Linux、Windows、Solaris、AIX、HP-UX、FreeBSD and Mac OSXが含まれる.
SigarにはC,C#,JavaとPerl APIがあり,java版のAPIはsigar.jar sigar.JArの最下位層はC言語で記述され,オペレーティングシステムAPIをローカルメソッドで呼び出してシステム関連データを取得する.
jmeterのPerfMonプラグインは,このパケットに依存したデータ収集である.
Sigarダウンロードアドレス
1.2 PTQL
1.2.1 PTQL構文
Hyperic SIGARはプロセスを位置決めするメカニズムを提供します.プロセステーブルクエリ言語と呼ばれる-PTQL(process table query language).すべてのオペレーティングシステムは実行中のプロセスにPIDを割り当てますが、このプロセス番号はランダムな数字で、プログラムを起動するたびにランダムに可変になります.したがって、プロセス番号でプログラムを位置決めすることはできません.PTQLはプロセスの属性値を使用してプログラムを位置決めします.これらの属性値はずっと変わらない.
ptqlの構文フォーマットクラスは次のとおりです.
クエリー条件にスペースがある場合は、二重引用符で囲む必要があります. Class is the name is the sigar class minus the Proc prefix. Attribute is an attribute of the given Class, index into an array or ker in a Map class. operate in one of the folling for String values. eq: Equal to values. ne: Not Equal to value. gt: Greater thab value. ge: Great than or equal value. lt: Less than value. le: Less than or equal value. ew: End with value. sw: Starts with value. ct: Contains value(subsring). re: Regular expression value matches.
Mutiole queries must delimited by a comma.複数のクエリー間でカンマで接続を区切ります.
1.2.2 PTQL属性
The attributes used in PTQL are directly from the sigar.Proc* classes. This document will outline the attributes most commonly used for identifying process. the complete set of Proc* classes and attributes can be found in the Sigar javadoc. Pid.Pid: the process ID. Pid.PidFile: file containing the process id. Pid.Service: windows services name used to pid from the service manager. State.Name: base name of the process executable. CredName.User: user name of the process owner. CredName.Group: group name of the process owner. Cred.Uid: user id of the process owner. Cred.Gid: group id of the process name. Cred.Euid: effective user if of the process owner. Cred.Egid: effective group id of the process owner. Exe.name: full path name of the process executable. Exe.Cwd: currnet working directory of the process. Args.*: command line argument passed to the process. Env.*: environment varibale within the process. Module.*: shared library loaded within the process.
1.2.3 PTQL構築
The process of building a process query will vary depending on the application and the need to identify a unique peocess or group of processes. For these examples, we will use sigar shell. The sigar shell is started using the folling command.
第1節でダウンロードしたパッケージは、
The help command will show rhe complete list of top-level commands. We will focus on the handful that are useful for building PTQL queries: ps: process status. pargs: process arguments. penv: process environment. pfile: process file information. pinfo: other process info.
Each of the commands listed above require an argument of rither a process id or PTQL query.** For certain commands like ps you can use tab completion in the shell to see the possilble values.**(tabキーで補完)
2、サービス側sigarの使用
2.1 Simple Process Identification
The simplest of queries can use 'State.Name', the basename of the process executable, to indetify a process. For example, the cron daemon on a linux system.
This approach works to uniquely identify other daemons, such as 'syslogd', 'dhclient' and others where there should only be 1 process with the given name. However, in the case of a daemon such as sshd, there will likely be multiple instances:
The easiest way to find the listening sshd server is to use the pid file:
2.2 Identifying a Unique Java Process
'State.Name' may be enough to identify certain processes, but this is almost never the case with java applications, where the executable basename is 'java' for all applications:
To view the command line arguments for a specific process:
For most java applications, the main class name can be used to uniquely identify the process, in this case argument 2 is the sigar main class name:
3、jmeterのPTQL文の作成
jmeterは、上記の構文を直接コピーして貼り付け、サービス側でクエリーのたびに1つの文しかクエリーできないことを保証します.
4、感謝
Sigarは、サーバメモリ、IP、CPU、IO、MACアドレス、オペレーティングシステム等の情報を取得する
Sigarコマンドのクエリー方法PTQL構文
1、sigar
1.1 sigar
Sigar(system information gather and report)は、Hyperic-hq製品のベースパッケージであり、Hyperic HQの主なデータ収集コンポーネントである.多くのプラットフォームからシステムと処理情報を収集するために使用される.これらのプラットフォームには、Linux、Windows、Solaris、AIX、HP-UX、FreeBSD and Mac OSXが含まれる.
SigarにはC,C#,JavaとPerl APIがあり,java版のAPIはsigar.jar sigar.JArの最下位層はC言語で記述され,オペレーティングシステムAPIをローカルメソッドで呼び出してシステム関連データを取得する.
jmeterのPerfMonプラグインは,このパケットに依存したデータ収集である.
Sigarダウンロードアドレス
1.2 PTQL
1.2.1 PTQL構文
Hyperic SIGARはプロセスを位置決めするメカニズムを提供します.プロセステーブルクエリ言語と呼ばれる-PTQL(process table query language).すべてのオペレーティングシステムは実行中のプロセスにPIDを割り当てますが、このプロセス番号はランダムな数字で、プログラムを起動するたびにランダムに可変になります.したがって、プロセス番号でプログラムを位置決めすることはできません.PTQLはプロセスの属性値を使用してプログラムを位置決めします.これらの属性値はずっと変わらない.
ptqlの構文フォーマットクラスは次のとおりです.
Class.Attribute.operator=value
クエリー条件にスペースがある場合は、二重引用符で囲む必要があります.
sigar> ps "Exe.Name.ct=Program Files"
Mutiole queries must delimited by a comma.複数のクエリー間でカンマで接続を区切ります.
1.2.2 PTQL属性
The attributes used in PTQL are directly from the sigar.Proc* classes. This document will outline the attributes most commonly used for identifying process. the complete set of Proc* classes and attributes can be found in the Sigar javadoc.
1.2.3 PTQL構築
The process of building a process query will vary depending on the application and the need to identify a unique peocess or group of processes. For these examples, we will use sigar shell. The sigar shell is started using the folling command.
第1節でダウンロードしたパッケージは、
sigar-bin/lib
ディレクトリのsigar.jar
とlibsigar-amd64-linux.so
ファイルをコピーし、この依存ファイルは自分のオペレーティングシステムによって交換され、java環境がインストールされていることを保証すればよい.#
[root@localhost sigar]# ls
libsigar-amd64-linux.so sigar.jar
#
[root@localhost sigar]# java -jar sigar.jar
sigar>
The help command will show rhe complete list of top-level commands. We will focus on the handful that are useful for building PTQL queries:
Each of the commands listed above require an argument of rither a process id or PTQL query.** For certain commands like ps you can use tab completion in the shell to see the possilble values.**(tabキーで補完)
2、サービス側sigarの使用
2.1 Simple Process Identification
The simplest of queries can use 'State.Name', the basename of the process executable, to indetify a process. For example, the cron daemon on a linux system.
sigar> ps "State.Name.eq=crond"
15908 root Sep6 123M 1.6M 964K S 0:8 /usr/sbin/crond
This approach works to uniquely identify other daemons, such as 'syslogd', 'dhclient' and others where there should only be 1 process with the given name. However, in the case of a daemon such as sshd, there will likely be multiple instances:
sigar> ps "State.Name.eq=sshd"
925 root Aug22 104M 4.0M 3.1M S 0:56 /usr/sbin/sshd
27275 root Oct29 142M 5.1M 3.8M S 0:0 sshd: root@pts/1
The easiest way to find the listening sshd server is to use the pid file:
sigar> ps "Pid.PidFile.eq=/var/run/sshd.pid"
925 root Aug22 104M 4.0M 3.1M S 0:56 /usr/sbin/sshd
2.2 Identifying a Unique Java Process
'State.Name' may be enough to identify certain processes, but this is almost never the case with java applications, where the executable basename is 'java' for all applications:
sigar> ps "State.Name.sw=java"
1422 root Sep21 21G 3.9G 16M S 519:34 java:/opt/server/cynosure/cynosure-1.0.0-SNAPSHOT.jar
4251 root 09:35 11G 35M 12M S 0:0 java:org.hyperic.sigar.cmd.Runner
25496 root Sep11 11G 218M 12M S 32:54 java:clojure.main
25683 root Sep11 13G 407M 12M S 46:30 java:clojure.main
To view the command line arguments for a specific process:
sigar> pargs 4251
pid=4251
exe=/home/qszhao2/jdk/bin/java
cwd=/home/qszhao2/sigar
0=>java<=
1=>-jar<=
2=>sigar.jar<=
------------------------
For most java applications, the main class name can be used to uniquely identify the process, in this case argument 2 is the sigar main class name:
sigar> ps "State.Name.eq=java,Args.2.eq=sigar.jar"
4251 root 09:35 11G 35M 12M S 0:1 java:org.hyperic.sigar.cmd.Runner
3、jmeterのPTQL文の作成
jmeterは、上記の構文を直接コピーして貼り付け、サービス側でクエリーのたびに1つの文しかクエリーできないことを保証します.
4、感謝
Sigarは、サーバメモリ、IP、CPU、IO、MACアドレス、オペレーティングシステム等の情報を取得する
Sigarコマンドのクエリー方法PTQL構文