kafka 日志相關配置

日志目錄

  • ${kafka.logs.dir}/server.log :服務器日志
  • ${kafka.logs.dir}/state-change.log:狀態變化日志
  • ${kafka.logs.dir}/kafka-request.log:請求處理日志
  • ${kafka.logs.dir}/log-cleaner.log:日志清理
  • ${kafka.logs.dir}/controller.log:管理日志
  • ${kafka.logs.dir}/kafka-authorizer.log:認證日志

log4j.properties 文件

log4j.properties 是 kafka 操作日志配置文件

log4j.properties 文件的一些說明

# 日志級別覆蓋規則  優先級:ALL < DEBUG < INFO <WARN < ERROR < FATAL < OFF
# 1.子日志log4j.logger會覆蓋主日志log4j.rootLogger,這里設置的是日志輸出級別,Threshold設置appender的日志接收級別;
# 2.log4j.logger級別低于Threshold,appender接收級別取決于Threshold級別;
# 3.log4j.logger級別高于Threshold,appender接收級別取決于log4j.logger級別,因為輸出里就沒有Threshold要求的日志;
# 4.子logger設置,主要與rootLogger區分開打印日志 一般與log4j.additivity配合使用
# log4j.additivity 是否繼承父Logger的輸出源(appender),默認是true 
# true 在stdout, kafkaAppender里輸出 也會在stateChangeAppender輸出
# 這里需要單獨輸出 所以設置為false 只會在stateChangeAppender輸出
# log4j.logger后面如果沒有appender,則默認使用log4j.rootLogger后面設置的appender
# 如果使用org.apache.log4j.RollingFileAppender  可以使用MaxFileSize設置最大文件大小  MaxBackupIndex設置最大文件數量

config/log4j.properties中日志的級別設置有的是TRACE,在長時間運行過程中產生的日志大小嚇人,所以如果沒有特殊需求,強烈建議將其更改成INFO級別。

具體修改方法如下所示,將config/log4j.properties文件中最后的幾行中的TRACE改成INFO或INFO以上

# 主日志設置 
log4j.rootLogger=ERROR, stdout, kafkaAppender# 控制臺的appender和layout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n# kafkaAppender的appender和layout
log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log
log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n# 狀態變化日志
log4j.appender.stateChangeAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.stateChangeAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.stateChangeAppender.File=${kafka.logs.dir}/state-change.log
log4j.appender.stateChangeAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.stateChangeAppender.layout.ConversionPattern=[%d] %p %m (%c)%n# 請求處理日志
log4j.appender.requestAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.requestAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.requestAppender.File=${kafka.logs.dir}/kafka-request.log
log4j.appender.requestAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.requestAppender.layout.ConversionPattern=[%d] %p %m (%c)%n# 日志清理格式
log4j.appender.cleanerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.cleanerAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.cleanerAppender.File=${kafka.logs.dir}/log-cleaner.log
log4j.appender.cleanerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.cleanerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n# controller 日志格式
log4j.appender.controllerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.controllerAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.controllerAppender.File=${kafka.logs.dir}/controller.log
log4j.appender.controllerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.controllerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n# authorizer日志格式
log4j.appender.authorizerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.authorizerAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.authorizerAppender.File=${kafka.logs.dir}/kafka-authorizer.log
log4j.appender.authorizerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.authorizerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n######################################################
# zookeeper
log4j.logger.org.apache.zookeeper=INFO# kafka
log4j.logger.kafka=INFO# org.apache.kafka
log4j.logger.org.apache.kafka=INFO# 請求處理日志
log4j.logger.kafka.request.logger=INFO, requestAppender
log4j.additivity.kafka.request.logger=false
# log4j.logger.kafka.network.Processor=INFO, requestAppender
# log4j.additivity.kafka.network.Processor=false  # 配置文件有的沒有
# log4j.logger.kafka.server.KafkaApis=INFO, requestAppender
log4j.additivity.kafka.server.KafkaApis=false
log4j.logger.kafka.network.RequestChannel$=INFO, requestAppender
log4j.additivity.kafka.network.RequestChannel$=false# controller
log4j.logger.kafka.controller=INFO, controllerAppender
log4j.additivity.kafka.controller=false#kafka-logs清理
log4j.logger.kafka.log.LogCleaner=INFO, cleanerAppender
log4j.additivity.kafka.log.LogCleaner=false#狀態變化日志
# log4j.logger.state.change.logger=INFO, stateChangeAppender
# log4j.additivity.state.change.logger=false#authorizer
log4j.logger.kafka.authorizer.logger=INFO, authorizerAppender
log4j.additivity.kafka.authorizer.logger=false

