In certain troubleshooting scenarios, it may be necessary to gather specific logs and configuration files for Appian Support. This article will help users find where the requested information inside their Appian on Kubernetes install.
For any feedback or issue related to the commands' utilization, please feel free to include in your support case.
Based on the requested files, please ensure the following:
<namespace>
<pod-name>
<your_appian>
Note: Copying logs from Kubernetes pods, especially large files, may temporarily cause fluctuation to node performance. To minimize impact, consider running log collection during low-traffic periods and monitoring node resource usage while transferring large files.
Note: The information equivalent to build.info, custom.properties, tomcatResources.xml, appian-topology.xml will all be included in the same command output. Only one copy of appian-cr.yaml needs to be uploaded to the support case.
build.info
kubectl -n <namespace> get appian <your_appian> -o yaml > appian-cr.yaml
/usr/local/appian/ae/conf/
custom.properties
passwords.properties
kubectl -n <namespace> get secret
kubectl -n <namespace> get secret passwords-properties -o yaml > passwords-properties.yaml
tomcatResources.xml
appian-topology.xml
Health & Status
kubectl -n <namespace> exec -it <any-engine-pod-name> -- /bin/bash -c "/usr/local/appian/ae/serviceManagerScriptWrapper.sh services/bin/status.sh -c" > service_manager_health.txt
Service Manager Logs
kubectl -n <namespace> get pods -o name | grep 'service-manager' | while read pod; do pod_name=${pod#pod/}; kubectl -n <namespace> cp $pod_name:/usr/local/appian/ae/logs/service_manager.log ./$pod_name.log; done && tar -cf service_manager-$(date +%Y%m%d).tar *service-manager*.log && rm -r *service-manager*.log
Engine Logs
kubectl -n my-appian-site get pods -o name | grep 'service-manager' | while read pod; do pod_name=${pod#pod/}; echo $pod_name; latest_db_log=$(kubectl -n my-appian-site exec "$pod_name" -- bash -c "ls -t /usr/local/appian/ae/logs/db_*.log 2>/dev/null | head -n1"); echo $latest_db_log; kubectl -n my-appian-site cp "$pod_name":/"$latest_db_log" ./logs/"$pod_name"_"$latest_log".log; done && tar -cf engine_logs-$(date +%Y%m%d).tar logs/ && rm -r logs/
Kafka Logs
kubectl -n <namespace> exec -it <kafka-pod-name> -- /bin/bash -c "cd /usr/local/appian/ae && tar -cvf kafka.tar kafka/logs"
kubectl -n <namespace> cp <kafka-pod-name>:/usr/local/appian/ae/kafka.tar ./kafka-$(date +"%Y%m%d").tar
Zookeeper Logs
kubectl -n <namespace> exec -it <zookeeper-pod-name> -- /bin/bash -c "cd /usr/local/appian/ae && tar -cvf zookeeper.tar zookeeper/logs"
kubectl -n <namespace> cp <zookeeper-pod-name>:/usr/local/appian/ae/zookeeper.tar ./zookeeper-$(date +"%Y%m%d").tar
Health
kubectl -n <namespace> exec -it <data-server-pod-name> -- /bin/bash -c "/usr/local/appian/ae/data-server/bin/health.sh" > data-server-health.txt
ADS Logs
kubectl -n <namespace> exec -it <data-server-pod-name> -- /bin/bash -c "cd /usr/local/appian/ae/logs && find data-server -type f -mtime -3 | tar -cf data-server.tar --files-from=-"
kubectl -n <namespace> cp <data-server-pod-name>:/usr/local/appian/ae/logs/data-server.tar data-server-$(date +"%Y%m%d").tar
kubectl -n <namespace> exec -it <search-server-pod-name> -- /bin/bash -c "curl localhost:9200/_cluster/health?pretty" > search-server-health.txt
Search Server Logs
kubectl -n <namespace> exec -it <search-server-pod-name> -- /bin/bash -c "cd /usr/local/appian/ae/logs && find search-server -type f -mtime -3 | tar -cf search-server.tar --files-from=-"
kubectl -n <namespace> cp <search-server-pod-name>:/usr/local/appian/ae/logs/search-server.tar search-server-$(date +"%Y%m%d").tar
Tomcat Logs
kubectl -n <namespace> exec -it <webapp-pod-name> -- /bin/bash -c "cd /usr/local/appian/ae && find logs/ -type f -name 'tomcat*' -mtime -3 | tar --transform='s|^logs/|tomcat-logs/|' -cf webapp.tar --files-from=-"
RPA Logs
kubectl -n <namespace> exec -it <rpa-pod-name> -- bash -c 'log_dir="/data/tomcat8/logs";catalina_log=$(ls -t $log_dir | grep "catalina" | head -1);localhost_log=$(ls -t $log_dir | grep "localhost\.[0-9]" | head -1);localhost_access=$(ls -t $log_dir | grep "localhost_access_log" | head -1);tar -cvf /tmp/rpa_logs.tar $log_dir/jidoka.log $log_dir/rtdo.log $log_dir/rpdo.log $log_dir/robotRDO.log $log_dir/$catalina_log $log_dir/$localhost_log $log_dir/$localhost_access'
kubectl -n <namespace> cp <rpa-pod-name>:/tmp/rpa_logs.tar rpa-$(date +"%Y%m%d").tar
Performance Logs
kubectl -n <namespace> exec -it <webapp-pod-name> -- /bin/bash -c "cd /usr/local/appian/ae/logs && find perflogs -type f -mtime -1 | tar -cf perflogs.tar --files-from=-"
kubectl -n <namespace> cp <webapp-pod-name>:/usr/local/appian/ae/perflogs.tar perflogs$(date +"%Y%m%d").tar
Data Metrics Logs
kubectl -n <namespace> exec -it <webapp-pod-name> -- /bin/bash -c "cd /usr/local/appian/ae/logs && find data-metrics-type f -mtime -1 | tar -cf data-metrics.tar --files-from=-"
kubectl -n <namespace> cp <webapp-pod-name>:/usr/local/appian/ae/data-metrics.tar data-metrics-$(date +"%Y%m%d").tar
Long Running Work Items Logs
kubectl -n <namespace> cp <webapp-pod-name>:/usr/local/appian/ae/long-running-work-items.log long-running-work-items-$(date +"%Y%m%d").log
This article applies to all versions of self-managed Appian on Kubernetes.
Last Reviewed: March 2025