tagRule設定
タグ(Tag)は、モニタリング対象サーバーから収集されたデータをグループ単位で表示するための基準になります。 NPMで最も重要な要素は可視性です。 グループ化は、ネットワークという不規則で多様な情報があふれる環境で、可視性を確保するための必須要素です。
エージェントは、Raw DataにIPアドレスおよびPort(Source、Target)、Host Name、Process Name情報をキーとして収集します。 収集し た情報に基づいて、トポロジーまたはチャートに表示するノードのグループ単位を設定できます。
エージェントから収集するデフォルトタグに加えて、ユーザーが簡単に変更して適用できるルールを作成しました。 エージェントインストールパス(/usr/whatap/whatap-npmd)のtagRule.yamlファイルを修正して、オプションを適用します。
tagRuleオプション
tagRuleオプションが適用された結果は、ダッシュボード >ネットワークトポロジーメニューで確認できます。 グループ化により、複雑で不規則なネットワーク間の関連性を単純化し、抽象化されたネットワークの性能を可視化してモニタリングできます。
-
tagRuleオプションが適応されたノードです。 長くて複雑なプロセス名を簡素化してノードに表示します。
-
tagRuleオプションが適応されていないノードです。 どんなプロセスなのか把握しにくいのでノードのようにtagRuleオプションを適用して、プロセス名を簡素化する必要があります。
-
ノードは、そのホストおよびプロセス情報を取得できない場合です。 詳細については、次の文書を参照してください。
プロセス名の簡素化
オプション:processRegex
名前が不明な長いプロセス名を簡素化します。 例えばJava Processの場合、次のようにJVM実行オプションなどを含みます。
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
上記の場合、トポロジーやチャート上に名前を表示しても把握しにくいため、エージェントから最大限に必要な部分だけを抽出して使用します。 次の例を参照してオプションを適用します。
processRegEx:
- zookeeper
- whatap_[a-zA-Z]*
processRegex
オプションは、次のルールで名前を抽出します。
-
Javaは実行jarファイル名またはメソッド名
-
Pythonは実行スクリプト名
ただし、抽出後もプロセス名が長い場合は、オプションで減らすことができます。 正規表現で入力でき、ルールが複数ある場合、最も長くマッチングされた文字列が選択されます。
短いルールを多数使用する場合は、意図していないプロセスがタギングされます。 固有の名前ルールを使用してください。
プロセスのホワイトリスト(White List)
オプション:processWhiteList
収集対象のプロセス一覧を設定します。 該当オプションを通じて指定されたプロセス以外のデータはすべて無視します。
processWhiteList:
- zookeeper
- whatap_[a-zA-Z]*
processRegEx
オプションを利用すると、OSの名前よりも正規表現にマッチングされた名前が優先されます。
プ ロセスのブラックリスト(Black List)
オプション:processBlackList
収集しないプロセス一覧を設定します。 このオプションを通じて、指定されたプロセスデータを無視します。 processWhiteList
とprocessBlackList
がすべて利用中の場合、processWhiteList
の一覧の中から processBlackList
に該当する一覧を除いてデータを収集します。
例えば、zookeeper、whatap_npmd、whatap_infradの3つのプロセスが動作しているときに、次のオプションを適用するとzookeeperとwhatap_infradの2つのプロセス情報を収集します。
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.yamlappName:
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_tag
、process_type
、ip
、port
です。 -
入力されていないKeyはワイルドカードとして適用されます。
appName
オプションでマッチングされていない場合、appNameDefault
オプションで定義されたフィールドまたは値が適用されます。
-
appNameDefault
にはデフォルトで使用するkeyを入力してください。 -
host_tag
、process_type
のいずれかを入力すると、そのフィールド情報がappName
に自動付与され、もしその他のString値を入力すると、その値に固定されます。
appNameDefault: host_tag # host_tag, process_type, custom string
不明な対象区分
オプション:untagOption
CSP(クラウドサービスプロバイダー)が提供するELB、外部に要請するAPIなどエージェントがインストールされていない対象と通信する場合、そのホストおよびプロセスの情報を取得できません。 システム運用者が知っている(または管理対象の)IP、Port情報に基づいてタグを設定できます。
もしエージェントもインストールされず、そのオプションにも定義されていないIP、Portと通信する場合、トポロジーではuntaggedというノードで表示されます。
IPとPortをキーでタグを設定し、Inboundトラフィックの場合、外部PortがClientポートで固定されたサービスポートではないため、'0'に設定して入力してください。
untagOption:
15.165.146.117:
6600: "whatap-proxy"
172.31.24.16:
0: "ELB app/New-gitlab/5fe1a93082df3495"