Authored by mlge

mongodb探测

... ... @@ -83,6 +83,22 @@
<version>${awsjavasdk.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.6.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mongodb/bson -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>bson</artifactId>
<version>3.6.3</version>
</dependency>
</dependencies>
... ...
package com.monitor.cmdb.ctrl;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.Date;
/**
* Created by meiling.ge on 2018/3/22.
*/
@Controller
@RequestMapping("/testMongo")
public class TestMongoController {
private static final Logger LOGGER = LoggerFactory.getLogger(TestMongoController.class);
@Value("${mongo.host}")
private String host;
@Value("${mongo.databaseName}")
private String databaseName;
@Value("${mongo.port}")
private int port;
/**
* 探测mongodb
* 执行语句: db.job_log.find({ "beginTime" : {"$gt" : new Date('2018/03/16 06:15:00'), "$lt" : new Date('2018/03/16 07:15:00')},success: false },{"name": 1,"success": 1 });
* 等价于:select name , success from job_log where beginTime > new Date('2018/03/16 06:15:00') and beginTime < new Date('2018/03/16 07:15:00') and success = false
* 结束时间:当前的时间 起始时间:当前时间向前推一个小时
* @return
*/
@RequestMapping("/detectMongo")
@ResponseBody
public String detectMongo(){
LOGGER.info("detectMongo -- start ");
MongoClient mongoClient = null;
String resultStr = "";
try {
/*// 连接数据库--需要用户名 &密码
MongoCredential credential = MongoCredential.createCredential(user, databaseName, pswd.toCharArray());
ServerAddress addr = new ServerAddress(host, port);
mongoClient = new MongoClient(addr, Arrays.asList(credential));
MongoDatabase db = mongoClient.getDatabase(databaseName);*/
//不需要认证
mongoClient = new MongoClient(host, port);
MongoDatabase db = mongoClient.getDatabase(databaseName);
//表名
String collectionName = "job_log";
MongoCollection<Document> doc = db.getCollection(collectionName);
//查询条件
Bson queryCondition1 = Filters.eq("success", false);
Long endTime = System.currentTimeMillis();
Long startTime = endTime - 1000 * 60 * 60;
Bson queryCondition2 = Filters.lt("beginTime", new Date(endTime));
Bson queryCondition3 = Filters.gt("beginTime", new Date(startTime));
Bson queryBson = Filters.and(queryCondition1, queryCondition2, queryCondition3);
FindIterable<Document> result = doc.find(queryBson);
LOGGER.info("detectMongo excute query: host is {}, databaseName is {} , collectionName is {} , queryBson is {}", host, databaseName, collectionName, queryBson );
//游标遍历 结果
MongoCursor<Document> cursor = result.iterator();
while(cursor.hasNext()){
Document d = cursor.next();
resultStr += d.toJson() ;
}
LOGGER.info("detectMongo -- success");
//再查一遍
queryCondition1 = Filters.eq("success", true);
result = doc.find(Filters.and(queryCondition1, queryCondition2, queryCondition3));
cursor = result.iterator();
resultStr += "success==true:";
while(cursor.hasNext()){
Document d = cursor.next();
resultStr += d.toJson() ;
}
} catch (Exception e) {
LOGGER.error("detectMongo--error: e : {}" , e);
}finally {
if( mongoClient != null ){
mongoClient.close();//关闭连接
LOGGER.info("detectMongo-- mongoClient.close");
}
}
return resultStr;
}
}
... ...
... ... @@ -52,4 +52,8 @@ auto.fetchScaling.open=true
#钉钉访问地址
ddRobotUrl=https://oapi.dingtalk.com/robot/send?access_token=31cf1a526c98862b7945e561c5a0d857a069350dbee0e807074b83b39fa1e1af
#ldap统一认证
ldap.flag=1
\ No newline at end of file
ldap.flag=1
mongo.host=10.67.2.47
mongo.databaseName=cronsum
mongo.port=27017
\ No newline at end of file
... ...
... ... @@ -47,4 +47,9 @@ check_bigdata=true
#获取伸缩组数据--访问aws、qcloud服务接口
auto.fetchScaling.open=true
#钉钉访问地址
ddRobotUrl=https://oapi.dingtalk.com/robot/send?access_token=31cf1a526c98862b7945e561c5a0d857a069350dbee0e807074b83b39fa1e1af
\ No newline at end of file
ddRobotUrl=https://oapi.dingtalk.com/robot/send?access_token=31cf1a526c98862b7945e561c5a0d857a069350dbee0e807074b83b39fa1e1af
#mongodb相关
mongo.host=10.67.2.47
mongo.databaseName=cronsum
mongo.port=27017
\ No newline at end of file
... ...
... ... @@ -51,4 +51,15 @@ auto.fetchScaling.open=false
#钉钉访问地址
ddRobotUrl=test
#ldap统一认证
ldap.flag=0
\ No newline at end of file
ldap.flag=0
#mongodb相关配置
mongo.host=192.168.103.66
mongo.databaseName=test
mongo.port=27017
... ...