install-kafka

前提条件

  • SixthSense コレクターのURL/IP(カスタマーサポートから提供されるテナントURL)
  • SixthSense ポータルからのアクセストークン
  • SixthSense JMX エージェント(JRE 1.8 以上)
  • Kafka の JMX ホストとポートの詳細

Kafka 監視の有効化

SixthSense エージェントにより Kafka がリモート監視されます。つまり、エージェントは別プロセスとして実行され、Kafka が公開する JMX ポートに接続してメトリクスを取得します。以下の手順にて Kafka 監視を有効化します:

  1. 環境変数 / JVM 引数を使用し、Kafka のリモート JMX サポートを有効化します。

    • (オプション) JMX リモート監視用に Kafka が公開するポートで認証を有効化します。

    • JMX リモートサポートは、環境変数または JVM args を使用して有効化できます。

      a. JMX リモートサポートを有効化するには、”sun.management.jmxremote” を true に設定します。JMX リモートの設定に必須の JVM 引数は以下の通りです。これらの JVM 引数は、再起動後に Kafka によって選択されます。

引数

export KAFKA_OPTS="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=1100"
  1. SixthSense エージェントのダウンロード SixthSense エージェントのダウンロード
  2. SixthSense エージェントの設定 SixthSense エージェントの設定
  3. SixthSense エージェントの実行 SixthSense エージェントの実行

Kafka プロデューサーの監視を有効化する

  1. Kafka プロデューサーのリモート JMX サポートを有効化するには、Java プロデューサーアプリケーションの実行中に環境変数 / JVM args を渡す必要があります。
java -Dcom.sun.management.jmxremote.port=1200
-Dcom.sun.management.jmxremote.rmi.port=1200
-Djava.rmi.server.hostname=127.0.0.1
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false -jar
your_producer_java_application.jar

Kafka コンシューマー監視の有効化

  1. Kafka コンシューマーでリモート JMX サポートを有効化するには、Java プロデューサーアプリケーションの実行中に環境変数 / JVM 引数を渡す必要があります。
java -Dcom.sun.management.jmxremote.port=1500
-Dcom.sun.management.jmxremote.rmi.port=1500
-Djava.rmi.server.hostname=127.0.0.1
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false -jar
your_consumer_java_application.jar

公開ポートでの認証の有効化

これは Java が提供するローカル JMX 認証メソッドによって実行され、認証情報を保存し、ローカルファイルを使用してアクセス制御を行います。

  • jmxremote という新しいフォルダを作成します。
> mkdir -vp /etc/jmxremote
  • このディレクトリ内に、2つのファイルを作成します。

    • password
    • access
  • パスワードファイルには、JMX エージェントがクライアント認証時に確認する認証情報が含まれています。

> cat /etc/jmxremote/jmxremote.password
sixthsense R@kuten@1234
note

この段階では、パスワード 「R@kuten@1234 」を持つユーザー “sixthsense” が登録されます。

  • このアクセスファイルには、誰にどのようなアクションを許可するかという認証情報が格納されます。
> cat jmxremote/jmxremote.access
sixthsense readwrite
  • 両方のファイルのアクセス権を変更し、オーナーのみが編集・閲覧できるようにします。
> chmod -R 600 /etc/jmxremote/jmxremote.*

以下を追加します。 sun.management.jmxremote.authenticate=true, com.sun.management.jmxremote.access.file=/etc/jmxremote/jmxremote.acces”s
com.sun.management.jmxremote.password.file=/etc/jmxremote/jmxremote.password” in JVM_ARGS.

以下の画面が表示されます:

DEBUG_ARGS="-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=127.0.0.1
-Dcom.sun.management.jmxremote.port=9010 "
-Dcom.sun.management.jmxremote.access.file=/etc/jmxremote/jmxremote.access
-Dcom.sun.management.jmxremote.password.file=/etc/jmxremote/jmxremote.password"

エージェントのダウンロード

エージェントをダウンロードするための前提条件

  • オンボーディングチームから提供されるプライベートトークン
  • 特定のバージョンをダウンロードするためのリンク

