MongoDB에 대한 단순 HTTP/TCP 상태 점검
Docker 컨테이너 안에 MongoDB 인스턴스에 대한 Health Check를 만들어야 합니다.
CLI를 사용하여 해결 방법을 만들고 Mongo Ping을 사용할 수 있지만 가장 좋은 옵션은 간단한 HTTP 또는 TCP 테스트를 만드는 것입니다.표준 ping 테스트의 기본 27017 포트에는 응답이 없습니다.
믿을 수 있는 방법이 있습니까?
나는 mongodb에 대한 간단한 건강 검사를 만들었고, 그것은 그것을 사용합니다.mongo
클라이언트에서 간단한 쿼리 요청을 보냅니다(예: db.stats()
) 서버로 이동합니다.
$ mongo 192.168.5.51:30000/test
MongoDB shell version: 3.2.3
connecting to: 192.168.5.51:30000/test
mongos> db.stats()
{
"raw" : {
"set1/192.168.5.52:27000,192.168.5.53:27000" : {
"db" : "test",
"collections" : 8,
"objects" : 50,
"avgObjSize" : 73.12,
"dataSize" : 3656,
"storageSize" : 53248,
"numExtents" : 8,
"indexes" : 8,
"indexSize" : 65408,
"fileSize" : 469762048,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 6
},
"extentFreeList" : {
"num" : 28,
"totalSize" : 184807424
},
"ok" : 1
}
},
"objects" : 50,
"avgObjSize" : 73,
"dataSize" : 3656,
"storageSize" : 53248,
"numExtents" : 8,
"indexes" : 8,
"indexSize" : 65408,
"fileSize" : 469762048,
"extentFreeList" : {
"num" : 28,
"totalSize" : 184807424
},
"ok" : 1
}
한 줄로 이 작업을 수행할 수도 있습니다.
$ echo 'db.stats().ok' | mongo 192.168.5.51:30000/test --quiet
1
도움이 되길 바랍니다.
업데이트:
@luckydonald가 말했듯이,ping
명령이 더 낫기 때문에 다음과 같이 수행할 수 있습니다.
$ mongo --eval 'db.runCommand("ping").ok' localhost:27017/test --quiet
1
@luckydonald에 대해 감사합니다.
간단한 "핑"만 필요한 경우에는 다음을 사용할 수도 있습니다.curl
:
curl --connect-timeout 10 --silent --show-error hostname:27017
"오류"가 발생한 경우It looks like you are trying to access MongoDB over HTTP on the native driver port.
그러면 MongoDB가 실행되고 응답합니다.
또는 이 중 하나를 사용합니다.
mongosh --norc --quiet --host=hostname:27017 <<< "db.getMongo()"
mongosh --norc --quiet --host=hostname:27017 --eval "db.getMongo()"
echo "db.getMongo()" | mongosh --norc --quiet --host=hostname:27017
에 대한 하나의 이점db.stats()
명령db.getMongo()
인증 없이 작동합니다. 즉, 자격 증명이 필요하지 않습니다.
참고로 SSL/TLS가 활성화된 상태에서 MongoDB를 실행하고 설정한 경우nte.tls.mode: requireTLS
그런 다음 해당 인증서도 제공해야 합니다. 그렇지 않으면 실행할 수 없습니다.db.getMongo()
,db.runCommand("ping")
또는db.stats()
.그curl
명령은 가장 일반적이며 어떤 경우에도 작동합니다.
한 가지 해결책은 컨테이너에 인터프리터가 있는 스크립트 언어로 작성된 최소 MongoDB 클라이언트를 사용하는 것입니다.
예를 들어, Python에는 mongo_ping_client라는 제로 종속성이 있습니다.파이의
MongoDB > 6.0의 경우 상태 점검 테스트는 다음과 같습니다.
test: mongosh --eval 'db.runCommand("ping").ok' --quiet
telnet mongodb_server_name 28017
연결에 성공하면 명령에서 다음과 유사한 출력이 표시됩니다.
Trying 9.30.252.5... Connected to 9.30.252.5. Escape character is '^]'.
연결에 실패할 경우 여기에 코드를 입력하면 터미널에서 다음과 유사한 출력이 수신됩니다.
Trying 9.30.252.5... telnet: connect to address 9.30.252.5: Connection refused telnet: Unable to connect to remote host
글꼴: https://www.ibm.com/docs/en/db2/11.1?topic=sources-testing-network-connection-mongodb-rest-service-server
언급URL : https://stackoverflow.com/questions/37839365/simple-http-tcp-health-check-for-mongodb
'programing' 카테고리의 다른 글
새로운 iOS7 SDK로 보기 위에 탐색 모음이 나타납니다. (0) | 2023.07.05 |
---|---|
주 클래스 Spring-Boot 명령줄 지정 (0) | 2023.07.05 |
스프링 부트 다중 부품 파일은 항상 null입니다. (0) | 2023.06.30 |
ASP.NET Core Web API에서 파일 및 기타 양식 데이터 수신(경계 기반 요청 구문 분석) (0) | 2023.06.30 |
Angular2/4/5에서 사용자 지정 비동기 검증기를 구현하는 방법 (0) | 2023.06.30 |