Install Core Services

Install AppDynamics Services in the cluster by running the profile-specific appdcli command.

  1. Log in to the cluster node console.
  2. Run the command to install services:
    Small Profile
    CODE
    appdcli start appd small
    Medium Profile
    CODE
    appdcli start appd medium
    Large Profile
    CODE
    appdcli start appd large
    Extra Large Profile
    CODE
    appdcli start appd xlarge

    This command installs the Splunk AppDynamics services. We recommend that you specify the Virtual Appliance profile as same as the profile that you selected to create a virtual machine. See Virtual Appliance Sizing.

  3. Verify the status of the installed pods and service endpoints:
    Pods
    CODE
    kubectl get pods --all-namespaces
    Endpoints
    CODE
    appdcli status application

    Sample Output

    CODE
    +-----------------------------------------+---------------+
    |                 Service                 |    Status     |
    +=========================================+===============+
    | Hybrid Controller                       | Reachable     |
    +-----------------------------------------+---------------+
    | Controller                              | Not Installed |
    +-----------------------------------------+---------------+
    | Events                                  | Not Installed |
    +-----------------------------------------+---------------+
    | EUM Collector                           | Not Installed |
    +-----------------------------------------+---------------+
    | EUM Aggregator                          | Not Installed |
    +-----------------------------------------+---------------+
    | EUM Screenshot                          | Not Installed |
    +-----------------------------------------+---------------+
    | Synthetic Shepherd                      | Not Installed |
    +-----------------------------------------+---------------+
    | Synthetic Scheduler                     | Not Installed |
    +-----------------------------------------+---------------+
    | Synthetic Feeder                        | Not Installed |
    +-----------------------------------------+---------------+
    | Metrics Reader                          | Not Installed |
    +-----------------------------------------+---------------+
    | Metrics Rollup and Purger               | Not Installed |
    +-----------------------------------------+---------------+
    | Data Ingestion                          | Not Installed |
    +-----------------------------------------+---------------+
    | Anomaly Detection / Root Cause Analysis | Not Installed |
    +-----------------------------------------+---------------+
    | Cisco Secure Application                | Not Installed |
    +-----------------------------------------+---------------+
    | Automated Transaction Diagnostics       | Not Installed |
    +-----------------------------------------+---------------+
    | AI Insights / AI Assistant              | Not Installed |
    +-----------------------------------------+---------------+
    | Log Connect                             | Not Installed |
    +-----------------------------------------+---------------+
    | Monitoring Agent                        | Not Installed |
    +-----------------------------------------+---------------+
    | VA Model Context Protocol               | Not Installed |
    +-----------------------------------------+---------------+
    | AppDynamics Model Context Protocol      | Not Installed |
    +-----------------------------------------+---------------+

    You can also access the endpoint URL to verify the installation. See Verify the Service Endpoints Paths.

Note: When a Virtual Machine restarts, the MySQL service may not automatically restore. To troubleshoot this issue, see Restore the MySQL Service.

Configure the Controller Properties by Using the Kubernetes Cluster CLI

Configure Controller properties by using the Kubernetes cluster CLI after installing services.

Ensure that you have the latest CA certificates obtained after installing services. If not, update the CA certificates and regenerate the hybrid configuration file after restarting the service.

  1. Log in to your Kubernetes cluster.
  2. Run the command to update the standalone Controller properties:
    CODE
    appdcli run bootstrap_hybrid

    This command configures the anomaly-detection, Kafka, schema-registry, and hybrid service properties on the standalone Controller. Review the command output and confirm that URLs and node-port addresses match your environment.

    CODE
    Key: anomaly.detection.enabled, Value: true
    Key: anomaly.detection.deployed.onprem, Value: true
    Key: controller.id, Value: onprem
    Key: controller.unique.id, Value: onprem
    Key: anomaly.detection.kafka.consumer.group.id, Value: pi-alarmservice-transition-consumer-group-onprem
    Key: anomaly.detection.kafka.consumer.topic, Value: pi-alarmservice-transition-onprem
    Key: anomaly.detection.kafka.producer.topic, Value: metadata-lifecycle-events
    Key: anomaly.detection.onprem.output.topic, Value: blitz-processed-metrics
    Key: anomaly.detection.schema.registry.enabled, Value: true
    Key: anomaly.detection.consumer.schema.registry.url, Value: https://10.0.0.1.nip.io/schemaregistry
    Key: anomaly.detection.producer.schema.registry.url, Value: https://10.0.0.2.nip.io/schemaregistry
    Key: anomaly.detection.kafka.consumer.bootstrap.servers, Value: 10.0.0.1:32101
    Key: anomaly.detection.kafka.producer.bootstrap.servers, Value: 10.0.0.2:32102
    Key: anomaly.detection.kafka.producer.ssl.enabled, Value: true
    Key: anomaly.detection.kafka.consumer.ssl.enabled, Value: true
    Key: anomaly.detection.service.url, Value: https://10.0.0.1.nip.io/pi

    Alternatively, you can access the administration console by using the Kubernetes cluster IP address and manually edit each parameter.

    Note: Changes do not take effect until you restart the Controller.

