netconsole 重定向kernel日志到远程服务器
netconsole 重定向kernel日志到远程服务器
linux netconsole 内核模块可以通过配置转发规则讲内核日志通过 udp 发送到远程服务器。通用的Linux发行版内核都已编译 netconsole 模块, 直接使用即可。
如自定义内核启用netconsole只需将以下内核选项打开即可(编译为模块).
CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y
注:
此文为之前的netconsole博文的更新版本.
配置
netconsole 模块加载语法
modprobe netconsole netconsole=[src-port]@[src-ip]/[<dev>],[tgt-port]@<tgt-ip>/[tgt-macaddr]src-port 源端口
src-ip 源ip
dev 指定发送数据网卡设备
tgt-port 目的端口
tgt-ip 目的ip
tgt-macaddr 目的MAC地址,一般为当前设备网关; 统一个网关内可直接指定目的ip的MAC
日志服务器在同一内网, 直接通过ping获取服务器目的MAC:
$ ping -c 1 192.168.1.103 > /dev/null
$ arp -n 192.168.1.103Address HWtype HWaddress Flags Mask Iface192.168.1.103 ether 08:00:46:d4:1d:82 C eth0
日志服务器不在同一内网, 获取网关目的MAC:
$ netstat -rn | grep ^0.0.0.00.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
$ ping -c 1 192.168.1.1 > /dev/null
$ arp -n 192.168.1.1Address HWtype HWaddress Flags Mask Iface192.168.1.1 ether 00:0f:66:5b:2a:3c C eth0
加载netconsole:
echo options netconsole netconsole=6666@192.168.1.102/eth0,6666@192.168.1.103/08:00:46:d4:1d:82 > /etc/modprobe.d/netconsole.conf
modprobe netconsole
or
modprobe netconsole netconsole=6666@192.168.1.102/eth0,6666@192.168.1.103/08:00:46:d4:1d:82
以下为自动化配置脚本, 用于非同网段使用。
自动获取当前默认路由网卡ip及网关ip&MAC地址加载netconsole模块脚本,只需指定syslogd服务器目的地址REMOTE_IP
即可.
REMOTE_IP=1.1.1.1
DEVNAME=`ip r |grep default |cut -d' ' -f5`
REMOTE_PORT=6666
LOCAL_IP=`ifconfig $DEVNAME |grep "inet addr"|cut -f2 -d':'|cut -d' ' -f1`
LOCAL_PORT=${LOCAL_IP##*.}VIA=`ip r |grep default |awk '{print $3}'`
VIAHW=`ping -c 1 $VIA > /dev/null 2>&1; /sbin/arp -an |grep $VIA | awk '{print $4}'`
modprobe netconsole netconsole=$LOCAL_PORT@$LOCAL_IP/$DEVNAME,$REMOTE_PORT@$REMOTE_IP/$VIAHW
netconsole 动态配置
netconsole 使用 configfs 接口实现动态配置, CentOS/RHEL/Fedora/Ubuntu 启动默认都已自动 mount configfs:
mount |grep configfs
如未mount, 执行以下命令:
mount -t configfs configfs /sys/kernel/config
动态配置命令:
modprobe netconsole
cd /sys/kernel/config/netconsole
# 新建一条规则
mkdir 103
cd 103
ls -l
total 0
-rw-r--r-- 1 root root 4096 Mar 11 01:17 dev_name
-rw-r--r-- 1 root root 4096 Mar 11 01:17 enabled
-rw-r--r-- 1 root root 4096 Mar 11 01:17 extended
-rw-r--r-- 1 root root 4096 Mar 11 01:17 local_ip
-r--r--r-- 1 root root 4096 Mar 11 01:17 local_mac
-rw-r--r-- 1 root root 4096 Mar 11 01:17 local_port
-rw-r--r-- 1 root root 4096 Mar 11 01:17 remote_ip
-rw-r--r-- 1 root root 4096 Mar 11 01:17 remote_mac
-rw-r--r-- 1 root root 4096 Mar 11 01:17 remote_port
# 配置与命令行参数一致
echo eth0 > dev_name
echo 6666 > local_port
echo 192.168.1.102 > local_ip
echo 192.168.1.103 > remote_ip
echo 6666 > remote_port
echo 08:00:46:d4:1d:82 > remote_mac
# 启用规则
echo 1 > enabled
# 禁用规则
echo 0 > enabled
删除规则
cd
rmdir /sys/kernel/config/netconsole/103
取消netconsole只需卸载模块即可:
rmmod netconsole
rsyslog
/etc/rsyslog.conf 添加UDP 6666端口监听:
module(load="imudp")
input(type="imudp" port="6666")
重启rsyslog 服务:
systemctl restart rsyslog
注:
防火墙需开放6666端口.
firewall-cmd --zone=$(firewall-cmd --get-default-zone) --add-port=6666/udp --permanent
netcat
在没有syslogd在运行的主机上可以使用 netcat/socat 接收来自远程主机的消息:
nc -u -l -p <port> / nc -u -l <port>
netcat -u -l -p <port> / netcat -u -l <port>
socat udp-recv:<port> -
示例:
nc -l -u 192.168.1.103 6666 | tee ~/netconsole.log
dmesg
-n/--console-level
控制kernel message console 输出级别, 设置输出level为debug
(-n 8
):
dmesg -n 8
参考:
Documentation/networking/netconsole.txt
netconsole 重定向kernel日志到远程服务器相关推荐
- python processpoolexector 释放内存_一起看看python 中日志异步发送到远程服务器
在python中使用日志最常用的方式就是在控制台和文件中输出日志了,logging模块也很好的提供的相应的类,使用起来也非常方便,但是有时我们可能会有一些需求,如还需要将日志发送到远端,或者直接写入数 ...
- cmd中的进度如何捕捉到输出内容_python 中日志异步发送到远程服务器
在python中使用日志最常用的方式就是在控制台和文件中输出日志了,logging模块也很好的提供的相应的类,使用起来也非常方便,但是有时我们可能会有一些需求,如还需要将日志发送到远端,或者直接写入数 ...
- 文件拷贝命令至服务器,远程服务器拷贝文件命令
远程服务器拷贝文件命令 内容精选 换一换 在IntelliJ上选择"项目",找到".idea"文件夹,单击右键选择"新建>文件", 输 ...
- 怎样访问远程服务器文件夹,访问远程服务器文件夹
访问远程服务器文件夹 内容精选 换一换 /home/ubuntu为用户文件夹.此后,可以通过Windows的远程桌面访问到该华为鲲鹏920处理器所在服务器图形桌面,使用root帐号登录. 为加强对系统 ...
- python web 服务器实时监控 websocket_python websocket网页实时显示远程服务器日志信息...
功能:用websocket技术,在运维工具的浏览器上实时显示远程服务器上的日志信息 一般我们在运维工具部署环境的时候,需要实时展现部署过程中的信息,或者在浏览器中实时显示程序日志给开发人员看.你还在用 ...
- 通过Xshell登录远程服务器实时查看log日志
主要想总结以下几点: 1.如何使用生成密钥的方式来登录Xshell连接远端服务器 2.在远程服务器上如何上传和下载文件(下载log文件到本地) 3.如何实时查看log,提取错误信息 一. 使用生成密 ...
- linux讲日志暂停,linux – Rsyslog在日志轮换后停止向远程服务器发送数据
在我的配置中,我有rsyslog负责使用imfile跟踪/home/user/my_app/shared/log/unicorn.stderr.log的更改.使用TCP将内容发送到另一个远程日志记录服 ...
- ESXi与Linux主机配置syslog日志上传远程服务器
ESXi与Linux主机配置syslog日志上传远程服务器 https://www.conum.cn/cloud/vmware/148.html 前言 最近很多客户遇到等级保护监测,需要搭建日志服务器 ...
- log4j中将SocketAppender将日志内容发送到远程服务器
1.服务端配置 1)服务端配置文件log4j-server.properties #Define a narrow log category. A category like debug will p ...
- 【实操日记】使用 PyQt5 设计下载远程服务器日志文件程序
最近通过 PyQt5 设计了一个下载服务器指定日期日志文件的程序,里面有些有意思的技术点,现在做一些分享. PyQt5 是一套 Python 绑定 Digia Qt5 应用的框架,是最强大的 GUI ...
最新文章
- spring Ioc本质
- patch成为了ALL You Need?挑战ViT、MLP-Mixer的简单模型来了
- 测试晶面间距软件_【干货】高分辨TEM晶面间距的测量与标定丨DM软件
- UA PHYS515A 电磁理论IV 时变电磁场理论2 Helmholtz方程与含时的Green函数
- 小车主板哪家强?PS2手柄4路电机输出..火魔童主板了解一下?
- ArcEngine10.0三维开发
- window.onload与$(document).ready()的区别
- 软件工程博客---团队项目---个人设计2(算法)
- mysql语句获取当前时间,系列篇
- CUDA里面GRID, BLOCK 边界检测
- 3分钟tips:什么是特征向量?什么是特征值?
- 无需第三方app,清理Mac缓存垃圾
- (附源码)Springboot校园万能跑系统 毕业设计 160934
- 数据仓库多维数据模型设计
- jqwidgets简单技术
- 推断车祸事件论文matlab,预测模型论文,关于基于优化GM(1,1)模型的水上交通事故预测相关参考文献资料-免费论文范文...
- 心率检测--异常可能
- html零基础学习入门,nlp网站例:HTML零基础入门-HTML学习大纲.doc
- 摄影师陈景河教你5个简单技巧 加强照片冲击力
- 【吴恩达深度学习】05_week2_quiz Natural Language Processing Word Embeddings
热门文章
- 深度学习:神经风格转移
- BZOJ3675[APIO2014] 序列分割
- js基础-23-websocket和ajax的区别
- free 显示系统内存的使用情况
- php获取当前文件夹下所有图片大小,PHP获取文件夹大小函数用法实例
- linux jsp mysql_Linux JSP连接MySQL数据库
- mac vi快速删除_Mac下Vim编辑快捷键小结
- wordpresd免登录发布接口php_实现wordpress的ajax接口请求学会admin-ajax.php的利用
- linux系统的总父目录,Linux虚拟文件系统-资料路径名的解析(2)-回退父目录
- 枚举类比较和工具方法