Skip to content

Commit

Permalink
[taotao-cloud-project-1233] update collect
Browse files Browse the repository at this point in the history
  • Loading branch information
shuigedeng committed Sep 15, 2021
1 parent 0b909b4 commit 5cfeaac
Show file tree
Hide file tree
Showing 28 changed files with 565 additions and 357 deletions.
68 changes: 67 additions & 1 deletion config/k8s/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,73 @@ mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

# 当创建单机版的 k8s 时,这个时候 master 节点是默认不允许调度 pod 将master标记为可调度
kubectl taint nodes --all node-role.kubernetes.io/master-

kubectl get node
kubectl get pod --all-namespaces
kubectl describe pod coredns-7f6cbbb7b8-h55vx
kubectl describe pod coredns-7f6cbbb7b8-6rc9d -n kube-system

#校验集群
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc

# 部署Dashboard
https://github.com/kubernetes/dashboard/blob/master/aio/deploy/recommended.yaml

# 编辑文件
# 暴露端口的修改如下:
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
#添加
type: NodePort
ports:
- port: 443
targetPort: 8443
# 添加
nodePort: 30001
selector:
k8s-app: kubernetes-dashboard

docker pull kubernetesui/dashboard:v2.3.1
docker pull kubernetesui/metrics-scraper:v1.0.6

kubectl apply -f recommended.yaml

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
kubectl get pod --all-namespaces
kubectl get pods -n kube-system -o wide
kubectl get services -n kube-system
netstat -ntlp|grep 30001

kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

```
Name: dashboard-admin-token-4xpzq
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name: dashboard-admin
kubernetes.io/service-account.uid: 3d66d156-bdae-480b-bcdf-0915b2802877
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1099 bytes
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IncycWZ1aTk1RnBPRHBXeXFXNlRzRWFja2lKUnpNMkE4MWNHMERqZi1UWEkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tNHhwenEiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiM2Q2NmQxNTYtYmRhZS00ODBiLWJjZGYtMDkxNWIyODAyODc3Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.bKM-c4wKlxFwTcEREoxgHnabCCRAVHw_0T02KaM_-xfORY4MtMEudiMavPv9n2jPFzo2UYSppmYM5R4Q_HuPLDf6MVG500VBknzVW2UftTk_Rd-gpNTXHDtbReJYSeR-MPWpWbZ5OfNGp5puAOxqcPBhYNvo2qzlOR5Qsp9SgNONgA3wHr5bguFlC6eiw-mpoqiLZiTbjpYK8o5q6STx23v_TBcgImJ0P6FK2yxmbvC0OpS-QGxnfCOvYVZ1DkPf0MILmBr22JtcPN1BoIbtQeLOi00sLx0Wn01DpEyMygFcU96au_pMD2hqn05Rjwrp5juPxUBLAQ3ri8LLF4uvZQ
```

# error execution phase upload-config/kubelet: Error writing Crisocket information for the control-...
swapoff -a
Expand All @@ -117,3 +180,6 @@ systemctl restart kubelet
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X


docker pull registry.aliyuncs.com/google_containers/coredns:1.8.0
docker tag registry.aliyuncs.com/google_containers/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns:v1.8.4
docker rmi registry.aliyuncs.com/google_containers/coredns:1.8.0
1 change: 0 additions & 1 deletion config/rancher/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ https://127.0.0.1:2443
### docker rm `docker ps -a -q`
### docker rmi $(docker images -q)


swapoff -a
kubeadm reset
systemctl daemon-reload
Expand Down
13 changes: 0 additions & 13 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,3 @@ for (project in threeLayerProjects) {
}
}
}

//// gradle生命周期中的钩子方法
//gradle.settingsEvaluated {
// println 'init phase: settingsEvaluated'
//}
//
//gradle.projectsLoaded {
// println 'init phase: projectsLoaded'
//}
//
//gradle.beforeProject {
// println 'init phase: projectsLoaded'
//}
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,6 @@ public RouterFunction<ServerResponse> routerFunction(
.and(RequestPredicates.accept(MediaType.IMAGE_PNG)), faviconHandler);
}