server.properties 文件

kafka 數據

在server.properties中配置了log.dirs值,其實表示的是kafka數據的存放目錄,而非日志目錄

log.dirs=/data/kafka

kafka 日志清理

Kafka日志管理器允許定制刪除策略。目前的策略是刪除修改時間在N天之前的日志(按時間刪除),也可以使用另外一個策略:保留最后的N GB數據的策略(按大小刪除)。為了避免在刪除時阻塞讀操作,采用了copy-on-write形式的實現,刪除操作進行時,讀取操作的二分查找功能實際是在一個靜態的快照副本上進行的,這類似于Java的CopyOnWriteArrayList。

Kafka消費日志刪除思想:Kafka把topic中一個parition大文件分成多個小文件段,通過多個小文件段,就容易定期清除或刪除已經消費完文件,減少磁盤占用

log.cleanup.policy=delete啟用刪除策略
# 直接刪除,刪除后的消息不可恢復。可配置以下兩個策略:
# 清理超過指定時間清理: 
log.retention.hours=168
# 超過指定大小后,刪除舊的消息:
log.retention.bytes=1073741824

也可以寫個定時清理腳本來清除日志結合

crontab 腳本

0 0 2 \* \* ? /home/cluster/kafka211/bin/cleanupkafkalog.sh

清理腳本

#!/bin/bash# log dir
logDir=/log/kafka
#keep 60 file
count=60
count=$[$count+1]
LOGNUM=`ls -l /home/cluster/kafka211/logs/server.log.* |wc -l`
if [ $LOGNUM -gt 0 ]; thenls -t $logDir/server.log.* | tail -n +$count | xargs rm -f
fi#kafkaServer.out 
if [ -e "$logDir/kafkaServer.out" ]; thenrm -f /home/cluster/kafka211/logs/kafkaServer.out
fi

壓縮策略

只保留每個key最后一個版本的數據。

log.cleaner.enable=true    # 首先在broker的配置中設置啟用cleaner,這個默認是關閉的。
log.cleanup.policy=compact # 在Topic的配置中設置,啟用壓縮策略。

bin/kafka-run-class.sh 文件

GC 日志

kafka默認打印GC日志,如下,

$ ls
kafka-authorizer.log          kafkaServer-gc.log.3  kafkaServer-gc.log.8      server.log.2018-10-22-14
kafka-request.log             kafkaServer-gc.log.4  kafkaServer-gc.log.9      server.log.2018-10-22-15
kafkaServer-gc.log.0          kafkaServer-gc.log.5  kafkaServer.out
kafkaServer-gc.log.1          kafkaServer-gc.log.6  server.log
kafkaServer-gc.log.2.current  kafkaServer-gc.log.7  server.log.2018-10-22-13

生產環境不需要GC。修改 bin/kafka-run-class.sh腳本,將參數 KAFKA_GC_LOG_OPTS=" " 設置為空格即可,重啟kafka之后就不再打印GC日志了。

[cluster@PCS102 bin]$ vim kafka-run-class.shGC_FILE_SUFFIX='-gc.log'
GC_LOG_FILE_NAME=''
if [ "x$GC_LOG_ENABLED" = "xtrue" ]; thenGC_LOG_FILE_NAME=$DAEMON_NAME$GC_FILE_SUFFIXKAFKA_GC_LOG_OPTS="-Xloggc:$LOG_DIR/$GC_LOG_FILE_NAME -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M"
KAFKA_GC_LOG_OPTS=" "
fi

日志保存目錄

Kafka運行時日志默認輸出到$KAFKA_HOME/logs目錄下,容易撐爆分區,造成操作系統崩潰。需要將日志輸出到指定分區,比如/var/log目錄下
修改 bin/kafka-run-class.sh 腳本增加一行 LOG_DIR="/var/log/kafka"

