Kubernetes 환경에서 Datadog Agent의 Istio 오류 이해

환경 및 구축 절차



Amazon EKS에서 실행 중입니다. 환경 정보나 구축 순서는 이하 페이지와 같습니다.

Istio의 도입은 이하를 참고로 했습니다.

사건



모두 오류 내용은 동일합니다.

Datadog Agent(컨테이너)가 오류를 출력합니다.



agent.log
"log": "2021-06-14 11:33:16 UTC | CORE | ERROR | (pkg/collector/runner/runner.go:301 in work) | Error running check istio: [{\"message\": \"Detected 1 error while loading configuration model `InstanceConfig`:\\nmetrics -> 1\\n  str type expected\", \"traceback\": \"Traceback (most recent call last):\\n  File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/base.py\\\", line 971, in run\\n    initialization()\\n  File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/base.py\\\", line 396, in load_configuration_models\\n    instance_config = self.load_configuration_model(package_path, 'InstanceConfig', raw_instance_config)\\n  File \\\"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/base.py\\\", line 436, in load_configuration_model\\n    raise_from(ConfigurationError('\\\\n'.join(message_lines)), None)\\n  File \\\"<string>\\\", line 3, in raise_from\\ndatadog_checks.base.errors.ConfigurationError: Detected 1 error while loading configuration model `InstanceConfig`:\\nmetrics -> 1\\n  str type expected\\n\"}]\n"

Datadog 사이트의 Infrastructure List 대상 호스트에 integration issue가 표시됨


Datadog has detected 1 integration with issues:
 Datadog’s istio integration is reporting:
 ・Instance #istio:8a41704874d07a5d[ERROR]: [{"message": "Detected 1 error while loading configuration model `InstanceConfig`:\nmetrics -> 1\n str type expected", "traceback": "Traceback (most recent call last):\n File \"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/base.py\", line 971, in run\n initialization()\n File \"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/base.py\", line 396, in load_configuration_models\n instance_config = self.load_configuration_model(package_path, 'InstanceConfig', raw_instance_config)\n File \"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/base.py\", line 436, in load_configuration_model\n raise_from(ConfigurationError('\\n'.join(message_lines)), None)\n File \"<string>\", line 3, in raise_from\ndatadog_checks.base.errors.ConfigurationError: Detected 1 error while loading configuration model `InstanceConfig`:\nmetrics -> 1\n str type expected\n"}]



원인



Agent v7.28.1에 포함된 Istio Integration v3.11.0에서 다음 오류가 발생하는 버그가 존재했습니다.
2021/06/23 Datadog 지원 답변보다
Error: Detected 1 error while loading configuration model `InstanceConfig`:
metrics -> 1
  str type expected
      Traceback (most recent call last):
        File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/base.py", line 971, in run
          initialization()
        File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/base.py", line 396, in load_configuration_models
          instance_config = self.load_configuration_model(package_path, 'InstanceConfig', raw_instance_config)
        File "/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/base.py", line 436, in load_configuration_model
          raise_from(ConfigurationError('\n'.join(message_lines)), None)
        File "<string>", line 3, in raise_from
 datadog_checks.base.errors.ConfigurationError: Detected 1 error while loading configuration model `InstanceConfig`:
      metrics -> 1
        str type expected

Istio Integration v3.11.0이 문제이기 때문에 Istio Integration의 CHANGELOG을 보는 한 Agent v7.28.0에서 발생하는 것 같습니다.

수정 예정 버전



이 수정 사항은 Istio Integration v3.12.0/Agent v7.29.0에 포함될 예정입니다.
2021/06/23 Datadog 지원 답변보다

해결 방법



Istio Integration이 필요한 경우



v7.29.0이 릴리스될 때까지 v7.27.0로 다운그레이드합니다.
(차트의 Agent 버전 지정 위치 를 변경하여 helm upgrade )

values.yaml
    # agents.image.tag -- Define the Agent version to use
    ## Use 7-jmx to enable jmx fetch collection
-    tag: 7.28.1
+    tag: 7.27.0

Istio Integration이 필요하지 않은 경우



values.yaml의 ignoreAutoConfig에 istio를 추가하고 auto_conf.yaml을 무시하도록 설정합니다.
(차트의 ignoreAutoConfig 지정 위치에 추가하여 helm upgrade)

values.yaml
  # datadog.ignoreAutoConfig -- List of integration to ignore auto_conf.yaml.
  ## ref: https://docs.datadoghq.com/agent/faq/auto_conf/
-  ignoreAutoConfig: []
+  ignoreAutoConfig:
+    - istio
  #  - redisdb
  #  - kubernetes_state

Datadog Agent를 helm 이외에 설치하는 경우



dd-agent 명령을 사용하여 Istio 통합을 변경합니다.

Istio Integration이 필요한 경우



통합 install 명령을 사용하여 Istio Integration을 수정 사항이 포함된 v3.12.0으로 업그레이드합니다.

리눅스
sudo -u dd-agent -- datadog-agent integration install datadog-istio==3.12.0

Windows
"%PROGRAMFILES%\Datadog\Datadog Agent\embedded\agent.exe" integration install datadog-istio==3.12.0

Istio Integration이 필요하지 않은 경우



통합 remove 명령을 사용하여 Istio Integration을 삭제합니다.

리눅스
sudo -u dd-agent -- datadog-agent integration remove datadog-istio

Windows
"%PROGRAMFILES%\Datadog\Datadog Agent\embedded\agent.exe" integration show datadog-istio



아직 릴리스는 없지만 이미 v7.29.0에서 태그 만 붙어있는 것 같습니다.
htps : // 기주 b. 이 m/다만 g/다도 g-아겐 t/레아세 s/타 g/7.29.0
다만, 2021/06/24 현재 7.29.0을 지정해 helm에서 기동해도 ImagePullBackOff 가 됩니다.

좋은 웹페이지 즐겨찾기