本文へスキップ

tagRule設定

タグ(Tag)は、モニタリング対象サーバーから収集したデータをグループ単位で表現する基準です。 NPMで最も重要な要素は可視性です。 グループ化は、ネットワークという不規則で多様な情報があふれる環境で、可視性を確保するための必須要素です。

エージェントは、Raw DataにIPアドレスおよびPort(Source、Target)、Host Name、Process Name情報をキーとして収集します。 収集した情報に基づいて、トポロジーまたはチャートに表現するノードのグループ単位を設定できます。

エージェントから収集するデフォルトタグに加えて、ユーザーが簡単に変更して適用できるルールを作成しました。 エージェントインストールパス(/usr/whatap/whatap-npmd)の_tagRule.yaml_ファイルを修正して、オプションを適応できます。

tagRuleオプション

tagRuleオプションが適用された結果は、ダッシュボード >ネットワークトポロジーメニューで確認できます。 グループ化により、複雑で不規則なネットワーク間の関連性を単純化し、抽象化されたネットワークの性能を可視化してモニタリングできます。

Topology Chart

  • tagRuleオプションが適応された数字1ノードです。 長くて複雑なプロセス名を簡素化してノードに表示します。

  • tagRuleオプションが適応されていない数字2ノードです。 どのようなプロセスなのか把握しにくいので数字1ノードのようにtagRuleオプションを適用して、プロセス名を簡素化する必要があります。

  • 数字3ノードは、そのホストおよびプロセス情報を取得できない場合です。 詳細については、次の文書を参照してください。

プロセス名の簡素化

オプション:processRegex

名前が不明な長いプロセス名を簡素化します。 例えばJavaProcessの場合、次のようにjvm実行オプションなどを含みます。

