To find out if this integration is available in your organization, see your Datadog Integrations page or ask your organization administrator.
To initiate an exception request to enable this integration for your organization, email support@ddog-gov.com.
일반적인 SQL 서버 연결 문제
SQL Server 통합 타일의 지침에 따라 Datadog 에이전트를 설정하여 SQL 서버에서 메트릭을 수집합니다. 본 통합은 몇 가지 기본 SQL 서버 메트릭을 제공하며, 원하는 대로 확장 가능합니다.
그러나 사용자가 본 통합을 설정할 시 흔히 발생하는 연결 오류가 있는데, 이 오류는 원인이 될 수 있는 변수가 많기 때문에 문제 해결이 특히 까다로울 수 있습니다. 전체 오류는 다음과 같습니다.
'Unable to connect to SQL Server for instance 127.0.0.1,1433 - None. \n Traceback (most recent call last):\n File "C:\\Program Files (x86)\\Datadog\\Datadog Agent\\files\\..\\checks.d\\sqlserver.py", line 219, in get_cursor\n File "adodbapi\\adodbapi.pyc", line 116, in connect\nOperationalError: (com_error(-2147352567, \'Exception occurred.\', (0, u\'Microsoft OLE DB Provider for SQL Server\', u\'[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.\', None, 0, -2147467259), None), \'Error opening connection to "Provider=SQLOLEDB;Data Source=127.0.0.1,1433;Initial Catalog=master;User ID=datadog;Password=******;"\')\n'
본 오류는 에이전트가 SQL 서버에 연결할 수 없어 데이터 수집을 완료하지 못했음을 나타냅니다. 다음 중 하나가 원인일 수 있습니다.
- SQL 서버
conf.yaml 호스트, 포트, 사용자 이름 또는 비밀번호의 오타(전부 세 번 확인 권장) - 비밀번호에 세미콜론(
;)이 포함된 경우 비밀번호에 중괄호를 사용하여 해결(password: "{<PASSWORD>}") - SQL 서버의 TCP/IP 연결이 비활성화됨
- SQL 서버의 IPv4 주소가 올바르지 않거나 SQL 서버
conf.yaml에 제공한 주소와 일치하지 않습니다. - SQL 서버의 TCP/IP 포트가 올바르지 않거나 SQL 서버
conf.yaml에 제공한 주소와 일치하지 않습니다. - SQL 서버의 인증 모드가 “SQL 서버 및 윈도우즈(Windows) 인증 모드"나 “윈도우즈(Windows) 인증 모드” 중 적절한 옵션으로 설정되어 있지 않습니다.
올바른 TCP/IP 주소/포트에서 수신 대기하도록 서버를 설정하는 방법을 확신할 수 없다면 Microsoft의 특정 TCP 포트에서 수신 대기 서버 설정 항목을 참고하세요(IPv4와 IPALL이 구체적으로 관련된 부분이며, 여기서 포트를 “동적” 또는 “정적” 포트로 설정할 수 있지만 사용하지 않는 포트는 공란으로 두어야 합니다). 에이전트가 SQL Server와 동일한 호스에 설치된 경우, 사용자 관점에서 볼 때 해당 호스트가 로컬 호스트가 아니더라도 호스트 옵션을 “127.0.0.1"로 설정하는 것이 적절할 수 있습니다. SQL 서버 연결 표준 포트는 1433입니다.
SQL 서버의 인증 모드를 설정하는 방법을 확신할 수 없다면 Microsoft의 인증 모드 선택 문서를 참조하세요.
참고: SQL 서버를 위와 같이 변경하는 경우 변경 사항을 적용하려면 SQL 서버를 재시작해야 합니다.
다음은 Datadog 테스트 환경(윈도우즈(Windows) 2012 R2, SQL 서버 2014 익스프레스) 중 하나에서 동작하는 일부 SQL 서버 IP/TCP 설정의 예시입니다.
빈 연결 문자열
Datadog SQL 서버 점검은 adodbapi 파이썬(Python) 라이브러리를 사용합니다. 이 때문에 SQL 서버에 연결할 시 생성되는 연결 스트링에 사용할 수 있는 문자가 제한적입니다. 에이전트가 SQL 서버에 연결할 때 문제가 발생하고 에이전트 collector.logs에 다음과 같은 오류가 표시되면 sqlserver.yaml에 문제의 원인이 되는 문자가 포함되어 있을 수도 있습니다.
OperationalError: (KeyError('Python string format error in connection string->',), 'Error opening connection to ""')
현재까지 이 연결 문제를 일으키는 문자는 %뿐입니다. sqlserver.yaml 파일에 문자 “%“를 사용해야 하는 경우( Datadog SQL 서버 사용자 암호에 %가 포함된 경우), % 문자를 하나만 사용하지 않고 %%로 두 번 사용하여 문제를 해결할 수 있습니다.
Linux 호스트에서 SQL Server 연결
SQL Server(Linux나 Windows에서 호스팅)를 Linux 호스트에 연결하려면:
Linux 배포용 Microsoft ODBC 드라이버를 설치합니다.
사용할 드라이버 이름이 무엇인지 잘 모르겠다면 /etc/odbcinst.ini 상단에 괄호로 표시되어 있습니다.
$ cat /etc/odbcinst.ini
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.1.so.7.0
UsageCount=1
odbc.ini과 odbcinst.ini 파일을 /opt/datadog-agent/embedded/etc 폴더에 복사합니다.
필요할 경우 pyodbc 모듈을 설치합니다. 에이전트의 Python 환경에서 pip install pyodbc를 실행해 설치할 수 있습니다. 다음 예시를 참고하세요.
$ sudo /opt/datadog-agent/embedded/bin/pip install pyodbc
odbc 커넥터를 사용하도록 SQL Server conf.yaml을 구성하고 odbcinst.ini 파일에 명시된 대로 적절한 드라이버를 지정합니다.
init_config:
instances:
- host: <HOST>,<PORT>
# enable the odbc connector
connector: odbc
# enable the ODBC driver
driver: ODBC Driver 13 for SQL Server
username: <USERNAME>
password: <PASSWORD>