LOG_DIR=/var/log/kafka  # 我是新增的
# Log directory to use
if [ "x$LOG_DIR" = "x" ]; thenLOG_DIR="$base_dir/logs"
fi

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453834.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453834.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453834.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux mc服務器 mod_如何在linux搭建MC服務器

摘要&#xff1a;前言Q&#xff1a;為什么要用linux搭建MC服務器&#xff1f;A&#xff1a;因為linux系統占用率低&#xff0c;跑服務器效果非常好Q&#xff1a;看不懂linux ssh&#xff0c;后期自己無力運維怎么辦A&#xff1a;沒關系&#xff0c;這個教程是通過安裝BT...前言…

flask-SQLAlchemy 使用 session.commit() 處理異常回滾

最為原始的try/except辦法&#xff0c;多次插入數據就要寫多次&#xff0c;很麻煩&#xff0c;使用python原生的contextlib.contextmanager簡化代碼&#xff01; try:user_db User(emailself.email, nicknameself.nickname, passwordself.password)db.session.add(user_db)#所…

小米機器人清理主刷和軸承_掃地機主刷怎樣更換

原標題&#xff1a;掃地機主刷怎樣更換隨著電動掃地機逐漸取代手動清潔&#xff0c;電動掃地機的工作量不斷增加&#xff0c;從而導致主刷磨損更加嚴重&#xff0c;并增加了主刷更換的次數。因此&#xff0c;偉頓在這里告訴大家掃地機主刷怎樣更換&#xff1a;1 .首先&#xff…

多線程編程指南

1. 多線程編程指南1--線程基礎 線程編程指南1--線程基礎 Wednesday, 29. March 2006, 11:48:45 多線程 本文出自:BBS水木清華站 作者:Mccartney (coolcat) (2002-01-29 20:25:25) multithreading可以被翻譯成多線程控制。與傳統的UNIX不同&#xff0c;一個傳統 的UNIX進…

路由器和貓的區別

路由器和貓的區別 網絡在我們現在生活中必不可少,我們鏈接互聯網經常需要用到貓和路由器,但是依然有很多菜鳥根本不知道什么是貓什么是路由器,至于貓和路由器怎么使用就更不知道了,下面給大家詳細的講解下路由器和貓的區別。 路由器和貓的用途和鏈接位置不一樣,如下圖: 路由器:…

Docker 精通之 docker-compose

1、Docker-compose簡介 1.1、ocker-compose簡介 Docker-Compose項目是Docker官方的開源項目&#xff0c;負責實現對Docker容器集群的快速編排。   Docker-Compose將所管理的容器分為三層&#xff0c;分別是工程&#xff08;project&#xff09;&#xff0c;服務&#xff08…

json數據格式 穗康碼_Json數據格式

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。JSON采用完全獨立于語言的文本格式&#xff0c;這些特性使JSON成為理想的數據交換語言。易于人閱讀和編寫&#xff0c;同時也易于機器解析和生成。JSON 比 XML 更小、更快&#xff0c;更易解析。JSON建構于兩種結…

Linux 系統版本查詢

顯示Linux版本信息輸入"cat /proc/version",說明正在運行的內核版本。輸入"cat /etc/issue", 顯示的是發行版本信息。輸入"lsb_release -a ",可對多個linux版本適用。輸入"uname -a ",可顯示電腦以及操作系統的相關信息。轉載于:https…

kafka 命令行命令大全

kafka 腳本 connect-distributed.sh connect-mirror-maker.sh connect-standalone.sh kafka-acls.sh kafka-broker-api-versions.sh kafka-configs.sh kafka-console-consumer.sh kafka-console-producer.sh kafka-consumer-groups.sh kafka-consumer-perf-test.sh kafka-dele…

kotlin將對象轉換為map_Kotlin程序將哈希映射(HashMap)轉換為列表(List)

Kotlin程序將哈希映射(HashMap)轉換為列表(List)在此程序中&#xff0c;您將學習在Kotlin中將map轉換為列表的不同方法。示例&#xff1a;將map轉換為列表示例import java.util.ArrayListimport java.util.HashMapfun main(args: Array) {val map HashMap()map.put(1, "a…

零元學Expression Blend 4 - Chapter 4元件重復運用的觀念