zookeeper process name
java -Dzookeeper.log.dir=/data/wpm/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-whatap-server-Dev-Modules.log -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p -cp /data/wpm/zookeeper/bin/../zookeeper-server/target/classes:/data/wpm/zookeeper/bin/../build/classes:/data/wpm/zookeeper/bin/../zookeeper-server/target/lib/*.jar:/data/wpm/zookeeper/bin/../build/lib/*.jar:/data/wpm/zookeeper/bin/../lib/zookeeper-prometheus-metrics-3.8.0.jar:/data/wpm/zookeeper/bin/../lib/zookeeper-jute-3.8.0.jar:/data/wpm/zookeeper/bin/../lib/zookeeper-3.8.0.jar:/data/wpm/zookeeper/bin/../lib/snappy-java-1.1.7.7.jar:/data/wpm/zookeeper/bin/../lib/slf4j-api-1.7.30.jar:/data/wpm/zookeeper/bin/../lib/simpleclient_servlet-0.9.0.jar:/data/wpm/zookeeper/bin/../lib/simpleclient_hotspot-0.9.0.jar:/data/wpm/zookeeper/bin/../lib/simpleclient_common-0.9.0.jar:/data/wpm/zookeeper/bin/../lib/simpleclient-0.9.0.jar:/data/wpm/zookeeper/bin/../lib/netty-transport-native-unix-common-4.1.73.Final.jar:/data/wpm/zookeeper/bin/../lib/netty-transport-native-epoll-4.1.73.Final.jar:/data/wpm/zookeeper/bin/../lib/netty-transport-classes-epoll-4.1.73.Final.jar:/data/wpm/zookeeper/bin/../lib/netty-transport-4.1.73.Final.jar:/data/wpm/zookeeper/bin/../lib/netty-tcnative-classes-2.0.48.Final.jar:/data/wpm/zookeeper/bin/../lib/netty-tcnative-2.0.48.Final.jar:/data/wpm/zookeeper/bin/../lib/netty-resolver-4.1.73.Final.jar:/data/wpm/zookeeper/bin/../lib/netty-handler-4.1.73.Final.jar:/data/wpm/zookeeper/bin/../lib/netty-common-4.1.73.Final.jar:/data/wpm/zookeeper/bin/../lib/netty-codec-4.1.73.Final.jar:/data/wpm/zookeeper/bin/../lib/netty-buffer-4.1.73.Final.jar:/data/wpm/zookeeper/bin/../lib/metrics-core-4.1.12.1.jar:/data/wpm/zookeeper/bin/../lib/logback-core-1.2.10.jar:/data/wpm/zookeeper/bin/../lib/logback-classic-1.2.10.jar:/data/wpm/zookeeper/bin/../lib/jline-2.14.6.jar:/data/wpm/zookeeper/bin/../lib/jetty-util-ajax-9.4.43.v20210629.jar:/data/wpm/zookeeper/bin/../lib/jetty-util-9.4.43.v20210629.jar:/data/wpm/zookeeper/bin/../lib/jetty-servlet-9.4.43.v20210629.jar:/data/wpm/zookeeper/bin/../lib/jetty-server-9.4.43.v20210629.jar:/data/wpm/zookeeper/bin/../lib/jetty-security-9.4.43.v20210629.jar:/data/wpm/zookeeper/bin/../lib/jetty-io-9.4.43.v20210629.jar:/data/wpm/zookeeper/bin/../lib/jetty-http-9.4.43.v20210629.jar:/data/wpm/zookeeper/bin/../lib/javax.servlet-api-3.1.0.jar:/data/wpm/zookeeper/bin/../lib/jackson-databind-2.13.1.jar:/data/wpm/zookeeper/bin/../lib/jackson-core-2.13.1.jar:/data/wpm/zookeeper/bin/../lib/jackson-annotations-2.13.1.jar:/data/wpm/zookeeper/bin/../lib/commons-io-2.11.0.jar:/data/wpm/zookeeper/bin/../lib/commons-cli-1.4.jar:/data/wpm/zookeeper/bin/../lib/audience-annotations-0.12.0.jar:/data/wpm/zookeeper/bin/../zookeeper-*.jar:/data/wpm/zookeeper/bin/../zookeeper-server/src/main/resources/lib/*.jar:/data/wpm/zookeeper/bin/../conf: -Xmx1000m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /data/wpm/zookeeper/bin/../conf/zoo.cfg

上記の場合、トポロジーやチャート上に名前を表現しても認知しにくいため、エージェントから最大限に必要な部分だけを抽出して使用します。 次の例を参照してオプションを適用してください。

tagRule.yaml
processRegEx:
- zookeeper
- whatap_[a-zA-Z]*

processRegexオプションは、次のルールで名前を抽出します。

  • Javaは実行jarファイル名またはメソッド名

  • Pythonは実行スクリプト名

ただし、抽出後もプロセス名が長い場合は、オプションで減らすことができます。 正規的な表現式の形で入力でき、ルールが複数ある場合、最も長くマッチングされた文字列が選択されます。

注意

短いルールを多数使用する場合は、意図していないプロセスをタギングできます。 固有の名前ルールを使用してください。

プロセスホワイトリスト(White List)

オプション:processWhiteList

収集対象のプロセス一覧を設定します。 該当オプションを通じて指定されたプロセス以外のデータはすべて無視します。

tagRule.yaml
processWhiteList:
- zookeeper
- whatap_[a-zA-Z]*
注意

processRegExオプションを利用すると、オペレーティングシステム(OS)の名前よりも正規的な表現式にマッチングされた名前が優先されます。

プロセスブラックリスト(Black List)

オプション:processBlackList

収集しないプロセス一覧を設定します。 このオプションを通じて、指定されたプロセスデータを無視します。 processWhiteListprocessBlackListがすべて利用中の場合、processWhiteListの一覧の中から processBlackListに該当する一覧を除いてデータを収集します。

例えば、zookeeper, whatap_npmd, whatap_infrad、3 つのプロセスが動作しているときに、次のオプションを適用するとzookeeperとwhatap_infrad、二つのプロセス情報を収集します。

tagRule.yaml
processWhiteList:
- zookeeper
- whatap_[a-zA-Z]*

processBlackList:
- whatap_npmd
注意

processRegExオプションを利用すると、オペレーティングシステム(OS)の名前よりも正規的な表現式にマッチングされた名前が優先されます。

プロセスタイプ(Type)指定

オプション:processType

processTypeオプションは、トポロジーとチャートに表現される最も基本的なグループであるタグです。 主目的は、同じプロセスがバージョンやOS環境によって少しずつ異なる場合、同じ役割を果たすプロセスらを1つのノードとして表現できます。

プロセス名(Process name)をキーとして使用し、マッチングされるタイプを指定する形で使用します。 該当オプションで定義されていないプロセスは、プロセス名(Processname)がプロセスタイプ(Processtype)として自動的に適用されます。

processType:
apache:
- httpd
- apache2
mysql:
- mysqld
- mysqld_safe
注意

processRegExオプションを利用すると、オペレーティングシステム(OS)の名前よりも正規的な表現式にマッチングされた名前が優先されます。

アプリ名(App Name) 指定

オプション:appName

appNameは、トポロジーまたはチャートをユーザーにとって理解しやすい形で表現するためのオプションです。 上記のprocessTypeオプションの場合は、ユーザーの意図とは関係なく、同じプロセスは 1 つのノードに統合(Merge)されて表現されます。 appNameはキーの組み合わせにより、分離して表現したいノードと合わせたいノードを指定し、ユーザーが希望する形のノードを表現できます。

proxy→msa_process→msa_process2→dbにつながるネットワーク構成がオペレーション機/開発機/試験機の3つの目的に分かれている場合を可視化するケースを想定してみます。

  • processTypeオプションで可視化する場合

  • appNameオプションで同じ名称のプロセスらをオペレーション機/開発機/試験機に分離する場合

    tagRule.yaml
    appName:
    prod_proxy: # オペレーション機
    - host_tag: prod_proxy
    process_type: proxy
    prod_msa1: # オペレーション機
    - host_tag: prod_msa
    process_type: msa_process1
    prod_msa2: # オペレーション機
    - host_tag: prod_msa
    process_type: msa_process2
    dev_proxy: # 開発機
    - host_tag: dev_proxy
    process_type: proxy
    dev_msa: # 開発機
    - host_tag: dev_msa
    process_type: msa_process1
    - host_tag: dev_msa
    process_type: msa_process2
    test: # 試験機
    - host_tag: test
    db:
    - process_type: mysql
ノート
  • appName区分で使用可能なkeyはhost_tagprocess_typeipportです。

  • 入力されていないKeyはワイルドカードとして適用されます。

appNameオプションでマッチングされていない場合、appNameDefaultオプションで定義されたフィールドまたは値が適用されます。

  • appNameDefaultにはデフォルトで使用するkeyを入力してください。

  • host_tagprocess_typeのいずれかを入力すると、そのフィールド情報がappNameに自動付与され、もしその他のString値を入力すると、その値に固定されます。

tagRule.yaml
appNameDefault: host_tag # host_tag, process_type, custom string

不明な対象区分

オプション:untagOption

CSP(クラウドサービスプロバイダー)が提供するELB、外部に要請するAPIなどエージェントがインストールされていない対象と通信する場合、そのホストおよびプロセスの情報を取得できません。 オペレーターが知っている(または管理対象)IP、Port情報に基づいてタグを設定できます。

もしエージェントもインストールされず、そのオプションにも定義されていないIP、Portと通信する場合、トポロジーではuntaggedというノードで表現されます。

Untagged

IPとPortをキーでタグを設定し、Inboundトラフィックの場合、外部PortがClientポートで固定されたサービスポートではないため、'0'に設定して入力してください。

tagRule.yaml
untagOption:
15.165.146.117:
6600: "whatap-proxy"
172.31.24.16:
0: "ELB app/New-gitlab/5fe1a93082df3495"