8 Commits

Author SHA1 Message Date
shizhendong
58a61ff40c fix: 解决不能还原 telegraf.d 中新增配置文件问题 2024-03-01 17:34:06 +08:00
zhangshuai
7d7f350e4d fix: oshi 网卡返回值包括本地接口 2024-02-22 18:02:09 +08:00
zhangshuai
fc3a2b4591 fix: ci 记录文件 MD5 2023-11-10 16:21:38 +08:00
zhangshuai
0d9e0d5be4 fix: ci 记录文件 MD5 2023-11-10 16:16:44 +08:00
shizhendong
4bd4109faa fix: NEZ-3218 动态加载 nz-talon systemd EnvironmentFile 文件 2023-10-11 18:20:15 +08:00
shizhendong
77439ea58a pref: NEZ-3215 nz-talon jdk&springboot 版本升级 2023-10-11 09:25:45 +08:00
shizhendong
ed091f73ac Merge remote-tracking branch 'origin/dev-3.7' into dev-3.8 2023-09-25 14:12:59 +08:00
shizhendong
665daa1107 feat: NEZ-3158 nz-talon 内置组件增加 rsyslog&logrotate 配置 2023-09-04 15:45:02 +08:00
14 changed files with 130 additions and 73 deletions

View File

@@ -1,5 +1,5 @@
# docker镜像
image: git.mesalab.cn:7443/nezha/nz-build-env:1.3
image: git.mesalab.cn:7443/nezha/nz-build-env:1.5
# 定义全局变量
variables:
MINIO_HOST: 'http://192.168.40.48:2020/'
@@ -64,9 +64,11 @@ dev_build:
- chmod +x xjar
- "git log -100 --pretty=format:'%ad : %s' >> git-log.html"
- tar -zcvf $FILE_NAME xjar nz-talon.xjar git-log.html
- md5sum $FILE_NAME > $CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-latest.tar.gz.md5sum.txt
- mc alias set nz $MINIO_HOST $MINIO_USER $MINIO_PWD
- mc cp $FILE_NAME nz/ci-cd/nz-talon/$FILE_NAME
- mc cp $FILE_NAME nz/ci-cd/nz-talon/$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-latest.tar.gz
- mc cp $CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-latest.tar.gz.md5sum.txt nz/ci-cd/nz-talon/$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-latest.tar.gz.md5sum.txt
- cd ../
artifacts:
name: "$CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA"

14
pom.xml
View File

@@ -6,7 +6,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.4</version>
<version>3.1.3</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>net.geedge</groupId>
@@ -15,7 +15,7 @@
<name>nz-talon</name>
<description>nezha promtail config sync talon</description>
<properties>
<java.version>1.8</java.version>
<java.version>21</java.version>
<log4j2.version>2.17.0</log4j2.version>
</properties>
<dependencies>
@@ -27,6 +27,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<optional>true</optional>
</dependency>
<dependency>
@@ -66,6 +67,15 @@
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<release>${java.version}</release>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>

View File

@@ -1,21 +1,20 @@
package net.geedge.confagent.controller;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.hutool.log.Log;
import net.geedge.confagent.annotation.UnCheckToken;
import net.geedge.confagent.entity.AuthEntity;
import net.geedge.confagent.util.R;
import net.geedge.confagent.util.RCode;
import net.geedge.confagent.util.Tool;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@RestController
@RequestMapping(value={"/auth"})

View File

@@ -8,7 +8,6 @@ import net.geedge.confagent.util.ConfagentUtil;
import net.geedge.confagent.util.R;
import net.geedge.confagent.util.RCode;
import net.geedge.confagent.util.Tool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;

View File

@@ -1,11 +1,13 @@
package net.geedge.confagent.controller;
import net.geedge.confagent.util.*;
import jakarta.servlet.http.HttpServletRequest;
import net.geedge.confagent.util.OSHIUtils;
import net.geedge.confagent.util.R;
import net.geedge.confagent.util.Tool;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.List;

View File

@@ -1,6 +1,7 @@
package net.geedge.confagent.controller;
import cn.hutool.log.Log;
import jakarta.servlet.http.HttpServletRequest;
import net.geedge.confagent.util.ConfagentUtil;
import net.geedge.confagent.util.R;
import net.geedge.confagent.util.RCode;
@@ -11,8 +12,10 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
@RestController

View File

