/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/import org.apache.kafka.common.utils.Utils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.lang.management.ManagementFactory;import java.lang.management.OperatingSystemMXBean;import java.lang.management.RuntimeMXBean;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;/**
* Connect Worker system and runtime information.
* 连接Worker系统和运行时信息
*/publicclassInfo{privatestaticfinal Logger log = LoggerFactory.getLogger(Info.class);privatestaticfinal RuntimeMXBean RUNTIME;privatestaticfinal OperatingSystemMXBean OS;static{
RUNTIME = ManagementFactory.getRuntimeMXBean();
OS = ManagementFactory.getOperatingSystemMXBean();}privatefinal Map<String, Object> values;/**
* Constructor.
*/publicInfo(){this.values =newLinkedHashMap<>();addRuntimeInfo();addSystemInfo();}/**
* Log the values of this object at level INFO.
* 在INFO级别记录该对象的值
*/// Equivalent to logAll in AbstractConfigpublicvoidlogAll(){
StringBuilder b =newStringBuilder();
b.append(getClass().getSimpleName());
b.append(" values: ");
b.append(Utils.NL);for(Map.Entry<String, Object> entry : values.entrySet()){
b.append('\t');
b.append(entry.getKey());
b.append(" = ");
b.append(format(entry.getValue()));
b.append(Utils.NL);}
log.info(b.toString());}privatestatic Object format(Object value){return value == null ?"NA": value;}/**
* Collect general runtime information.
* 收集常规运行时信息
*/protectedvoidaddRuntimeInfo(){
List<String> jvmArgs = RUNTIME.getInputArguments();
values.put("jvm.args", Utils.join(jvmArgs,", "));
String[] jvmSpec ={
RUNTIME.getVmVendor(),
RUNTIME.getVmName(),
RUNTIME.getSystemProperties().get("java.version"),
RUNTIME.getVmVersion()};
values.put("jvm.spec", Utils.join(jvmSpec,", "));
values.put("jvm.classpath", RUNTIME.getClassPath());}/**
* Collect system information.
* 收集系统信息
*/protectedvoidaddSystemInfo(){
String[] osInfo ={
OS.getName(),
OS.getArch(),
OS.getVersion(),};
values.put("os.spec", Utils.join(osInfo,", "));
values.put("os.vcpus", String.valueOf(OS.getAvailableProcessors()));}publicstaticvoidmain(String[] args){
Info info =newInfo();
info.logAll();}}
示例/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding co...