エージェントをダウンロードするには、以下の手順を実行します:

  1. インターネット / SixthSense からのイングレスが有効であることを確認します。
  2. curl を使用してエージェントをダウンロードします。
curl --header "PRIVATE-TOKEN:{{TOKEN}}" --output sixthsense-jmx-agent.zip "https://artifacts-observability.sixthsense.rakuten.com/api/v4/projects/32/packages/generic/sixthsense-jmx-agent/v1.0/sixthsense-jmx-agent"

エージェントの設定

  1. ダウンロードしたエージェントを解凍します。
  2. agent.config ファイル(Agent フォルダ / config/agent.config ファイル)に移動します。agent.config ファイルに情報を追加することで、エージェントを設定することができます。

以下は、ブローカ、プロデューサ、コンシューマ、JMX ホストとポートの詳細を更新する必要がある agent.config ファイルのセクションを表示しています:

ブローカの設定

brokerConfigs:
- brokerUrl: ${SS_BROKER1_URL:localhost}
name: ${SS_BROKER1_URL:broker1}
brokerPort: ${SS_BROKER1_PORT:1100}
username: ${SS_BROKER1_USERNAME:}
password: ${SS_BROKER1_PASSWORD:}
configType: ${SS_CONFIG_TYPE:kafkabroker}

プロデューサー設定

- brokerUrl: ${SS_BROKER1_URL:localhost}
name : ${SS_BROKER1_URL:producer1}
brokerPort: ${SS_BROKER1_PORT:1200}
username: ${SS_BROKER1_USERNAME:}
password: ${SS_BROKER1_PASSWORD:}
configType: ${SS_CONFIG_TYPE:kafkaproducer}

コンシューマ設定

- brokerUrl: ${SS_BROKER1_URL:localhost}
name : ${SS_BROKER1_URL:consumer1}
brokerPort: ${SS_BROKER1_PORT:1300}
username: ${SS_BROKER1_USERNAME:}
password: ${SS_BROKER1_PASSWORD:}
configType: ${SS_CONFIG_TYPE:kafkaconsumer}

以下は、エージェントの一般設定を更新する必要のある agent.config ファイルのセクションを表示しています:

agentConfig:
serviceName: ${SS_SERVICE_NAME:Artemis}
collectorBackendService: ${SS_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
agentAuthentication: ${SD_AGENT_AUTHENTICATION: <add token here>}
agentForceTls: ${SD_AGENT_FORCE_TLS:true}
logFileName: ${SS_LOGGING_FILE_NAME:sixthsense-api.log}
logLevel: ${SS_LOGGING_LEVEL:INFO}
collectorThreadCount: ${SS_COLLECTOR_THREAD_COUNT:1}
# Logging max_file_size, default: 5 * 1024 * 1024 = 5242880 // 5 MB
logMaxFileSize: ${SW_LOGGING_MAX_FILE_SIZE:5242880}

OneCloud Platform の場合は、以下のコマンドを使用します:

agentConfig:
serviceName: ${SS_SERVICE_NAME:Artemis}
collectorBackendService: ${SS_AGENT_COLLECTOR_BACKEND_SERVICES:133.237.176.44:80}
# For connectivity to backend using onecloud private network: 100.99.116.221:80
# For connectivity to backend using intra public network: 133.237.176.44:80
agentAuthentication: ${SD_AGENT_AUTHENTICATION: <add token here>}
agentForceTls: secure: false
logFileName: ${SS_LOGGING_FILE_NAME:sixthsense-api.log}
logLevel: ${SS_LOGGING_LEVEL:INFO}
collectorThreadCount: ${SS_COLLECTOR_THREAD_COUNT:1}
# Logging max_file_size, default: 5 * 1024 * 1024 = 5242880 // 5 MB
logMaxFileSize: ${SW_LOGGING_MAX_FILE_SIZE:5242880}
note

環境変数を使用して設定された場合、エージェントはこれらの設定値を上書きします。

エージェントの実行

エージェントは別プロセスとして実行され、ActiveMQ artemis が公開するポートに接続されます。以下のコマンドでエージェントを実行します。

> java -jar sixthsense-jmx-agent.jar