Peco Karayanev Bryan Wynns
The new app stacks Docker Kubernetes OpenShift AWS EC2 Docker Pivotal CloudFoundry Microsoft Azure Docker OpenStack VMWare
Container adoption
Challenges in cloud native environments
Easier said than done Container monitoring soup METRICS LOGS TRACING
Easier said than done
Simple and easy full stack monitoring for cloud native apps Analytics One agent instrumenting container, app, wire, eue, system and app log data One backend and web UI for integrated analytics Non-intrusive instrumentation of container apps Automatic discovery of apps and containers and their relationships NODE POD CONTAINER CONTAINER POD CONTAINER CONTAINER
Pivotal Architecture
Pivotal terms Cell (aka Diego Cell) a VM Garden a logical grouping of VMs/Cells Container Ubuntu / Docker container OpsManager UI console for managing PCF platform AppsManager UI console for managing / deploying apps Tile/Service Tile Packaging of all bits for a given service/third party service Bosh add-on Software that you deploy on the Cells/VMs. In recent version this is done automatically with the tile Build pack Software packaging downloaded and installed as an app
Appinternals architecture on PCF
Getting started AppInternals on Pivotal (Pivotal Network Pivnet) https://network.pivotal.io/products/riverbed-appinternals/ PCF Tile containing agent
Admin Setup steps Enable AppInternals service on a PCF environment One-time steps in the PCF environment: 1. In PCF Ops Manager, import the tile. 2. In PCF Ops Manager, configure the tile to specify connection details for the analysis server that will host the agent data. 3. In Pivotal Apps Manager, create an instance of the AppInternals service.
1. Import tile in Ops Manager
2. Configure tile
3. Create AI instance service
Application Setup steps Enable AppInternals instrumentation for different apps Steps for each application (repeat these steps when the application changes): 1. In your development environment or staging area, use the Cloud Foundry CLI to push the application from your environment to PCF. 2. Bind the application to the AppInternals service instance. 3. In your development environment or staging area, use the Cloud Foundry CLI to restage the application.
1. Deploy an app in using cf CLI
2. Bind the AI service to the app in Apps Manager 1.Log in to the Pivotal Apps Manager and navigate to your application. 2.Select your application instance and click on the Services tab. 3.Click on BIND SERVICE.
3. Restage/restart the app
4. Optional You may need to override the default java buildpack (where our instrumentation lives) with a custom buildpack for older versions
Node (host VM where containers run) Pod (logical container group) Container (applications run in the container)
Openshift Node (Host) Use the profiler socket for instrumentation Move /opt/panorama/hedzup/mn/metadata/ext/process.profilersockets.json to its parent directory /opt/panorama/hedzup/mn/metadata Go to /opt/panorama/hedzup/mn/userdata/config and copy initial-mapping.template into initial-mapping Add include:* config:default+config.json" at the end of initial-mapping Copy /mn/support/config/default+config.json to /opt/panorama/hedzup/mn/userdata/config Restart Agent
Openshift Node (Host) Use the profiler socket for instrumentation On the master get yaml file for the pod oc get pod s2i-spring-boot-cxf-jaxws-1-jz629 -o yaml --export > agent.yaml Add to yaml file Values may change according to your environment Create new pod with the yaml file oc create -f agent.yaml
Instrumented pod
AWS Elastic Container Service Architecture Container EC2 Host
EC2 Instance setup (part of ECS cluster) Install host agent 1. Normal linux agent install sh linuxmn.bin -silentinstall silent_install.properties 2. Start the linux agent /opt/apps/ai/panorama/hedzup/mn/dsactl start
Container setup (part of Task definition) Configure container for instrumentation 1. Create a new Task Definition or a new Revision 2. Create a new Volume with Source Path where you installed the host agent
Container setup (part of Task definition) Configure container for instrumentation 3. Create/edit a container and specify app repo 4. Create a new mount point with source mount we defined in step 3 5. Create a new env variable pointing to the location of instr lib: -agentpath:/opt/panorama/hedzup/mn/lib/librpilj64.so