JavaAgent Introduction
To see the final injected agent’s configuration, we define a CustomDefinitionResource called JavaAgent.
When the pod is injected, the pod will be labeled with sidecar.skywalking.apache.org/succeed
, then the controller will watch the specific pod labeled with sidecar.skywalking.apache.org/succeed
. After the pod is created, the controller will create JavaAgent(custom resource), which contains the final agent configuration as below.
Spec
Field Name | Description |
---|---|
podSelector | We hope users can use workloads to create pods, the podSelector is the selector label of workload. |
serviceName | serviceName is an important attribute that needs to be printed. |
backendService | backendService is an important attribute that needs to be printed. |
agentConfiguration | agentConfiguration contains serviceName、backendService and covered agent configuration, other default configurations will not be displayed, please see agent.config for details. |
Status
Field Name | Description |
---|---|
creationTime | The creation time of the JavaAgent |
lastUpdateTime | The last Update time of the JavaAgent |
expectedInjectiedNum | The number of the pod that need to be injected |
realInjectedNum | The real number of injected pods. |
Demo
This demo shows the usage of javaagent. If you want to see the complete process, please see java-agent-injector-usagefor details.
When we use java-agent-injector, we can get custom resources as below.
$ kubectl get javaagent -A
NAMESPACE NAME PODSELECTOR SERVICENAME BACKENDSERVICE
default app-demo1-javaagent app=demo1 Your_ApplicationName 127.0.0.1:11800
default app-demo2-javaagent app=demo2 Your_ApplicationName 127.0.0.1:11800
$ kubectl get pod -l app=demo1
NAME READY STATUS RESTARTS AGE
demo1-bb97b8b4d-bkwm4 1/1 Running 0 28s
demo1-bb97b8b4d-wxgs2 1/1 Running 0 28s
$ kubectl get pod -l app=demo2
NAME READY STATUS RESTARTS AGE
app2-0 1/1 Running 0 27s
app2-1 1/1 Running 0 25s
app2-2 1/1 Running 0 23s
If we want to see more information, we can get the specific javaagent’s yaml as below.
$ kubectl get javaagent app-demo1-javaagent -oyaml
apiVersion: operator.skywalking.apache.org/v1alpha1
kind: JavaAgent
metadata:
creationTimestamp: "2021-10-14T07:07:12Z"
generation: 1
name: app-demo1-javaagent
namespace: default
ownerReferences:
- apiVersion: apps/v1
blockOwnerDeletion: true
controller: true
kind: ReplicaSet
name: demo1-bb97b8b4d
uid: c712924f-4652-4c07-8332-b3938ad72392
resourceVersion: "330808"
selfLink: /apis/operator.skywalking.apache.org/v1alpha1/namespaces/default/javaagents/app-demo1-javaagent
uid: 9350338f-15a5-4832-84d1-530f8d0e1c3b
spec:
agentConfiguration:
agent.namespace: default-namespace
agent.service_name: Your_ApplicationName
collector.backend_service: 127.0.0.1:11800
backendService: 127.0.0.1:11800
podSelector: app=demo1
serviceName: Your_ApplicationName
status:
creationTime: "2021-10-14T07:07:12Z"
expectedInjectiedNum: 2
lastUpdateTime: "2021-10-14T07:07:14Z"
realInjectedNum: 2