Наблюдаемость приложения с помощью внедрения Pod во время выполнения
Внедрение модуля кода Ключ-АСТРОМ в контейнер во время его развертывания.
Этот метод инструментирования приложений может не полностью связать рабочие нагрузки Kubernetes с отслеживаемыми контейнерами/процессами. Для комплексного анализа взаимосвязей и связывания рассмотрите возможность использования автоматической интеграции только на уровне приложения.
Предустановка
- Ознакомьтесь со списком поддерживаемых приложений и версий.
- Создайте токен доступа с областью действия
PaaS Integration - InstallerDownload. - Требования к хранению:
- ~325 МБ для glibc
- ~290 МБ для musl
- ~650 МБ для glibc и musl вместе взятых
| Внедрение Pod во время выполнения и cgroup v2
Если внедрение Pod во время выполнения используется с cgroup v2, метрики |
Развертка
Чтобы интегрировать ЕдиныйАгент в ваше приложение во время выполнения, выберите один из вариантов ниже в зависимости от вашей платформы.
Linux
ЕдиныйАгент становится доступным для контейнера приложений через initContainer—образ вашего приложения остается неизменным.
Чтобы интегрировать ЕдиныйАгент в ваше приложение во время выполнения, расширьте шаблон развертывания следующим образом.
| # your application containers
containers: - name: customer-app image: tomcat env: - name: LD_PRELOAD value: /opt/astromkey/oneagent/agent/lib64/liboneagentproc.so - name: DT_NETWORK_ZONE value: <your_network_zone> volumeMounts: - mountPath: /opt/astromkey/oneagent name: oneagent # initcontainer to download OneAgent initContainers: - name: install-oneagent image: alpine:latest command: - /bin/sh args: - -c - ARCHIVE=$(mktemp) && wget -O $ARCHIVE "$DT_API_URL/v1/deployment/installer/agent/unix/paas/latest?Api-Token=$DT_PAAS_TOKEN&$DT_ONEAGENT_OPTIONS" && unzip -o -d /opt/astromkey/oneagent $ARCHIVE && rm -f $ARCHIVE env: - name: DT_API_URL value: https://<your-environment-id>.live.astromkey.com/api - name: DT_PAAS_TOKEN value: <Access token with PaaS integration scopes (astromkey -> Access tokens)> - name: DT_ONEAGENT_OPTIONS value: flavor=<FLAVOR>&include=<TECHNOLOGY> volumeMounts: - mountPath: /opt/astromkey/oneagent name: oneagent # Make OneAgent available as a volume volumes: - name: oneagent emptyDir: {} |
- В разделах
# initContainer to download OneAgentи# Make OneAgent available as a volumeдобавьтеinitContainer, который загрузит ЕдиныйАгент и сделает его доступным в виде тома. - В разделе
DT_ONEAGENT_OPTIONSзадайте модуль кода ЕдиногоАгента, необходимый для вашего компилятора (FLAVOR) и приложения (TECHNOLOGY).- Допустимые варианты:
flavor,default,muslилиmultidistro. Выберите загрузкуdefaultдвоичных файловglibcили выберите загрузкуmuslдвоичных файловmusl. Выберите загрузкуmultidistroобоих двоичных файловmuslиglibcс последующим автоматическим определением используемых двоичных файлов. Обратите внимание, что размер образа в этом случае будет больше, поскольку он включает обе версии. - Допустимые варианты
technology:all,java,apache,nginx,nodejs,dotnet,php,go, иsdk. - Для ARM используйте следующее значение:
flavor=default&arch=arm&include=<TECHNOLOGY>. Для других архитектур см. список допустимых значений (прокрутите вниз до параметраarch). - Если вы хотите указать несколько модулей кода, используйте следующий синтаксис:
&include=technology1&include=technology2.
- Допустимые варианты:
| Если вы включите конкретные варианты поддержки технологий вместо вариантов «поддержки всех технологий», вы получите меньший пакет ЕдиногоАгента. |
| Что делать, если образ Docker основан на Alpine Linux?
Ключ-АСТРОМ ЕдиныйАгент поддерживает версию Допустимые варианты |
- В разделе
# your application containersдобавьте созданный том в контейнер вашего приложения. Также добавьте переменную окруженияLD_PRELOAD. необязательноВ разделе# your application containersнастройте сетевые зоны:
| containers:
env: - name: DT_NETWORK_ZONE value: <your_network_zone> |
Более подробную информацию смотрите в разделе Сетевые зоны.
необязательноНастройте прокси-адрес.
Если вы запускаете среду с прокси-сервером, вам необходимо установить переменную среды DT_PROXY в контейнере приложения, чтобы передать учетные данные прокси-сервера в ЕдиныйАгент.
Для контейнеров на базе Alpine Linux вам может потребоваться обновить wget поставляемый с Alpine, чтобы разрешить прокси-аутентификацию для загрузки ЕдиногоАгента.
|
Windows
Расширьте шаблон развертывания следующим образом.
Этот параметр относится к приложениям .NET в контейнерах Windows.
- ЕдиныйАгент версии 1.319 и более ранних
| # your application containers
apiVersion: apps/v1 kind: Deployment metadata: name: sample labels: app: sample spec: replicas: 1 template: metadata: name: sample labels: app: sample spec: nodeSelector: "kubernetes.io/os": windows containers: - name: sample image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp env: #.NET Framework - name: COR_ENABLE_PROFILING value: "0x01" - name: COR_PROFILER value: "{B7038F67-52FC-4DA2-AB02-969B3C1EDA03}" - name: COR_PROFILER_PATH_32 value: "C:\\oneagent\\agent\\lib\\oneagentloader.dll" - name: COR_PROFILER_PATH_64 value: "C:\\oneagent\\agent\\lib64\\oneagentloader.dll" #.NET Core - name: CORECLR_ENABLE_PROFILING value: "0x01" - name: CORECLR_PROFILER value: "{B7038F67-52FC-4DA2-AB02-969B3C1EDA03}" - name: CORECLR_PROFILER_PATH_32 value: "C:\\oneagent\\agent\\lib\\oneagentloader.dll" - name: CORECLR_PROFILER_PATH_64 value: "C:\\oneagent\\agent\\lib64\\oneagentloader.dll" - name: DT_AGENTACTIVE value: "true" - name: DT_BLOCKLIST value: "powershell*" volumeMounts: - mountPath: "C:\\OneAgent" name: oneagent # initcontainer to download OneAgent initContainers: - name: install-oneagent image: mcr.microsoft.com/windows/servercore:ltsc2019 command: - powershell args: - | Write-Host "Trustng all certificates..." add-type @" using System.Net; using System.Security.Cryptography.X509Certificates; public class TrustAllCertsPolicy : ICertificatePolicy { public bool CheckValidationResult( ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem) { return true; } } "@ [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy Write-Host "Downloading agent..." Invoke-WebRequest -Uri "$Env:DT_API_URL/v1/deployment/installer/agent/windows/paas/latest?Api-Token=$Env:DT_PAAS_TOKEN&$Env:DT_ONEAGENT_OPTIONS" -OutFile "installer.zip" Write-Host "Unpacking agent..." Expand-Archive -Path "installer.zip" -DestinationPath "C:\OneAgent" -Force Write-Host "Configuring agent..." $manifest = Get-Content "C:\OneAgent\manifest.json" | ConvertFrom-Json $config = New-Item -Path "C:\OneAgent\agent\conf" -Name "standalone.conf" -Force Add-Content -Path $config -Value "tenant $($manifest.tenantUUID)" Add-Content -Path $config -Value "tenanttoken $($manifest.tenantToken)" Add-Content -Path $config -Value "server $($manifest.communicationEndpoints -Join ';')" Add-Content -Path $config -Value "storage C:\OneAgent" Add-Content -Path $config -Value "loglevelcon NONE" env: - name: DT_API_URL value: https://<your-environment-id>.live.astromkey.com/api - name: DT_PAAS_TOKEN value: <Access token with PaaS integration scopes (astromkey -> Access tokens)> - name: DT_ONEAGENT_OPTIONS value: arch=default&include=dotnet volumeMounts: - mountPath: "C:\\OneAgent" name: oneagent # Make OneAgent available as a volume volumes: - name: oneagent emptyDir: {} selector: matchLabels: app: sample --- apiVersion: v1 kind: Service metadata: name: sample spec: type: LoadBalancer ports: - protocol: TCP port: 80 selector: app: sample |
- ЕдиныйАгент версии 1.321+
| # your application containers
apiVersion: apps/v1 kind: Deployment metadata: name: sample labels: app: sample spec: replicas: 1 template: metadata: name: sample labels: app: sample spec: nodeSelector: "kubernetes.io/os": windows containers: - name: sample image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp env: #.NET Framework - name: COR_ENABLE_PROFILING value: "0x01" - name: COR_PROFILER value: "{B7038F67-52FC-4DA2-AB02-969B3C1EDA03}" - name: COR_PROFILER_PATH_32 value: "C:\\oneagent\\agent\\bin\\current\\windows-x86-32\\oneagentdotnet.dll" - name: COR_PROFILER_PATH_64 value: "C:\\oneagent\\agent\\bin\\current\\windows-x86-64\\oneagentdotnet.dll" #.NET Core - name: CORECLR_ENABLE_PROFILING value: "0x01" - name: CORECLR_PROFILER value: "{B7038F67-52FC-4DA2-AB02-969B3C1EDA03}" - name: CORECLR_PROFILER_PATH_32 value: "C:\\oneagent\\agent\\bin\\current\\windows-x86-32\\oneagentdotnet.dll" - name: CORECLR_PROFILER_PATH_64 value: "C:\\oneagent\\agent\\bin\\current\\windows-x86-64\\oneagentdotnet.dll" - name: DT_AGENTACTIVE value: "true" - name: DT_BLOCKLIST value: "powershell*" volumeMounts: - mountPath: "C:\\OneAgent" name: oneagent # initcontainer to download OneAgent initContainers: - name: install-oneagent image: mcr.microsoft.com/windows/servercore:ltsc2019 command: - powershell args: - | Write-Host "Trustng all certificates..." add-type @" using System.Net; using System.Security.Cryptography.X509Certificates; public class TrustAllCertsPolicy : ICertificatePolicy { public bool CheckValidationResult( ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem) { return true; } } "@ [System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy Write-Host "Downloading agent..." Invoke-WebRequest -Uri "$Env:DT_API_URL/v1/deployment/installer/agent/windows/paas/latest?Api-Token=$Env:DT_PAAS_TOKEN&$Env:DT_ONEAGENT_OPTIONS" -OutFile "installer.zip" Write-Host "Unpacking agent..." Expand-Archive -Path "installer.zip" -DestinationPath "C:\OneAgent" -Force Write-Host "Configuring agent..." $manifest = Get-Content "C:\OneAgent\manifest.json" | ConvertFrom-Json $config = New-Item -Path "C:\OneAgent\agent\conf" -Name "standalone.conf" -Force Add-Content -Path $config -Value "tenant $($manifest.tenantUUID)" Add-Content -Path $config -Value "tenanttoken $($manifest.tenantToken)" Add-Content -Path $config -Value "server $($manifest.communicationEndpoints -Join ';')" Add-Content -Path $config -Value "storage C:\OneAgent" Add-Content -Path $config -Value "loglevelcon NONE" env: - name: DT_API_URL value: https://<your-environment-id>.live.astromkey.com/api - name: DT_PAAS_TOKEN value: <Access token with PaaS integration scopes (astromkey -> Access tokens)> - name: DT_ONEAGENT_OPTIONS value: arch=default&include=dotnet volumeMounts: - mountPath: "C:\\OneAgent" name: oneagent # Make OneAgent available as a volume volumes: - name: oneagent emptyDir: {} selector: matchLabels: app: sample --- apiVersion: v1 kind: Service metadata: name: sample spec: type: LoadBalancer ports: - protocol: TCP port: 80 selector: app: sample |
- В разделах
# initContainer to download OneAgentи# Make OneAgent available as a volumeдобавьтеinitContainer, который загрузит ЕдиныйАгент и сделает его доступным в виде тома. - Раздел
# your application containersсодержит переменные среды, которые позволяют отслеживать приложения .NET Framework и .NET Core. Их можно устанавливать одновременно. Для .NET CoreCOR_ prefixменяется наCORECLR_, напримерCORECLR_ENABLE_PROFILING, .
Чтобы сообщить правильные ограничения памяти в Kubernetes:
1. Вам необходимо указать лимит при развертывании.
| spec:
containers: ... resources: limits: memory: "32Gi" requests: memory: "4Gi" |
2. Вам необходимо включить доступ к API Kubernetes, чтобы ЕдиныйАгент мог прочитать это значение.
Обновление
Каждый раз, когда вы захотите использовать новую версию ЕдиногоАгента, вам нужно будет только заново развернуть модули. При внедрении в среду выполнения ЕдиныйАгент загружается и внедряется в initContainer. По умолчанию загружается последняя версия ЕдиногоАгента, но вы можете указать, какую версию ЕдиногоАгента следует загрузить, указав её в URL-адресе для загрузки.
Удаление
Чтобы удалить ЕдиныйАгент из мониторинга только приложений
1. Удалите install-oneagent YAML из шаблона развертывания.
| # your application containers
containers: - name: customer-app image: tomcat env: - name: LD_PRELOAD value: /opt/astromkey/oneagent/agent/lib64/liboneagentproc.so volumeMounts: - mountPath: /opt/astromkey/oneagent name: oneagent # initContainer to download OneAgent initContainers: - name: install-oneagent image: alpine:3.8 command: - /bin/sh args: - -c - ARCHIVE=$(mktemp) && wget -O $ARCHIVE "$DT_API_URL/v1/deployment/installer/agent/unix/paas/latest?Api-Token=$DT_PAAS_TOKEN&$DT_ONEAGENT_OPTIONS" && unzip -o -d /opt/astromkey/oneagent $ARCHIVE && rm -f $ARCHIVE env: - name: DT_API_URL value: https://<Your-environment-ID>.live.astromkey.com/api - name: DT_PAAS_TOKEN value: <paastoken> - name: DT_ONEAGENT_OPTIONS value: flavor=<FLAVOR>&include=<TECHNOLOGY> volumeMounts: - mountPath: /opt/astromkey/oneagent name: oneagent # Make OneAgent available as a volume volumes: - name: oneagent emptyDir: {} |
2. Повторно разверните ваше приложение.