@@ -2,16 +2,18 @@ package net.geedge.confagent.controller;
import cn.hutool.core.net.url.UrlBuilder;
import cn.hutool.core.net.url.UrlPath;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpConnection;
import cn.hutool.log.Log;
import jakarta.servlet.ServletInputStream;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import net.geedge.confagent.annotation.UnCheckToken;
import net.geedge.confagent.util.ConfagentUtil;
import net.geedge.confagent.util.R;
import net.geedge.confagent.util.RCode;
import net.geedge.confagent.util.Tool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
@@ -24,11 +26,6 @@ import java.net.HttpURLConnection;
import java.nio.charset.Charset;
import java.util.*;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@RestController
@RequestMapping("/promtail")
public class PromtailController extends BaseController{
@@ -203,7 +200,7 @@ public class PromtailController extends BaseController{
}
public void requestProm(String host, int port, String path, HttpServletRequest request, HttpServletResponse response) {
String queryString = ReflectUtil.invoke(request, "getQueryString");
String queryString = request.getQueryString();
queryString = StrUtil.isNotBlank(queryString)?queryString:"";
String url = UrlBuilder.create().setScheme("http").setHost(host).setPort(port).setPath(UrlPath.of(path, Charset.forName("UTF-8"))).toURL().toString() + "?" + queryString;
@@ -224,7 +221,7 @@ public class PromtailController extends BaseController{
while (headerNames.hasMoreElements()) {
String hn = headerNames.nextElement();
if(!"authorization".equalsIgnoreCase(hn)) {
ReflectUtil.invoke(conn,"addRequestProperty",hn,request.getHeader(hn));
conn.addRequestProperty(hn, request.getHeader(hn));
}
}
@@ -245,10 +242,12 @@ public class PromtailController extends BaseController{
String key = en.getKey();
if (Tool.StrUtil.isEmpty(key) || "Transfer-Encoding".equals(key)) continue;
List<String> value = en.getValue();
ReflectUtil.invoke(response,"addHeader",key,Tool.StrUtil.join("; ",value));
response.addHeader(key, Tool.StrUtil.join("; ", value));
}
response.setStatus(responseCode);
if (responseCode > 400) {
response.sendError(responseCode, responseMessage);
}
ReflectUtil.invoke(response, "setStatus", responseCode, responseMessage);
Tool.IoUtil.copy(connInputStream, resOutputStream);
resOutputStream.flush();//flush 输出流
} catch (Exception e) {

View File

@@ -1,22 +1,20 @@
package net.geedge.confagent.interceptor;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import cn.hutool.log.Log;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import net.geedge.confagent.annotation.UnCheckToken;
import net.geedge.confagent.util.ConfagentUtil;
import net.geedge.confagent.util.R;
import net.geedge.confagent.util.RCode;
import net.geedge.confagent.util.Tool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import java.io.IOException;
import java.io.PrintWriter;
@Component
public class TokenInterceptor implements HandlerInterceptor {

View File

@@ -1,5 +1,12 @@
package net.geedge.confagent.util;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.log.Log;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
@@ -8,15 +15,6 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.log.Log;
@Configuration
@Order(value = 1)
public class ConfagentUtil {

View File

@@ -3,7 +3,10 @@ package net.geedge.confagent.util;
import cn.hutool.log.Log;
import oshi.SystemInfo;
import oshi.hardware.*;
import oshi.software.os.*;
import oshi.software.os.InternetProtocolStats;
import oshi.software.os.NetworkParams;
import oshi.software.os.OSProcess;
import oshi.software.os.OperatingSystem;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -97,7 +100,7 @@ public class OSHIUtils {
}
List<HashMap<Object, Object>> network = Tool.ListUtil.list(false);
List<NetworkIF> networkIFs = hal.getNetworkIFs();
List<NetworkIF> networkIFs = hal.getNetworkIFs(true);
for (NetworkIF networkIF : networkIFs) {
HashMap<Object, Object> networkData = Tool.MapUtil.newHashMap();
networkData.put("index", networkIF.getIndex());

View File

@@ -1,17 +1,17 @@
package net.geedge.confagent.util;
import cn.hutool.log.Log;
import net.geedge.confagent.ConfagentApplication;
import java.awt.Graphics;
import java.awt.Robot;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import java.awt.*;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.lang.ref.PhantomReference;
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;
import java.lang.ref.*;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.net.URLDecoder;
@@ -26,13 +26,6 @@ import java.util.Collection;
import java.util.Iterator;
import java.util.Spliterator;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
public class Tool {
/**

View File

@@ -12,6 +12,45 @@ service_exists(){
fi
}
# 初始化 rsyslog & logrotate 配置
fn_init_syslog_logrotate_config(){
# promtail
cat > /etc/rsyslog.d/promtail.conf << "EOF"
if $programname == 'promtail' then {
/var/log/nezha/promtail/promtail.log
stop
}
EOF
cat > /etc/logrotate.d/promtail << "EOF"
/var/log/nezha/promtail/*.log {
daily
missingok
maxsize 100M
rotate 7
copytruncate
compress
}
EOF
# telegraf
cat > /etc/rsyslog.d/telegraf.conf << "EOF"
if $programname == 'telegraf' then {
/var/log/nezha/telegraf/telegraf.log
stop
}
EOF
cat > /etc/logrotate.d/telegraf << "EOF"
/var/log/nezha/telegraf/*.log {
daily
missingok
maxsize 100M
rotate 7
copytruncate
compress
}
EOF
}
compareMD5(){
if [ ! -f $1 ] || [ ! -f $2 ];then
echo 1
@@ -41,10 +80,8 @@ restoreComponentConfig(){
for i in $(ls $2);do
if [ 1 -eq `compareMD5 $1/$i $2/$i` ];then
if [ -f $1/${i} ];then
echo 'return config file '$1/${i}
cp -f $2/$i $1/$i
fi
echo 'return config file '$1/${i}
cp -f $2/$i $1/$i
fi
done
}
@@ -73,7 +110,8 @@ Description=nz-talon
After=network.target
[Service]
WorkingDirectory=/opt/nezha/nz-talon
ExecStart=/opt/nezha/nz-talon/xjar ${JAVA_EXE} -Dnz-agent.dir=/opt/nezha/nz-talon -jar /opt/nezha/nz-talon/nz-talon.xjar
EnvironmentFile=-/opt/nezha/nz-talon/config/config.conf
ExecStart=/opt/nezha/nz-talon/xjar ${JAVA_EXE} --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/jdk.internal.loader=ALL-UNNAMED -Dnz-agent.dir=/opt/nezha/nz-talon -jar /opt/nezha/nz-talon/nz-talon.xjar
RestartSec=5s
Restart=always
[Install]
@@ -116,10 +154,14 @@ LimitMEMLOCK=8M:8M
WantedBy=multi-user.target
EOF
fn_init_syslog_logrotate_config
systemctl daemon-reload
systemctl enable nz-talon && systemctl restart nz-talon
systemctl enable nz-promtail && systemctl restart nz-promtail
systemctl enable nz-telegraf && systemctl restart nz-telegraf
systemctl enable crond && systemctl restart crond
systemctl enable rsyslog && systemctl restart rsyslog
echo 'install nz-talon success !'
fi
@@ -148,7 +190,13 @@ if [ 2 -eq $1 ];then
restoreComponentConfig $TELEGRAF_PATH/telegraf.d $TMP_PATH/telegraf/telegraf.d
fi
fi
fn_init_syslog_logrotate_config
systemctl daemon-reload
systemctl restart nz-talon
systemctl enable crond && systemctl restart crond
systemctl enable rsyslog && systemctl restart rsyslog
# nz-promtail.service
if service_exists nz-promtail; then

View File

@@ -37,8 +37,11 @@ if [ 0 -eq $1 ];then
fi
rm -rf /usr/lib/systemd/system/{nz-talon.service,promtail.service,nz-promtail.service,nz-telegraf.service}
rm -rf /etc/rsyslog.d/{promtail.conf,telegraf.conf}
rm -rf /etc/logrotate.d/{promtail,telegraf}
systemctl daemon-reload
systemctl restart rsyslog
echo 'uninstall success!'
fi

View File

@@ -12,7 +12,7 @@ fi
RPM_FULL_NAME=${PACKAGE_NAME}-${PACKAGE_VERSION}-${ITERATION}.x86_64.rpm
# 依赖jdk 文件名
JDK_FILENAME=jdk-8u202-linux-x64.tar.gz
JDK_FILENAME=openjdk-21_linux-x64_bin.tar.gz
# 初始化 minio
mc alias set nz $MINIO_HOST $MINIO_USER $MINIO_PWD