零元學Expression Blend 4 - Chapter 4元件重復運用的觀念 原文:零元學Expression Blend 4 - Chapter 4元件重復運用的觀念本章將教大家Blend元件重復運用的觀念&#xff0c;這在Silverlight設計中是非常重要的&#xff0c;另外加碼贈送漸層工具(Gradient Tool)。 ? 本章將教…

Python 內置模塊之 ConfigParser - 解析 ini 文件

ini配置文件是被configParser直接解析然后再加載的&#xff0c;如果只是修改配置文件&#xff0c;并不會改變已經加載的配置 INI文件結構簡單描述 INI文件就是擴展名為“ini”的文件。在Windows系統中&#xff0c;INI文件是很多&#xff0c;最重要的就是“System.ini”、“Sy…

電腦老是彈出vrvedp_m_出現三個可疑進程vrvedp_m.exe?vrvrf_c.exe?vrvsafec.exe

滿意答案 你機器里裝了北信源的DeviceRegist軟件,這個軟件不是殺毒軟件或者防毒軟件,而是一個遠程桌面管理軟件。這類軟件其實和木馬程序原理上一樣,只不過是正規軟件公司開發的,但是流氓程度不容小覷,即使在安全模式下也會加載vrvrf_c.exe,vrvedp_m.exe,vrvsafec.exe,wat…

音視頻編解碼 文件格式 協議內容詳解

編解碼學習筆記&#xff08;一&#xff09;&#xff1a;基本概念 媒體業務是網絡的主要業務之間。尤其移動互聯網業務的興起&#xff0c;在運營商和應用開發商中&#xff0c;媒體業務份量極重&#xff0c;其中媒體的編解碼服務涉及需求分析、應用開發、釋放license收費等等。最…

git 拉取遠程其他分支代碼_【記錄】git 拉取遠程分支代碼,同步到另一個git上...

最近有需求從某git 上拉取所有分支代碼同步到另一git上&#xff0c;現記錄操作步驟&#xff0c;以便日后使用&#xff1a;1&#xff1a;先克隆其中一個分支代碼到本地環境git clone -b test http://賬號:密碼XXX.git2&#xff1a;查看本地分支git brach3&#xff1a;查看遠程分…

WIN下的CMD下載命令

certutil -urlcache -split -f 遠程地址 本地保存的文件跑徑與文 件名 # 如里不寫本地文 件名與路徑名&#xff0c; 會自動跟遠程文 件名相同&#xff0c; 并保存到當前目 錄下另一個是&#xff1a; bitsadmin /rawreturn /transfer getfile http://download.sysinternals.com…

python 第三方模塊之 APScheduler - 定時任務

介紹 APScheduler的全稱是Advanced Python Scheduler。它是一個輕量級的 Python 定時任務調度框架。APScheduler 支持三種調度任務&#xff1a;固定時間間隔&#xff0c;固定時間點&#xff08;日期&#xff09;&#xff0c;Linux 下的 Crontab 命令。同時&#xff0c;它還支持…

hadoop分布式搭建

一&#xff0c;前提&#xff1a;下載好虛擬機和安裝完畢Ubuntu系統。因為我們配置的是hadoop分布式&#xff0c;所以需要兩臺虛擬機&#xff0c;一臺主機&#xff08;master&#xff09;&#xff0c;一臺從機&#xff08;slave&#xff09; 選定一臺機器作為 Master 在 Master …

Python 第三方模塊之 imgaug (圖像增強)

imgaug是一個封裝好的用來進行圖像augmentation的python庫,支持關鍵點(keypoint)和bounding box一起變換。 項目主頁: imgaug doc 1. 安裝和卸載 # 通過github安裝 sudo pip install githttps://github.com/aleju/imgaug# 通過pypi安裝 sudo pip install imgaug# 本地安裝, …

MPEG(mpeg1,mpeg2,mpeg4) 與H264 QP值間 關系

H264 Quant與MPEG Quant數值參對表 x264vfw 的1pass 是按照I q:21P q:24B q:26的量化算的,而且在vfw里面不能改變這些參數.但在mencoder里則可以定義1pass的 qp_constant<1?51>這個和xvid不同的,xvid一般是用q2跑1pass的,當然你也可以在x264設置一下,但是要清楚的是 H.2…