From 55e9084a46c4244ca1daa9fcfda06c504974e692 Mon Sep 17 00:00:00 2001 From: shizhendong Date: Wed, 26 Apr 2023 15:08:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20NEZ-2138=20nz-talon=20=E6=89=93?= =?UTF-8?q?=E5=8C=85=20telegraf=20=E5=BC=80=E6=BA=90=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1、nz-talon 编译打包时,打包 telegraf-1.26.2 (当前最新版本) 2、内置 cpu,mem,disk ,io 等默认监控配置 3、telegraf service 名称: nz-telegraf 4、promtail service 名称改为: nz-promtail 5、nz-talon 更新时确保原有 telegraf 配置不丢失 --- .../controller/PromtailController.java | 6 +- tools/afterinstall.sh | 135 +++++++++++++----- tools/afterremove.sh | 31 +++- tools/beforeinstall.sh | 35 ++++- tools/package.sh | 11 +- tools/telegraf.conf | 24 ++++ tools/telegraf.d/cpu.conf | 12 ++ tools/telegraf.d/disk.conf | 13 ++ tools/telegraf.d/diskio.conf | 30 ++++ tools/telegraf.d/kernel.conf | 4 + tools/telegraf.d/mem.conf | 3 + tools/telegraf.d/net.conf | 14 ++ tools/telegraf.d/processes.conf | 6 + tools/telegraf.d/swap.conf | 3 + tools/telegraf.d/system.conf | 3 + tools/telegraf.d/systemd_units.conf | 16 +++ 16 files changed, 302 insertions(+), 44 deletions(-) create mode 100644 tools/telegraf.conf create mode 100644 tools/telegraf.d/cpu.conf create mode 100644 tools/telegraf.d/disk.conf create mode 100644 tools/telegraf.d/diskio.conf create mode 100644 tools/telegraf.d/kernel.conf create mode 100644 tools/telegraf.d/mem.conf create mode 100644 tools/telegraf.d/net.conf create mode 100644 tools/telegraf.d/processes.conf create mode 100644 tools/telegraf.d/swap.conf create mode 100644 tools/telegraf.d/system.conf create mode 100644 tools/telegraf.d/systemd_units.conf diff --git a/src/main/java/net/geedge/confagent/controller/PromtailController.java b/src/main/java/net/geedge/confagent/controller/PromtailController.java index 3e7ac0e..ddeaf6e 100644 --- a/src/main/java/net/geedge/confagent/controller/PromtailController.java +++ b/src/main/java/net/geedge/confagent/controller/PromtailController.java @@ -40,16 +40,16 @@ public class PromtailController extends BaseController{ @Value("${confagent.promtail.query.auth:true}") private Boolean queryAuth; - @Value("${confagent.promtail.restart:systemctl restart promtail}") + @Value("${confagent.promtail.restart:systemctl restart nz-promtail}") private String restartCmd; @Value("${confagent.versionFile:promtail.version}") private String versionFile; - @Value("${confagent.promtail.startCmd:systemctl start promtail.service}") + @Value("${confagent.promtail.startCmd:systemctl start nz-promtail.service}") private String startCmd; - @Value("${confagent.promtail.stopCmd:systemctl stop promtail.service}") + @Value("${confagent.promtail.stopCmd:systemctl stop nz-promtail.service}") private String stopCmd; private final String[] QUERY_API_SUFFIX = {"query","query_range","series","labels","label","values"}; diff --git a/tools/afterinstall.sh b/tools/afterinstall.sh index 6715ff3..afbce06 100644 --- a/tools/afterinstall.sh +++ b/tools/afterinstall.sh @@ -32,7 +32,7 @@ Restart=always WantedBy=multi-user.target EOF - cat > /usr/lib/systemd/system/promtail.service <<"EOF" + cat > /usr/lib/systemd/system/nz-promtail.service <<"EOF" [Unit] Description=nz-talon After=network.target @@ -42,23 +42,99 @@ EnvironmentFile=/opt/nezha/promtail/config.conf ExecStart=/opt/nezha/promtail/promtail $OPTION RestartSec=5s Restart=always +[Install] +WantedBy=multi-user.target +EOF + + cat > /usr/lib/systemd/system/nz-telegraf.service <<"EOF" +[Unit] +Description=Telegraf +Documentation=https://github.com/influxdata/telegraf +After=network-online.target +Wants=network-online.target + +[Service] +WorkingDirectory=/opt/nezha/telegraf +Type=notify +EnvironmentFile=/opt/nezha/telegraf/config.conf +ExecStart=/opt/nezha/telegraf/telegraf $OPTION +ExecReload=/bin/kill -HUP $MAINPID +Restart=on-failure +RestartForceExitStatus=SIGPIPE +KillMode=control-group +LimitMEMLOCK=8M:8M + [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable nz-talon && systemctl restart nz-talon - systemctl enable promtail && systemctl restart promtail + systemctl enable nz-promtail && systemctl restart nz-promtail + systemctl enable nz-telegraf && systemctl restart nz-telegraf echo 'install nz-talon success !' fi -compareMD5() -{ - if [ ! -f $1 ] || [ ! -f $2 ];then - echo 1 - return 1 - fi - local f1MD5=`md5sum $1|awk '{print $1}'` +# update +if [ 2 -eq $1 ];then + TALON_PATH=/opt/nezha/nz-talon + TMP_PATH=/tmp/nezha/nz-talon + PROMTAIL_PATH=/opt/nezha/promtail + TELEGRAF_PATH=/opt/nezha/telegraf + echo 'move backup config file...' + if [ -d $TMP_PATH ];then + # nz-talon config + restoreComponentConfig $TALON_PATH/config $TMP_PATH/config + + # promtail config + restoreComponentConfig $PROMTAIL_PATH $TMP_PATH/promtail + + # telegraf config + restoreComponentConfig $TELEGRAF_PATH $TMP_PATH/telegraf + restoreComponentConfig $TELEGRAF_PATH/telegraf.d $TMP_PATH/telegraf/telegraf.d + fi + systemctl restart nz-talon + + # nz-promtail.service + if service_exists nz-promtail; then + systemctl restart nz-promtail + else + echo 'service nz-promtail not exists,add this service' + cat > /usr/lib/systemd/system/nz-promtail.service <<"EOF" +[Unit] +Description=nz-talon +After=network.target +[Service] +WorkingDirectory=/opt/nezha/promtail +EnvironmentFile=/opt/nezha/promtail/config.conf +ExecStart=/opt/nezha/promtail/promtail $OPTION +RestartSec=5s +Restart=always +[Install] +WantedBy=multi-user.target +EOF + + systemctl daemon-reload + systemctl enable nz-promtail && systemctl restart nz-promtail + fi +fi + +service_exists(){ + local n=$1 + if [[ $(systemctl list-units --all -t service --full --no-legend "$n.service" | sed 's/^\s*//g' | cut -f1 -d' ') == $n.service ]]; then + return 0 + else + return 1 + fi +} + +compareMD5(){ + if [ ! -f $1 ] || [ ! -f $2 ];then + echo 1 + return 1 + fi + + local f1MD5=`md5sum $1|awk '{print $1}'` local f2MD5=`md5sum $2|awk '{print $1}'` if [ ${f1MD5} = ${f2MD5} ];then @@ -70,28 +146,19 @@ compareMD5() fi } -# update -if [ 2 -eq $1 ];then - TALON_PATH=/opt/nezha/nz-talon - TMP_PATH=/tmp/nezha/nz-talon - PROMTAIL_PATH=/opt/nezha/promtail - echo 'move backup config file...' - if [ -d $TMP_PATH ];then - # 恢复 nz-talon 配置文件 - for i in $(ls $TALON_PATH/config);do - if [ 1 -eq `compareMD5 $WEB_PATH/config/$i $TMP_PATH/config/$i` ];then - echo 'return config file '${i} - cp -f $TMP_PATH/config/$i $TALON_PATH/config/$i - fi - done - # 恢复 promtail 配置文件 - for n in $(ls $TMP_PATH/promtail);do - if [ -f "$PROMTAIL_PATH/$n" ];then - echo 'return config file '${n} - cp -f $TMP_PATH/promtail/$n $PROMTAIL_PATH/$n - fi - done - fi - systemctl restart nz-talon - systemctl restart promtail -fi +# 还原配置文件 +# $1 需要还原的文件目录 /opt/nezha/nz-talon/config /opt/nezha/nz-talon/promtail ... +# $2 备份文件目录 /tmp/nezha/nz-talon/config /tmp/nezha/nz-talon/promtail ... +restoreComponentConfig(){ + if [ ! -d $1 ] || [ ! -d $2 ];then + echo "Directory does not exist" + return 1 + fi + + for i in $(ls $2);do + if [ 1 -eq `compareMD5 $1/$i $2/$i` ];then + echo 'return config file '$1/${i} + cp -f $2/$i $1/$i + fi + done +} diff --git a/tools/afterremove.sh b/tools/afterremove.sh index 39cf06b..8ac5395 100644 --- a/tools/afterremove.sh +++ b/tools/afterremove.sh @@ -4,17 +4,40 @@ if [ 0 -eq $1 ];then echo 'start remove nz-talon module from disk...' systemctl stop nz-talon.service - systemctl stop promtail.service + systemctl stop nz-telegraf.service rm -rf /opt/nezha/nz-talon - rm -rf /opt/nezha/promtail + rm -rf /opt/nezha/telegraf systemctl disable nz-talon.service - systemctl disable promtail.service + systemctl disable nz-telegraf.service - rm -rf /usr/lib/systemd/system/{nz-talon.service,promtail.service} + # promtail.service + if service_exists promtail; then + systemctl stop promtail.service + rm -rf /opt/nezha/promtail + systemctl disable promtail.service + fi + + # nz-promtail.service + if service_exists nz-promtail; then + systemctl stop nz-promtail.service + rm -rf /opt/nezha/promtail + systemctl disable nz-promtail.service + fi + + rm -rf /usr/lib/systemd/system/{nz-talon.service,promtail.service,nz-promtail.service,nz-telegraf.service} systemctl daemon-reload echo 'uninstall success!' fi + +service_exists(){ + local n=$1 + if [[ $(systemctl list-units --all -t service --full --no-legend "$n.service" | sed 's/^\s*//g' | cut -f1 -d' ') == $n.service ]]; then + return 0 + else + return 1 + fi +} diff --git a/tools/beforeinstall.sh b/tools/beforeinstall.sh index d272c6e..84da859 100644 --- a/tools/beforeinstall.sh +++ b/tools/beforeinstall.sh @@ -2,6 +2,7 @@ TALON_PATH=/opt/nezha/nz-talon PROMTAIL_PATH=/opt/nezha/promtail +TELEGRAF_PATH=/opt/nezha/telegraf if [ 2 -eq $1 ];then @@ -10,23 +11,53 @@ if [ 2 -eq $1 ];then fi systemctl stop nz-talon - systemctl stop promtail - + systemctl stop nz-telegraf + + # promtail.service, deprecated + if service_exists promtail; then + echo 'service promtail exists, close the service' + systemctl stop promtail + systemctl disable promtail + rm /usr/lib/systemd/system/promtail.service + systemctl daemon-reload + systemctl reset-failed + fi + + # nz-promtail.service + if service_exists nz-promtail; then + systemctl stop nz-promtail + fi + TMP_PATH=/tmp/nezha/nz-talon rm -rf $TMP_PATH mkdir -p $TMP_PATH mkdir -p $TMP_PATH/promtail + mkdir -p $TMP_PATH/telegraf + cp -rf $TALON_PATH/config $TMP_PATH [ -f "$PROMTAIL_PATH/promtail.yaml" ] && cp -rf $PROMTAIL_PATH/promtail.yaml $TMP_PATH/promtail [ -f "$PROMTAIL_PATH/config.conf" ] && cp -rf $PROMTAIL_PATH/config.conf $TMP_PATH/promtail + + [ -f "$TELEGRAF_PATH/config.conf" ] && cp -rf $TELEGRAF_PATH/config.conf $TMP_PATH/telegraf + [ -f "$TELEGRAF_PATH/telegraf.conf" ] && cp -rf $TELEGRAF_PATH/telegraf.conf $TMP_PATH/telegraf + [ -d "$TELEGRAF_PATH/telegraf.d" ] && cp -rf $TELEGRAF_PATH/telegraf.d $TMP_PATH/telegraf echo 'backup config file from '${TALON_PATH} if [ 0 -lt $(rpm -aq nz-talon|wc -w) ];then echo 'clean before install...' rm -rf $TALON_PATH rm -rf $PROMTAIL_PATH + rm -rf $TELEGRAF_PATH fi fi +service_exists(){ + local n=$1 + if [[ $(systemctl list-units --all -t service --full --no-legend "$n.service" | sed 's/^\s*//g' | cut -f1 -d' ') == $n.service ]]; then + return 0 + else + return 1 + fi +} diff --git a/tools/package.sh b/tools/package.sh index c9fa564..20ce179 100644 --- a/tools/package.sh +++ b/tools/package.sh @@ -21,9 +21,10 @@ mc alias set nz $MINIO_HOST $MINIO_USER $MINIO_PWD BUILD_PATH=$CUR_PWD/build RPM_TALON_PATH=$BUILD_PATH/opt/nezha/nz-talon RPM_PROMTAIL_PATH=$BUILD_PATH/opt/nezha/promtail +RPM_TELEGRAF_PATH=$BUILD_PATH/opt/nezha/telegraf RPM_JDK_PATH=$RPM_TALON_PATH/jdk -mkdir -p $RPM_TALON_PATH $RPM_PROMTAIL_PATH +mkdir -p $RPM_TALON_PATH $RPM_PROMTAIL_PATH $RPM_TELEGRAF_PATH mkdir -p $RPM_TALON_PATH/config mkdir -p $RPM_JDK_PATH @@ -56,6 +57,14 @@ mv $RPM_PROMTAIL_PATH/promtail-linux-amd64 $RPM_PROMTAIL_PATH/promtail cp -f ./tools/config.conf $RPM_PROMTAIL_PATH cp -f ./tools/promtail.yaml $RPM_PROMTAIL_PATH +# telegraf +mc cp nz/depends/telegraf/telegraf-1.26.2.tar.gz +tar -xzf telegraf-1.26.2.tar.gz -C $RPM_TELEGRAF_PATH +cat > $RPM_TELEGRAF_PATH/config.conf <