本文へスキップ

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

名前が不明な長いプロセス名を簡素化します。 例えばJava Processの場合、次のように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の2つのプロセス情報を収集します。

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"