public class HealthReport(){

}

/**
* Hystrix 降级处理
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package com.taotao.cloud.core.model;

import com.taotao.cloud.common.exception.BaseException;
import com.taotao.cloud.common.utils.ContextUtil;
import com.taotao.cloud.common.utils.LogUtil;
import com.taotao.cloud.common.utils.NumberUtil;
import com.taotao.cloud.core.model.Callable.Func0;
Expand All @@ -41,7 +42,11 @@
*/
public class Collector {

private CoreProperties coreProperties;
private final CoreProperties coreProperties;

public static Collector getCollector() {
return ContextUtil.getBean(Collector.class, true);
}

/**
* map
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import com.taotao.cloud.common.exception.BaseException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
Expand Down Expand Up @@ -90,6 +91,30 @@ public static Method findMethod(Class<?> cls, String methodName) {
return find;
}

/**
* 通过枚举名称获取枚举对象
*
* @param cls 枚举类
* @param methodName 方法名称
* @param name name 枚举名称 区分大小写 必须完全一样
* @return {@link java.lang.Object }
* @author shuigedeng
* @since 2021-09-15 15:56:01
*/
public static Object findEnumObjByName(Class<?> cls, String methodName, String name)
throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
Object[] objects = cls.getEnumConstants();
Method method = cls.getMethod(methodName);
for (Object object : objects) {
Object invoke = method.invoke(object);
if (invoke.equals(name)) {
return object;
}
}
return null;
}


