偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

微服務(wù)之吐槽一下Nacos日志的瘋狂輸出

開(kāi)發(fā) 架構(gòu)
目前公司系統(tǒng)采用Spring Cloud架構(gòu),其中服務(wù)注冊(cè)和發(fā)現(xiàn)組件用的Nacos,最近運(yùn)維抱怨說(shuō),磁盤(pán)不夠用,日志增長(zhǎng)的太快。簡(jiǎn)單排查一下,罪魁禍?zhǔn)拙谷皇荖acos。

 [[408181]]

本文轉(zhuǎn)載自微信公眾號(hào)「程序新視界」,作者二師兄。轉(zhuǎn)載本文請(qǐng)聯(lián)系程序新視界公眾號(hào)。

前言

目前公司系統(tǒng)采用Spring Cloud架構(gòu),其中服務(wù)注冊(cè)和發(fā)現(xiàn)組件用的Nacos,最近運(yùn)維抱怨說(shuō),磁盤(pán)不夠用,日志增長(zhǎng)的太快。簡(jiǎn)單排查一下,罪魁禍?zhǔn)拙谷皇荖acos。

按理說(shuō)Nacos作為服務(wù)注冊(cè)中心,不會(huì)應(yīng)該會(huì)產(chǎn)生太多日志的,本身涉及的服務(wù)也不多,但幾天就會(huì)產(chǎn)生1G以上的日志,的確有點(diǎn)瘋狂。這篇文章就聊聊Nacos的日志系統(tǒng)。

事件背景

經(jīng)過(guò)排查,其中輸出最多的日志為{nacos.home}/logs/access_log.yyyy-mm-dd.log格式的日志。日志中包含了微服務(wù)系統(tǒng)調(diào)用Nacos及集群之間通信的日志,比如心跳(/nacos/v1/ns/instance/beat)、獲取服務(wù)列表(/nacos/v1/ns/instance/list)、狀態(tài)檢查(/nacos/v1/ns/service/status)等。

我們知道Nacos是基于Spring Boot實(shí)現(xiàn)的,access_log日志是Spring Boot提內(nèi)置的Tomcat的訪問(wèn)日志。關(guān)于該項(xiàng)日志的配置,沒(méi)有保留最大天數(shù),也沒(méi)有日志大小的控制。而且隨著Nacos Server與各個(gè)服務(wù)直接的心跳、獲取、注冊(cè)等會(huì)不停的產(chǎn)生訪問(wèn)日志,微服務(wù)越多,日志增長(zhǎng)越快。這些日志打印會(huì)迅速占用完磁盤(pán)空間,帶來(lái)資源浪費(fèi)和運(yùn)維成本。

解決方案

上述的access_log日志輸出Nacos是提供了控制開(kāi)關(guān)的,在Nacos的conf目錄下application.properties配置文件中,默認(rèn)有以下配置:

  1. #*************** Access Log Related Configurations ***************# 
  2. ### If turn on the access log: 
  3. server.tomcat.accesslog.enabled=true 
  4.  
  5. ### The access log pattern: 
  6. server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i 
  7.  
  8. ### The directory of access log: 
  9. server.tomcat.basedir= 

可以看到,關(guān)于訪問(wèn)日志支持關(guān)閉、日志輸出格式以及日志輸出的目錄。

在測(cè)試環(huán)境,我們可以直接將enabled的配置項(xiàng)設(shè)置為false,直接關(guān)閉該日志的輸出。

  1. server.tomcat.accesslog.enabled=false 

但在生產(chǎn)環(huán)境,這樣操作就有一定的風(fēng)險(xiǎn)了。當(dāng)關(guān)閉之后,生產(chǎn)出現(xiàn)問(wèn)題時(shí)需要根據(jù)日志進(jìn)行排查,就會(huì)找不到對(duì)應(yīng)的日志。

此時(shí),只能通過(guò)其他方式進(jìn)行處理,比如在Linux操作系統(tǒng)下通過(guò)編寫(xiě)crontab來(lái)完成日志的定時(shí)刪除。對(duì)應(yīng)的腳本示例如下:

  1. #!/bin/bash 
  2.  
  3. logFile="/data/nacos/bin/logs/nacos_del_access.log" 
  4. # 保留14天日志 
  5. date=`date -d "$date -14 day" +"%Y-%m-%d"
  6. # 具體位置可調(diào)整 
  7. delFilePath="/data/nacos/bin/logs/access_log.${date}.log" 
  8.  
  9. if [ ! -f "${logFile}" ];then 
  10.     echo 'access log文件打印日志頻繁. /etc/cron.daily/nacosDelAccessLogs.sh 會(huì)定時(shí)刪除access日志文件' >>${logFile} 
  11. fi 
  12. # 日志文件存在, 則刪除 
  13. if [  -f "${delFilePath}" ];then 
  14.     rm -rf ${delFilePath} 
  15.     curDate=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"` 
  16.     echo '['${curDate}'] 刪除文件'${delFilePath} >>${logFile} 
  17. fi 

雖然問(wèn)題解決了,但很明顯并不優(yōu)雅,這也是Nacos Server日志輸出的問(wèn)題之一。

