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.Attribute.operator=value

クエリー条件にスペースがある場合は、二重引用符で囲む必要があります.
sigar> ps "Exe.Name.ct=Program Files"
  • 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節でダウンロードしたパッケージは、sigar-bin/libディレクトリのsigar.jarlibsigar-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:
  • 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.
    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構文