Configure the Standalone Controller for Hybrid Connectivity

Complete these checks before running the script:

  • Extract the generated hybrid-config archive on the Controller host.
  • Run the script from inside the extracted hybrid-config directory.
  • Identify the actual Controller home: The directory containing db/, tools/, and appserver/.

    Tip: /home/appdynamics/appdynamics/platform/controller. The suggested default is /opt/appdynamics/platform/product/controller, but the installation path can vary.
  • Obtain the DNS name configured as hybrid.mysql.dbHost in the Virtual Appliance.
  • Use an account with permission to update the Controller and MySQL certificate files.

Controller home example: /home/appdynamics/appdynamics/platform/controller. The suggested default is /opt/appdynamics/platform/product/controller, but the installation path can vary.

  1. Change to the extracted configuration directory and run the script:
    CODE
    cd ~/hybrid-config
    bash configure.sh
  2. Enter the actual Controller home when prompted:
    CODE
    Controller home [/opt/appdynamics/platform/product/controller]: /path/to/platform/controller
    Note: If the Controller home is rejected, verify that the directory contains db/db.cnf.
  3. Review the proposed changes, then enter y to continue:
    CODE
    This operation will:
      - Replace the Kafka and Schema Registry client truststores
      - Update the Controller CA truststore
      - Write obfuscated Kafka producer and consumer configuration
      - Replace the MySQL server certificate after creating a backup
    
    Continue? [y/N]: y
  4. Confirm the reachable Controller address.
    The script detects a local IPv4 address. Confirm that the Virtual Appliance cluster can reach this address. Enter n to provide a different address.
    PYTHON
    Detected Controller IP: 192.0.2.10
    Is this address reachable from the Virtual Appliance cluster? [Y/n]: y
  5. Provide the hybrid database DNS name.
    Enter the exact hostname configured as hybrid.dbHost. The script adds this value to the MySQL certificate Subject Alternative Name (SAN).
    CODE
    DNS name [192.0.2.10.nip.io]: controller.example.com

Keystore password behavior: The script first tries the standard keystore password, changeit. If that password cannot open the existing Controller CA truststore, the script prompts securely for the configured password. Typed password characters are not displayed.

The selected password is used consistently for:

  • The Kafka client truststore.
  • The Schema Registry client truststore.
  • The existing Controller CA truststore.
  • The truststore-password fields in the obfuscated producer and consumer configurations.
Note: If the keystore password is rejected, provide the password currently configured for appserver/jetty/etc/cacerts.jks.

Changes made by the script:

Item Location relative to Controller home Action
Kafka client truststore pi-kafka-ssl-config/kafka.client.truststore.jks Created or replaced using kafka-ca.crt.
Schema Registry client truststore pi-kafka-ssl-config/schema-registry.client.truststore.jks Created or replaced using schema-registry-ca.crt.
Controller CA truststore appserver/jetty/etc/cacerts.jks Replaces the k8s-cluster alias with schema-registry-ca.crt.
Kafka client configurations pi-kafka-ssl-config/AnomalyDetectionKafka* Writes obfuscated producer and consumer configuration.
MySQL server certificate Database data directory from db/db.cnf Generates a 365-day certificate containing the supplied DNS SAN.
Before replacement, the script creates timestamped backups of the Controller CA truststore and the existing MySQL server certificate. The final summary displays the complete backup paths.
Note: Use the timestamped backup paths printed by the script when following an approved rollback procedure.

If the configuration is successful, the following message will be displayed:

CODE
Hybrid Controller configuration completed successfully.
Important:

After the script completes successfully, restart the Controller and its MySQL service. The Controller truststore and MySQL certificate changes do not take effect until the affected services are restarted.

Restart the Standalone Controller

Restart the Standalone Controller and MySQL service after completing configuration changes.

  • Run the following command to restart the standalone Controller:
    CODE
    cd ~/appdynamics/platform/product/controller/bin/
    ./controller.sh stop
    ./controller.sh start

    This command also restarts the MySQL service.

    Alternatively, you can restart the controller from Enterprise Console. See Start or Stop the Controller.

  • For high-availability scenario, you must use Enterprise Console to restart the controller. See Start or Stop the Controller.