日志級(jí)別動(dòng)態(tài)調(diào)整

關(guān)于Nacos Server日志的輸出級(jí)別,在1.1.3版本之前,同樣會(huì)打印大量的日志,而且沒(méi)辦法動(dòng)態(tài)的進(jìn)行調(diào)整。在此版本之后,日志輸出得到了優(yōu)化,并且支持通過(guò)API的形式來(lái)進(jìn)行日志級(jí)別的調(diào)整,示例如下:

  1. # 調(diào)整naming模塊的naming-raft.log的級(jí)別為error: 
  2. curl -X PUT '$nacos_server:8848/nacos/v1/ns/operator/log?logName=naming-raft&logLevel=error' 
  3. # 調(diào)整config模塊的config-dump.log的級(jí)別為warn: 
  4. curl -X PUT '$nacos_server:8848/nacos/v1/cs/ops/log?logName=config-dump&logLevel=warn' 

客戶端日志

業(yè)務(wù)系統(tǒng)集成的客戶端在1.1.3版本之后,也進(jìn)行了優(yōu)化,避免日志大量打印(主要涉及心跳日志、輪詢(xún)?nèi)罩镜?。

在業(yè)務(wù)系統(tǒng)的application.yml配置文件中,可通過(guò)日志級(jí)別設(shè)置來(lái)進(jìn)行控制:

  1. # 日志級(jí)別,可以指定到具體類(lèi) 
  2. logging: 
  3.   level
  4.     com.alibaba.nacos: warn 

也可以通過(guò)啟動(dòng)時(shí)的JVM參數(shù)來(lái)進(jìn)行控制,默認(rèn)是info級(jí)別:

  1. -Dcom.alibaba.nacos.naming.log.level=warn -Dcom.alibaba.nacos.config.log.level=warn 

上述示例分別指定了Naming客戶端和Config客戶端的日志級(jí)別,適用于1.0.0及以上版本。

更細(xì)的日志配置

查看conf目錄下的nacos-logback.xml配置,你會(huì)發(fā)現(xiàn)Nacos相關(guān)的日志配置項(xiàng)非常多,如果因項(xiàng)目需要進(jìn)行更精細(xì)化的配置,可在此文件中進(jìn)行直接配置。

以naming-server對(duì)應(yīng)的append配置為例,看一下默認(rèn)的配置:

  1. <appender name="naming-server" 
  2.           class="ch.qos.logback.core.rolling.RollingFileAppender"
  3.     <file>${LOG_HOME}/naming-server.log</file> 
  4.     <append>true</append> 
  5.     <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"
  6.         <fileNamePattern>${LOG_HOME}/naming-server.log.%d{yyyy-MM-dd}.%i</fileNamePattern> 
  7.         <maxFileSize>1GB</maxFileSize> 
  8.         <maxHistory>7</maxHistory> 
  9.         <totalSizeCap>7GB</totalSizeCap> 
  10.         <cleanHistoryOnStart>true</cleanHistoryOnStart> 
  11.     </rollingPolicy> 
  12.     <encoder> 
  13.         <Pattern>%date %level %msg%n%n</Pattern> 
  14.         <charset>UTF-8</charset> 
  15.     </encoder> 
  16. </appender> 

 

 

這里根據(jù)自己的需要,可調(diào)整輸出的日志格式、日志文件分割、日志保留日期及日志壓縮等處理。

小結(jié)

關(guān)于Nacos的日志輸出就聊這么多,整體而言相關(guān)的日志輸出有些過(guò)于多了,而且在靈活配置方面還有待提升?;谀壳暗默F(xiàn)狀我們可以通過(guò)自定義或定時(shí)任務(wù)等配合完成日志輸出與管理。

 

責(zé)任編輯:武曉燕 來(lái)源: 程序新視界
相關(guān)推薦

2021-07-05 06:51:41

Nacos微服務(wù)源碼

2021-12-06 23:02:58

運(yùn)營(yíng)商信號(hào)資費(fèi)

2022-08-30 23:49:17

Windows微軟Windows 11

2013-03-14 13:49:31

Hotmail郵件服務(wù)器

2021-05-26 16:00:51

微信表情移動(dòng)應(yīng)用

2021-07-16 10:42:55

微信鈴聲功能iOS 8.0.8

2021-07-10 08:57:45

Windows 11操作系統(tǒng)微軟

2022-04-26 05:57:18

微服務(wù)Nacos

2013-10-29 09:08:05

2013-10-29 09:32:05

2015-09-16 13:20:09

魅族

2012-03-10 20:55:40

Nokia

2014-07-17 09:21:57

編程編程漫畫(huà)

2023-02-18 13:34:14

Nacos健康檢查機(jī)制

2014-08-06 14:13:30

Windows Pho

2012-10-16 16:27:32

UbuntuAmazon搜索

2021-03-15 10:03:10

框架自動(dòng)化開(kāi)發(fā)

2012-05-21 17:37:17

Windows Pho吐槽

2014-10-15 16:47:31

Android微軟

2012-06-05 14:35:00

Windows Pho
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)