/**
* 获取类中方法
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
dependencies {
api project(':taotao-cloud-microservice:taotao-cloud-starter:taotao-cloud-starter-cloud')
api project(':taotao-cloud-microservice:taotao-cloud-starter:taotao-cloud-starter-dingtalk')
api project(':taotao-cloud-microservice:taotao-cloud-starter:taotao-cloud-starter-mail')
api project(':taotao-cloud-microservice:taotao-cloud-starter:taotao-cloud-starter-sms')
// api project(':taotao-cloud-microservice:taotao-cloud-starter:taotao-cloud-starter-dingtalk')
// api project(':taotao-cloud-microservice:taotao-cloud-starter:taotao-cloud-starter-mail')
// api project(':taotao-cloud-microservice:taotao-cloud-starter:taotao-cloud-starter-sms')

// api 'com.dianping.cat:cat-client:3.0.0'
api 'net.logstash.logback:logstash-logback-encoder'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.taotao.cloud.health.annotation.FieldReport;
import com.taotao.cloud.health.model.CollectInfo;
import com.taotao.cloud.health.properties.CollectTaskProperties;
import java.util.Objects;

/**
* MonitorThreadPoolCollectTask
Expand All @@ -36,11 +37,9 @@ public class AsyncThreadPoolCollectTask extends AbstractCollectTask {

private static final String TASK_NAME = "taotao.cloud.health.collect.executor.async";

private CollectTaskProperties properties;
private Collector collector;
private final CollectTaskProperties properties;

public AsyncThreadPoolCollectTask(Collector collector, CollectTaskProperties properties) {
this.collector = collector;
public AsyncThreadPoolCollectTask(CollectTaskProperties properties) {
this.properties = properties;
}

Expand All @@ -51,7 +50,7 @@ public int getTimeSpan() {

@Override
public String getDesc() {
return this.getClass().getName();
return getClass().getName();
}

@Override
Expand All @@ -67,71 +66,74 @@ public boolean getEnabled() {
@Override
protected CollectInfo getData() {
try {
Collector collector = Collector.getCollector();
AsyncThreadPoolProperties asyncThreadPoolProperties = ContextUtil.getBean(
AsyncThreadPoolProperties.class, false);
String threadNamePrefix = asyncThreadPoolProperties.getThreadNamePrefix();
String asyncThreadName = threadNamePrefix.replace("-", ".");

AsyncThreadPoolInfo info = new AsyncThreadPoolInfo();
info.systemActiveCount =
(Integer) this.collector.call(asyncThreadName + ".active.count").run();
info.systemCorePoolSize =
(Integer) this.collector.call(asyncThreadName + ".core.poolSize").run();
info.systemPoolSizeLargest =
(Integer) this.collector.call(asyncThreadName + ".poolSize.largest").run();
info.systemPoolSizeMax =
(Integer) this.collector.call(asyncThreadName + ".poolSize.max").run();
info.systemPoolSizeCount =
(Integer) this.collector.call(asyncThreadName + ".poolSize.count").run();
info.systemQueueSize =
(Integer) this.collector.call(asyncThreadName + ".queue.size").run();
info.systemTaskCount =
(Long) this.collector.call(asyncThreadName + ".task.count").run();
info.systemTaskCompleted =
(Long) this.collector.call(asyncThreadName + ".task.completed").run();

Hook hook = this.collector.hook(asyncThreadName + ".hook");
info.systemTaskHookCurrent = hook.getCurrent();
info.systemTaskHookError = hook.getLastErrorPerSecond();
info.systemTaskHookSuccess = hook.getLastSuccessPerSecond();
info.systemTaskHookList = hook.getMaxTimeSpanList().toText();
info.systemTaskHookListPerMinute = hook.getMaxTimeSpanListPerMinute().toText();
return info;
AsyncThreadPoolProperties.class, true);

if (Objects.nonNull(collector) && Objects.nonNull(asyncThreadPoolProperties)) {

String asyncThreadName = asyncThreadPoolProperties.
getThreadNamePrefix().replace("-", ".");

AsyncExecutorCollectInfo info = new AsyncExecutorCollectInfo();
info.asyncExecutorActiveCount =
(Integer) collector.call(asyncThreadName + ".active.count").run();
info.asyncExecutorCorePoolSize =
(Integer) collector.call(asyncThreadName + ".core.poolSize").run();
info.asyncExecutorPoolSizeLargest =
(Integer) collector.call(asyncThreadName + ".poolSize.largest").run();
info.asyncExecutorPoolSizeMax =
(Integer) collector.call(asyncThreadName + ".poolSize.max").run();
info.asyncExecutorPoolSizeCount =
(Integer) collector.call(asyncThreadName + ".poolSize.count").run();
info.asyncExecutorQueueSize =
(Integer) collector.call(asyncThreadName + ".queue.size").run();
info.asyncExecutorTaskCount =
(Long) collector.call(asyncThreadName + ".task.count").run();
info.asyncExecutorTaskCompleted =
(Long) collector.call(asyncThreadName + ".task.completed").run();

Hook hook = collector.hook(asyncThreadName + ".hook");
info.asyncExecutorTaskHookCurrent = hook.getCurrent();
info.asyncExecutorTaskHookError = hook.getLastErrorPerSecond();
info.asyncExecutorTaskHookSuccess = hook.getLastSuccessPerSecond();
info.asyncExecutorTaskHookList = hook.getMaxTimeSpanList().toText();
info.asyncExecutorTaskHookListPerMinute = hook.getMaxTimeSpanListPerMinute().toText();
return info;
}
} catch (Exception e) {
LogUtil.error(e);
}
return null;
}


private static class AsyncThreadPoolInfo implements CollectInfo {

@FieldReport(name = TASK_NAME + ".active.count", desc = "系统线程池活动线程数")
private Integer systemActiveCount = 0;
@FieldReport(name = TASK_NAME + ".core.poolSize", desc = "系统线程池核心线程数")
private Integer systemCorePoolSize = 0;
@FieldReport(name = TASK_NAME + ".poolSize.largest", desc = "线程池历史最大线程数")
private Integer systemPoolSizeLargest = 0;
@FieldReport(name = TASK_NAME + ".poolSize.max", desc = "线程池最大线程数")
private Integer systemPoolSizeMax = 0;
@FieldReport(name = TASK_NAME + ".poolSize.count", desc = "线程池当前线程数")
private Integer systemPoolSizeCount = 0;
@FieldReport(name = TASK_NAME + ".queue.size", desc = "线程池当前排队等待任务数")
private Integer systemQueueSize = 0;
@FieldReport(name = TASK_NAME + ".task.count", desc = "线程池历史任务数")
private Long systemTaskCount = 0L;
@FieldReport(name = TASK_NAME + ".task.completed", desc = "线程池已完成任务数")
private Long systemTaskCompleted = 0L;
@FieldReport(name = TASK_NAME + ".task.hook.error", desc = "线程池拦截上一次每秒出错次数")
private Long systemTaskHookError = 0L;
@FieldReport(name = TASK_NAME + ".task.hook.success", desc = "线程池拦截上一次每秒成功次数")
private Long systemTaskHookSuccess = 0L;
@FieldReport(name = TASK_NAME + ".task.hook.current", desc = "线程池拦截当前执行任务数")
private Long systemTaskHookCurrent = 0L;
@FieldReport(name = TASK_NAME + ".task.hook.list.detail", desc = "线程池拦截历史最大耗时任务列表")
private String systemTaskHookList = "";
@FieldReport(name = TASK_NAME
+ ".task.hook.list.minute.detail", desc = "线程池拦截历史最大耗时任务列表(每分钟)")
private String systemTaskHookListPerMinute = "";
private static class AsyncExecutorCollectInfo implements CollectInfo {

@FieldReport(name = TASK_NAME + ".active.count", desc = "异步核心线程池活动线程数")
private Integer asyncExecutorActiveCount = 0;
@FieldReport(name = TASK_NAME + ".core.poolSize", desc = "异步核心线程池核心线程数")
private Integer asyncExecutorCorePoolSize = 0;
@FieldReport(name = TASK_NAME + ".poolSize.largest", desc = "异步核心线程池历史最大线程数")
private Integer asyncExecutorPoolSizeLargest = 0;
@FieldReport(name = TASK_NAME + ".poolSize.max", desc = "异步核心线程池最大线程数")
private Integer asyncExecutorPoolSizeMax = 0;
@FieldReport(name = TASK_NAME + ".poolSize.count", desc = "异步核心线程池当前线程数")
private Integer asyncExecutorPoolSizeCount = 0;
@FieldReport(name = TASK_NAME + ".queue.size", desc = "异步核心线程池当前排队等待任务数")
private Integer asyncExecutorQueueSize = 0;
@FieldReport(name = TASK_NAME + ".task.count", desc = "异步核心线程池历史任务数")
private Long asyncExecutorTaskCount = 0L;
@FieldReport(name = TASK_NAME + ".task.completed", desc = "异步核心线程池已完成任务数")
private Long asyncExecutorTaskCompleted = 0L;
@FieldReport(name = TASK_NAME + ".task.hook.error", desc = "异步核心线程池拦截上一次每秒出错次数")
private Long asyncExecutorTaskHookError = 0L;
@FieldReport(name = TASK_NAME + ".task.hook.success", desc = "异步核心线程池拦截上一次每秒成功次数")
private Long asyncExecutorTaskHookSuccess = 0L;
@FieldReport(name = TASK_NAME + ".task.hook.current", desc = "异步核心线程池拦截当前执行任务数")
private Long asyncExecutorTaskHookCurrent = 0L;
@FieldReport(name = TASK_NAME + ".task.hook.list.detail", desc = "异步核心线程池拦截历史最大耗时任务列表")
private String asyncExecutorTaskHookList = "";
@FieldReport(name = TASK_NAME + ".task.hook.list.minute.detail", desc = "异步核心线程池拦截历史最大耗时任务列表(每分钟)")
private String asyncExecutorTaskHookListPerMinute = "";
}
}
Loading

0 comments on commit 5cfeaac

Please sign in to comment.