cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Moved:

Will Dynatrace OneAgent interfere with Golang Technology enabled since kubernetes is written in Go for app written in Go

Markie_Duby
Dynatrace Enthusiast
Dynatrace Enthusiast

Hello, I am moving this topic to the broader Q&A Forums so you can get technology specific assistance.

4 REPLIES 4

++ following

Certified Dynatrace Professional | Certified Dynatrace Services - Observability | Dynatrace Partner yourcompass.ca

gopher
Mentor

Hi @Markie_Duby 

Generally not, but there will be certain time where  this can happen, please refer to: 
Known limitations for Go support - Dynatrace Docs

When on k8s, this can at times be an issue, but it is has been my experience it is mostly with workload Go Apps, not k8s provided ones.  

However, since you can't exclude based on technology, there are a couple of approaches that you can take to help minimise this impact.

First is to use an opt-in based approach (monitor nothing by default). 
This is done by setting up a webhook label, and only applying that label to a namespace where you want monitored.  Configure monitoring for namespaces and pods - Dynatrace Docs, this way only workloads that require Dynatrace will get it. 
This is a little more work on deployment teams, but they can add it into their build templates. They can also go fine grain on specific deployments and or containers.  If their GO app is not compatible, then it can be excluded.
  
Second - which is is an opt-out based approach (monitor everything by default). 

In the Dynakube CRD, you can set up a rule like below for metadata enrichment and one agent (both need to be the same or else injection will occur anyway)   
---

    ### Excluded Namespace - must be added to metadata enrichment as well ##
      namespaceSelector:
       matchExpressions:
          - keykubernetes.io/metadata.name
            operatorNotIn
            values:
             # kubernetes
             - calico-apiserver
             - calico-system
             - cluster-operation            
             - default                    
             - kube-node-lease
             - kube-public
             - kube-system
             - tigera-operator
             # container squad
             - gatekeeper-system
             - istio-system
             - tlsrouter              
             # Services and Agents  
             - crossplane-system            
             # application namespaces

             - namespace-A

This will then exclude monitoring from the k8s critical components (where most of the go is) and anything else you might not want monitored, whilst monitoring all the workload by default.
This will also help protect your platform from not crashing (something we have had outstanding issues with when the oneagent-init container fails - e.g proxy issue).

Should you come across any issues and you want to exclude (same as any other deployment) you can always add the relevant annotation 'oneagent.dynatrace.com/inject: "false"' to the deployment and or container specs.

Hope this helps. 

bhantol
Participant

Thank you but I do not have reply privileges in Q&A it seems.

Markie_Duby
Dynatrace Enthusiast
Dynatrace Enthusiast

@bhantol You should be able to reply in the new thread.  If you are having issues please reach out to the Community team at team-community@dynatrace.com 

Featured Posts