成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 架構
目前公司系統采用Spring Cloud架構,其中服務注冊和發現組件用的Nacos,最近運維抱怨說,磁盤不夠用,日志增長的太快。簡單排查一下,罪魁禍首竟然是Nacos。

 [[408181]]

本文轉載自微信公眾號「程序新視界」,作者二師兄。轉載本文請聯系程序新視界公眾號。

前言

目前公司系統采用Spring Cloud架構,其中服務注冊和發現組件用的Nacos,最近運維抱怨說,磁盤不夠用,日志增長的太快。簡單排查一下,罪魁禍首竟然是Nacos。

按理說Nacos作為服務注冊中心,不會應該會產生太多日志的,本身涉及的服務也不多,但幾天就會產生1G以上的日志,的確有點瘋狂。這篇文章就聊聊Nacos的日志系統。

事件背景

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

我們知道Nacos是基于Spring Boot實現的,access_log日志是Spring Boot提內置的Tomcat的訪問日志。關于該項日志的配置,沒有保留最大天數,也沒有日志大小的控制。而且隨著Nacos Server與各個服務直接的心跳、獲取、注冊等會不停的產生訪問日志,微服務越多,日志增長越快。這些日志打印會迅速占用完磁盤空間,帶來資源浪費和運維成本。

解決方案

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

  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= 

可以看到,關于訪問日志支持關閉、日志輸出格式以及日志輸出的目錄。

在測試環境,我們可以直接將enabled的配置項設置為false,直接關閉該日志的輸出。

  1. server.tomcat.accesslog.enabled=false 

但在生產環境,這樣操作就有一定的風險了。當關閉之后,生產出現問題時需要根據日志進行排查,就會找不到對應的日志。

此時,只能通過其他方式進行處理,比如在Linux操作系統下通過編寫crontab來完成日志的定時刪除。對應的腳本示例如下:

  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. # 具體位置可調整 
  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 會定時刪除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 

雖然問題解決了,但很明顯并不優雅,這也是Nacos Server日志輸出的問題之一。

日志級別動態調整

關于Nacos Server日志的輸出級別,在1.1.3版本之前,同樣會打印大量的日志,而且沒辦法動態的進行調整。在此版本之后,日志輸出得到了優化,并且支持通過API的形式來進行日志級別的調整,示例如下:

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

客戶端日志

業務系統集成的客戶端在1.1.3版本之后,也進行了優化,避免日志大量打印(主要涉及心跳日志、輪詢日志等)。

在業務系統的application.yml配置文件中,可通過日志級別設置來進行控制:

  1. # 日志級別,可以指定到具體類 
  2. logging: 
  3.   level
  4.     com.alibaba.nacos: warn 

也可以通過啟動時的JVM參數來進行控制,默認是info級別:

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

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

更細的日志配置

查看conf目錄下的nacos-logback.xml配置,你會發現Nacos相關的日志配置項非常多,如果因項目需要進行更精細化的配置,可在此文件中進行直接配置。

以naming-server對應的append配置為例,看一下默認的配置:

  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> 

 

 

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

小結

關于Nacos的日志輸出就聊這么多,整體而言相關的日志輸出有些過于多了,而且在靈活配置方面還有待提升。基于目前的現狀我們可以通過自定義或定時任務等配合完成日志輸出與管理。

 

責任編輯:武曉燕 來源: 程序新視界
相關推薦

2021-07-05 06:51:41

Nacos微服務源碼

2021-12-06 23:02:58

運營商信號資費

2022-08-30 23:49:17

Windows微軟Windows 11

2013-03-14 13:49:31

Hotmail郵件服務器

2021-05-26 16:00:51

微信表情移動應用

2021-07-10 08:57:45

Windows 11操作系統微軟

2021-07-16 10:42:55

微信鈴聲功能iOS 8.0.8

2022-04-26 05:57:18

微服務Nacos

2015-09-16 13:20:09

魅族

2013-10-29 09:08:05

2013-10-29 09:32:05

2012-03-10 20:55:40

Nokia

2014-07-17 09:21:57

編程編程漫畫

2023-02-18 13:34:14

Nacos健康檢查機制

2014-08-06 14:13:30

Windows Pho

2012-10-16 16:27:32

UbuntuAmazon搜索

2021-03-15 10:03:10

框架自動化開發

2014-10-15 16:47:31

Android微軟

2012-06-05 14:35:00

Windows Pho

2021-07-07 07:44:20

微服務Nacos緩存
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产小网站 | 久久日韩精品一区二区三区 | 欧洲精品在线观看 | 国产精品二区三区 | 欧美成人免费在线视频 | 中文字幕一区二区三区精彩视频 | 国产精品视频不卡 | 日韩视频一区在线观看 | 一区二区免费高清视频 | 欧区一欧区二欧区三免费 | 亚洲国产成人av好男人在线观看 | 天天插天天操 | 老司机午夜性大片 | 精品一二区 | 高清色| 国产精品美女久久久久久久网站 | 午夜视频在线观看视频 | 91av免费版 | 一区二区免费 | 午夜寂寞影院在线观看 | 亚洲日韩视频 | 日本黄色免费大片 | 欧美久久天堂 | 国产成人jvid在线播放 | 日韩视频区| 国产精品久久 | 久久精品久久久久久 | 一级大片 | 久久久久免费 | 国产成人精品一区二区三区网站观看 | 国产区在线看 | 中文字幕视频网 | 久久久久国产精品一区 | www.99久久.com | 成人免费视频网站在线观看 | 一级毛片免费 | 欧美日韩高清一区 | 国产精品夜色一区二区三区 | 亚洲午夜精品视频 | 在线视频亚洲 | 在线天堂免费中文字幕视频 |