rsyslog移植(亲测成功)

博客介绍了将rsyslog移植到arm板的过程。移植前需先编译多个依赖库,如libestr、libfastjson等,并给出各库的下载、编译命令。编译json时可能遇错误,有解决办法。最后将编译出的库和头文件拷贝到对应目录,编译rsyslog时加特定参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、概述:

移植rsyslog需要很多依赖库,只编译rsyslog之前先得把这些依赖库编译OK。

为了交叉编译的方便,可以把所以依赖库编译出来的库文件和头文件拷贝到交叉编译工具对应的目录下。

 

2、依赖库:

依赖库列表:

libestr

libfastjson

json

liblogging-stdlog    

libgcrypt

 

3、编译

3.1 libestr

下载:wget http://libestr.adiscon.com/files/download/libestr-0.1.9.tar.gz

要求版本大于等于0.1.9

tar xvf libestr-0.1.9.tar.gz && cd libestr-0.1.9

./configure --prefix=安装目录 --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc

make && make install

 

3.2 libfastjson

git clone https://github.com/rsyslog/libfastjson.git

cd libfastjson

sh autogen.sh

./configure --prefix=安装目录 --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc

make && make install

 

3.3 json

wget https://github.com/downloads/json-c/json-c/json-c-0.10.tar.gz

tar xvf json-c-0.10.tar.gz

cd json-c-0.10

./configure --prefix=安装目录 --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc

make && make install

问题:在编译json时,可能会出现 undefined reference to rpl_malloc的错误,此时把config.h.in文件中#undef malloc定义注释掉便可。

 

3.4 liblogging-stdlog    

git clone https://github.com/rsyslog/liblogging.git

cd liblogging

autoreconf -fvi

./configure --prefix=编译路径 --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc

make && make install

 

3.5 libgcrypt

wget ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.5.2.tar.gz // 1.7.6版本没有编译成功

tar -xvf libgcrypt-1.5.2.tar.gz

cd libgcrypt-1.5.2

./configure --disable-nls --disable-asm --prefix=编译路径 --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc

make && make install

 

3.6 拷贝

       把以上编译出来的库和头文件,以及.pc文件拷贝到交叉编译工具对应目录中。

注意拷贝json的头文件时,编译处理的头文件是包括在json的目录下的,要把json目录下的文件头的工具include中,而不是考目录过去。

 

3.7 rsyslog

编译rsyslog加参数 --disable-liblogging_stdlog

因为尝试安装liblogging-stdlog后,编译时仍报错“No package 'liblogging-stdlog' found”,因此在编译时选择加参数--disable-liblogging_stdlog

tar -xvf rsyslog-8.1.6.tar.gz

cd rsyslog-8.1.6

./configure --host=arm-linux-gnueabihf --prefix=/home/sampson/third_libs/rsyslog-8.1.6/build --disable-liblogging_stdlog CC=arm-linux-gnueabihf-gcc LIBESTR_CFLAGS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/include LIBESTR_LIBS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/lib LIBLOGGING_STDLOG_CFLAGS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/include LIBLOGGING_STDLOG_LIBS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/lib JSON_C_CFLAGS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/include JSON_C_LIBS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/lib LIBUUID_CFLAGS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/include LIBUUID_LIBS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/lib LIBGCRYPT_LIBS=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/lib 

make && make install

 

问题:

        配置过程中出现过寻找本地目录下的libestr的库,提示格式不对,不知道为什么不找交叉编译中的对应库,为了速度我使用了粗暴的方法,直接把本地的库移动其他地方,再配置则不再提示这个错误。

 

### rsyslog 配置与使用指南 rsyslog 是一种功能强大的日志处理工具,广泛应用于 Linux 系统中。以下是关于其配置和使用的详细介绍。 #### 1. 安装 rsyslog 大多数现代 Linux 发行版默认已预装 rsyslog。如果未安装,可以使用包管理器进行安装: ```bash sudo apt install rsyslog # Debian/Ubuntu 系列 sudo yum install rsyslog # CentOS/RHEL 系列 ``` 确认安装完成后,可以通过以下命令验证版本号: ```bash rsyslogd -v ``` #### 2. 启动与停止服务 对于基于 systemd 的系统,可使用 `systemctl` 来控制 rsyslog 服务的状态: 启动服务: ```bash sudo systemctl start rsyslog.service[^1] ``` 停止服务: ```bash sudo systemctl stop rsyslog.service[^1] ``` 重启服务(适用于修改配置文件后重新加载): ```bash sudo systemctl restart rsyslog.service[^1] ``` 设置为开机自启: ```bash sudo systemctl enable rsyslog.service[^2] ``` #### 3. 主要配置文件说明 rsyslog 的主要配置文件位于 `/etc/rsyslog.conf` 和 `/etc/rsyslog.d/*.conf` 中。这些文件定义了日志记录的行为、路径以及转发规则。 ##### 日志格式与优先级 rsyslog 支持多种日志设施(facility)和严重级别(priority)。常见的组合如下表所示: | 设施 (Facility) | 描述 | |------------------|--------------------------| | auth | 用户授权信息 | | cron | 计划任务相关 | | daemon | 背景进程 | | 优先级 (Priority) | 描述 | |--------------------|----------------------| | emerg | 紧急情况 | | alert | 应立即采取行动 | | crit | 关键错误 | 示例规则: ```plaintext *.* /var/log/all.log # 所有日志写入 all.log 文件 auth.info /var/log/auth.log # 将用户认证的日志保存至 auth.log mail.err /var/log/mail.err # 错误邮件日志单独存储 ``` #### 4. 设置远程日志服务器 为了集中管理和分析日志数据,通常会将多个客户端的日志发送到中央日志服务器。 ##### **服务器端配置** 编辑 `/etc/rsyslog.conf` 或创建新文件 `/etc/rsyslog.d/server.conf` 并添加以下内容: ```plaintext module(load="imtcp") # 加载 TCP 输入模块 input(type="imtcp" port="514") # 开放监听端口 514 ``` 保存更改后,重启 rsyslog 服务以使改动生效。 ##### **客户端配置** 假设目标日志服务器 IP 地址为 `192.168.1.100`,则需在客户端机器上的 `/etc/rsyslog.conf` 添加类似下面的一行: ```plaintext *.* @@192.168.1.100:514 # 使用可靠传输协议(TCP) ``` 完成之后同样记得执行重启指令让设定即时作用[^4]。 #### 5. 性能调优建议 随着业务增长,可能会遇到高负载场景下的性能瓶颈问题。此时可以从以下几个方面着手改进效率: - 减少不必要的调试信息; - 利用模定制化输出字段减少冗余; - 实现轮询机制防止单次写满磁盘等问题发生; 更多高级特性如数据库集成、JSON 格式解析等功能详见官方文档或者参考资料中的具体章节[^3]。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值