Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ops
/
monitor-service
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
jimi
6 years ago
Commit
ede1be9a78129af7beba3c43c27f0298f5be6570
1 parent
532564ba
add java 重启
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
192 additions
and
43 deletions
monitor-service-switch/src/main/java/com/monitor/switchs/projectRestart/ctrl/JavaRestartCtrl.java
monitor-service-switch/src/main/java/com/monitor/switchs/projectRestart/service/impl/JavaProjectStatusLoaderTask.java
monitor-service-switch/src/main/java/com/monitor/switchs/projectRestart/service/impl/RestartServiceImpl.java
monitor-service-switch/src/main/java/com/monitor/switchs/projectRestart/ctrl/JavaRestartCtrl.java
View file @
ede1be9
...
...
@@ -66,28 +66,28 @@ public class JavaRestartCtrl {
response
.
setPageSize
(
req
.
getPageSize
());
response
.
setTotal
(
total
);
if
(
subProjects
!=
null
&&
subProjects
.
size
()>
0
){
int
size
=
subProjects
.
size
();
int
begin
=
1
;
//节省时间,启动线程先加载着
for
(
int
i
=
begin
;
i
<
size
;
i
++){
String
name
=
subProjects
.
get
(
i
).
getName
();
new
Thread
(
new
Runnable
(){
public
void
run
(){
restartService
.
resetStatusInfos
(
name
);
}
}).
start
();
}
//先把前面的一两个加载出来
for
(
int
i
=
0
;
i
<
begin
;
i
++){
if
(
i
<
size
){
String
name
=
subProjects
.
get
(
i
).
getName
();
restartService
.
resetStatusInfos
(
name
);
}
}
}
// if(subProjects!=null&&subProjects.size()>0){
// int size=subProjects.size();
// int begin=1;
// //节省时间,启动线程先加载着
// for(int i=begin;i<size;i++){
// String name=subProjects.get(i).getName();
// new Thread(new Runnable(){
// public void run(){
// restartService.resetStatusInfos(name);
// }
// }).start();
// }
//
// //先把前面的一两个加载出来
// for(int i=0;i<begin;i++){
// if(i<size){
// String name=subProjects.get(i).getName();
// restartService.resetStatusInfos(name);
// }
// }
//
// }
}
catch
(
Exception
e
)
{
log
.
error
(
"getProjectInfos~"
,
e
);
...
...
monitor-service-switch/src/main/java/com/monitor/switchs/projectRestart/service/impl/JavaProjectStatusLoaderTask.java
View file @
ede1be9
...
...
@@ -2,16 +2,24 @@ package com.monitor.switchs.projectRestart.service.impl;
import
com.monitor.cloudtools.util.CommodUtil
;
import
com.monitor.common.ProjectConstant
;
import
com.monitor.common.service.HttpRestClientService
;
import
com.monitor.model.domain.JavaProjectStatus
;
import
com.monitor.model.response.BaseResponse
;
import
com.monitor.switchs.SwitchCmdUtil
;
import
com.monitor.switchs.projectRestart.common.IpStatus
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.stereotype.Component
;
import
javax.management.*
;
import
javax.management.remote.JMXConnector
;
import
javax.management.remote.JMXConnectorFactory
;
import
javax.management.remote.JMXServiceURL
;
import
java.io.IOException
;
import
java.net.MalformedURLException
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.*
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
...
...
@@ -20,9 +28,10 @@ import java.util.concurrent.ConcurrentHashMap;
@Component
@EnableScheduling
public
class
JavaProjectStatusLoaderTask
{
private
static
final
ConcurrentHashMap
<
String
,
List
<
JavaProjectStatus
>>
map
=
new
ConcurrentHashMap
();
private
SimpleDateFormat
sDateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
@Autowired
private
HttpRestClientService
httpRestClient
;
private
static
final
ConcurrentHashMap
<
String
,
List
<
JavaProjectStatus
>>
map
=
new
ConcurrentHashMap
();
private
SimpleDateFormat
sDateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
/*@Scheduled(cron = "0/30 * * * * ?")
private void fetchJavaProjectStauts() {
...
...
@@ -39,35 +48,35 @@ public class JavaProjectStatusLoaderTask {
}
}*/
public
List
<
JavaProjectStatus
>
getStatusInfosFromCache
(
String
projectName
){
Date
now
=
new
java
.
util
.
Date
();
if
(
map
.
contains
(
projectName
)){
List
<
JavaProjectStatus
>
cachedStatus
=
map
.
get
(
projectName
);
public
List
<
JavaProjectStatus
>
getStatusInfosFromCache
(
String
projectName
)
{
Date
now
=
new
java
.
util
.
Date
();
if
(
map
.
contains
(
projectName
))
{
List
<
JavaProjectStatus
>
cachedStatus
=
map
.
get
(
projectName
);
//10秒以内的数据
if
(
cachedStatus
!=
null
&&
cachedStatus
.
size
()>
0
&&(
now
.
getTime
()-
cachedStatus
.
get
(
0
).
getRefreshTs
())<=
10
*
1000
)
{
if
(
cachedStatus
!=
null
&&
cachedStatus
.
size
()
>
0
&&
(
now
.
getTime
()
-
cachedStatus
.
get
(
0
).
getRefreshTs
())
<=
10
*
1000
)
{
return
cachedStatus
;
}
}
return
resetStatusInfosToCache
(
projectName
);
}
public
List
<
JavaProjectStatus
>
resetStatusInfosToCache
(
String
projectName
){
List
<
JavaProjectStatus
>
statuses
=
getStatusInfos
(
projectName
);
if
(
statuses
!=
null
&&
statuses
.
size
()>
0
){
Date
now
=
new
java
.
util
.
Date
();
String
dateStr
=
sDateFormat
.
format
(
now
);
for
(
JavaProjectStatus
javaProjectStatus:
statuses
){
public
List
<
JavaProjectStatus
>
resetStatusInfosToCache
(
String
projectName
)
{
List
<
JavaProjectStatus
>
statuses
=
getStatusInfos
(
projectName
);
if
(
statuses
!=
null
&&
statuses
.
size
()
>
0
)
{
Date
now
=
new
java
.
util
.
Date
();
String
dateStr
=
sDateFormat
.
format
(
now
);
for
(
JavaProjectStatus
javaProjectStatus
:
statuses
)
{
javaProjectStatus
.
setRefreshDateTime
(
dateStr
);
javaProjectStatus
.
setRefreshTs
(
now
.
getTime
());
}
}
map
.
put
(
projectName
,
statuses
);
map
.
put
(
projectName
,
statuses
);
return
statuses
;
}
private
List
<
JavaProjectStatus
>
getStatusInfos
(
String
projectName
)
{
List
<
JavaProjectStatus
>
javaProjectStatusList
=
new
ArrayList
<>();
String
commond
=
"ssh master@"
+
ProjectConstant
.
DEPLOY_IP
+
" sh /home/master/.java_pm/java_restart.sh checkstatus mix "
+
projectName
;
String
commond
=
"ssh master@"
+
ProjectConstant
.
DEPLOY_IP
+
" sh /home/master/.java_pm/java_restart.sh checkstatus mix "
+
projectName
;
List
<
String
>
list
=
CommodUtil
.
exeReturnList
(
commond
);
for
(
String
string
:
list
)
{
String
[]
array
=
string
.
split
(
"@@"
);
...
...
@@ -79,7 +88,7 @@ public class JavaProjectStatusLoaderTask {
javaProjectStatus
.
setCloud
(
array
[
0
]);
javaProjectStatus
.
setIp
(
array
[
1
].
split
(
"@"
)[
1
]);
javaProjectStatus
.
setStatus
(
array
[
2
]);
if
(
IpStatus
.
contain
(
projectName
,
array
[
1
].
split
(
"@"
)[
1
])){
if
(
IpStatus
.
contain
(
projectName
,
array
[
1
].
split
(
"@"
)[
1
]))
{
javaProjectStatus
.
setStatus
(
"2"
);
//正在重启
}
javaProjectStatus
.
setLastStart
(
array
[
3
]);
...
...
@@ -88,4 +97,143 @@ public class JavaProjectStatusLoaderTask {
return
javaProjectStatusList
;
}
public
List
<
JavaProjectStatus
>
getStatusInfosByHttp
(
String
projectName
)
{
List
<
JavaProjectStatus
>
javaProjectStatusList
=
new
ArrayList
<>();
List
<
String
>
projectIps
=
getProjectIps
(
"qcloud"
,
projectName
);
for
(
String
stringIp
:
projectIps
)
{
JavaProjectStatus
javaProjectStatus
=
new
JavaProjectStatus
();
javaProjectStatus
.
setName
(
projectName
);
javaProjectStatus
.
setCloud
(
"qcloud"
);
javaProjectStatus
.
setIp
(
stringIp
);
javaProjectStatus
.
setStatus
(
checkService
(
stringIp
,
projectName
));
javaProjectStatus
.
setLastStart
(
getStartTime
(
projectName
,
stringIp
));
javaProjectStatusList
.
add
(
javaProjectStatus
);
}
return
javaProjectStatusList
;
}
public
String
checkService
(
String
ip
,
String
projectName
)
{
String
servicePort
=
getServicePort
(
projectName
,
"service"
);
if
(
StringUtils
.
isBlank
(
servicePort
)
||
StringUtils
.
isBlank
(
ip
))
{
return
"2"
;
}
String
url
=
"http://"
+
ip
+
":"
+
servicePort
+
"/"
+
projectName
+
"/common/ok.jsp"
;
String
myResponse
=
httpRestClient
.
get
(
url
,
null
,
String
.
class
);
if
(
Objects
.
nonNull
(
myResponse
)
||
myResponse
.
contains
(
"Resources ok"
))
return
"1"
;
else
return
"2"
;
}
public
String
getServicePort
(
String
serviceName
,
String
type
)
{
Map
<
String
,
String
>
context_port_map
=
new
HashMap
<>();
context_port_map
.
put
(
"yoho-users"
,
"8081,9001"
);
context_port_map
.
put
(
"yoho-sns"
,
"8082,9602"
);
context_port_map
.
put
(
"yohobuy-product"
,
"8083,9603"
);
context_port_map
.
put
(
"yohobuy-order"
,
"8084,9604"
);
context_port_map
.
put
(
"yohobuy-promotion"
,
"8085,9605"
);
context_port_map
.
put
(
"yoho-message"
,
"8086,9606"
);
context_port_map
.
put
(
"yohobuy-resources"
,
"8087,9607"
);
context_port_map
.
put
(
"yohobuy-platform"
,
"8088,9608"
);
context_port_map
.
put
(
"yohobuy-union"
,
"8088,0000"
);
context_port_map
.
put
(
"yohobuy-activity"
,
"8090,0000"
);
context_port_map
.
put
(
"yohobuy-bigdata"
,
"8091,0000"
);
context_port_map
.
put
(
"yohobuy-brower"
,
"8092,9612"
);
context_port_map
.
put
(
"yohobuy-crm"
,
"8093,9623"
);
context_port_map
.
put
(
"yohobuy-wechat"
,
"8094,9614"
);
context_port_map
.
put
(
"yoho-social"
,
"8095,9615"
);
context_port_map
.
put
(
"uic"
,
"8096,9616"
);
context_port_map
.
put
(
"yohobuy-risk"
,
"8097,0000"
);
context_port_map
.
put
(
"pfpromotion"
,
"8098,0000"
);
context_port_map
.
put
(
"platform-cms"
,
"8099,9609"
);
context_port_map
.
put
(
"pfproduct"
,
"8100,0000"
);
context_port_map
.
put
(
"pfmaketing"
,
"8101,0000"
);
context_port_map
.
put
(
"pfseller"
,
"8102,0000"
);
context_port_map
.
put
(
"ufoPlatform"
,
"8088,9608"
);
context_port_map
.
put
(
"ufo-gateway"
,
"8080,9600"
);
context_port_map
.
put
(
"yoho-push"
,
"8089,9629"
);
context_port_map
.
put
(
"yoho-inbox"
,
"8062,9622"
);
context_port_map
.
put
(
"yoho-msgcenter-wechat"
,
"8061,8161"
);
context_port_map
.
put
(
"yoho-reviewed"
,
"8063,9623"
);
context_port_map
.
put
(
"yoho-erp-gateway"
,
"8080,9609"
);
context_port_map
.
put
(
"yoho-gateway"
,
"8080,9600"
);
context_port_map
.
put
(
"cms_push"
,
"8089,0000"
);
context_port_map
.
put
(
"yohobuy-task"
,
"8084,9604"
);
context_port_map
.
put
(
"yoho-message-controller"
,
"8086,9627"
);
context_port_map
.
put
(
"yoho-message-sender"
,
"8086,9625"
);
context_port_map
.
put
(
"yoho-search-consumer"
,
"8088,9608"
);
context_port_map
.
put
(
"yoho-search-producer"
,
"8089,9609"
);
context_port_map
.
put
(
"yoho-search-adaptor"
,
"8085,0000"
);
context_port_map
.
put
(
"yohomars-search-service"
,
"8080,9900"
);
String
port
=
""
;
if
(
context_port_map
.
containsKey
(
serviceName
))
{
String
ports
=
context_port_map
.
get
(
serviceName
);
if
(
"service"
.
equals
(
type
)
&&
ports
.
split
(
","
).
length
>
1
)
{
port
=
ports
.
split
(
","
)[
0
];
}
if
(
"jmx"
.
equals
(
type
)
&&
ports
.
split
(
","
).
length
>
1
)
{
if
(!
"0000"
.
equals
(
ports
.
split
(
","
)[
1
]))
port
=
ports
.
split
(
","
)[
1
];
}
}
return
port
;
}
private
List
<
String
>
getProjectIps
(
String
cloud
,
String
projectName
)
{
List
<
String
>
javaProjectIpList
=
new
ArrayList
<>();
String
commond
=
"ssh master@"
+
ProjectConstant
.
DEPLOY_IP
+
" sh /home/master/.java_pm/java_restart.sh getIPs "
+
cloud
+
" "
+
projectName
;
List
<
String
>
list
=
CommodUtil
.
exeReturnList
(
commond
);
for
(
String
string
:
list
)
{
if
(
string
.
contains
(
"@@"
)
&&
(
string
.
contains
(
"master"
)))
{
String
[]
array
=
string
.
split
(
"@@"
);
for
(
int
i
=
1
;
i
<
array
.
length
;
i
++)
{
if
(
Objects
.
nonNull
(
array
[
i
])
&&
array
[
i
].
split
(
"@"
).
length
>
1
)
javaProjectIpList
.
add
(
array
[
i
].
split
(
"@"
)[
1
]);
}
}
}
return
javaProjectIpList
;
}
public
String
getStartTime
(
String
serviceName
,
String
ip
)
{
String
beginTime
=
"0000-00-00 00:00:00"
;
String
jmxPort
=
getServicePort
(
serviceName
,
"jmx"
);
if
(
StringUtils
.
isNotBlank
(
jmxPort
))
{
try
{
String
jmxURL
=
"service:jmx:rmi:///jndi/rmi://"
+
ip
+
":"
+
jmxPort
+
"/jmxrmi"
;
//tomcat jmx url
JMXServiceURL
serviceURL
=
new
JMXServiceURL
(
jmxURL
);
Map
map
=
new
HashMap
();
JMXConnector
connector
=
JMXConnectorFactory
.
connect
(
serviceURL
,
map
);
MBeanServerConnection
mbsc
=
connector
.
getMBeanServerConnection
();
ObjectName
runtimeObjName
=
new
ObjectName
(
"java.lang:type=Runtime"
);
Date
starttime
=
new
Date
((
Long
)
mbsc
.
getAttribute
(
runtimeObjName
,
"StartTime"
));
SimpleDateFormat
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
beginTime
=
df
.
format
(
starttime
);
}
catch
(
MalformedURLException
e
)
{
e
.
printStackTrace
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
catch
(
ReflectionException
e
)
{
e
.
printStackTrace
();
}
catch
(
InstanceNotFoundException
e
)
{
e
.
printStackTrace
();
}
catch
(
AttributeNotFoundException
e
)
{
e
.
printStackTrace
();
}
catch
(
MBeanException
e
)
{
e
.
printStackTrace
();
}
catch
(
MalformedObjectNameException
e
)
{
e
.
printStackTrace
();
}
}
return
beginTime
;
}
}
...
...
monitor-service-switch/src/main/java/com/monitor/switchs/projectRestart/service/impl/RestartServiceImpl.java
View file @
ede1be9
...
...
@@ -35,7 +35,8 @@ public class RestartServiceImpl implements RestartService {
@Override
public
List
<
JavaProjectStatus
>
getStatusInfos
(
String
project
)
{
return
javaProjectStatusLoaderTask
.
getStatusInfosFromCache
(
project
);
// return javaProjectStatusLoaderTask.getStatusInfosFromCache(project);
return
javaProjectStatusLoaderTask
.
getStatusInfosByHttp
(
project
);
}
@Override
...
...
Please
register
or
login
to post a comment