收集Rsyslog日志到Clickhouse数据库
1、Rsyslog客户端配置
vim /etc/rsyslog.conf
# 客户端将所有消息日志发送到远端日志服务器
*.* @@remote-log-server:514
# 重启日志服务
systemctl restart rsyslog
2、Rsyslog服务端配置
vim /etc/rsyslog.conf
# 取消注释
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
# 部署zookeeper和kafka(略)
# 将日志发送到kafka
yum install -y rsyslog-kafka
cat > /etc/rsyslog.d/kafka.conf <<EOF
module(load="omkafka")
action(type="omkafka" topic="rsyslog" broker="localhost:9092")
EOF
# 重启日志服务
systemctl restart rsyslog
3、Clickhouse-Server配置
vim /etc/clickhouse-server/config.xml
# 取消注释
<listen_host>::</listen_host>
# 创建数据库
clickhouse-client
clickhouse-server :) CREATE DATABASE rsyslog;
# 创建kafka引擎表
CREATE TABLE rsyslog.kafka_queue(
datetime String,
hostname String,
message String
) ENGINE = Kafka()
SETTINGS
kafka_broker_list = 'remote-log-server:9092',
kafka_topic_list = 'rsyslog',
kafka_group_name = 'clickhouse',
kafka_format = 'Regexp',
format_regexp = '(.+?) (.+?) (.+?)',
format_regexp_escaping_rule = 'Raw',
format_regexp_skip_unmatched = 0
;
# 创建kafka数据表
CREATE TABLE rsyslog.kafka_view (
datetime String,
hostname String,
message String
) ENGINE = MergeTree()
ORDER BY datetime;
# 创建物化视图
CREATE MATERIALIZED VIEW rsyslog.consumer TO kafka_view AS SELECT * FROM kafka_queue;
# 尝试查询
SELECT datetime AS `时间`, hostname AS `主机名`, message `消息体` FROM rsyslog.kafka_view WHERE ( hostname = 'remote-log-server' ) ORDER BY datetime DESC LIMIT 100;
作者:wanghongwei
版权声明:本作品遵循<CC BY-NC-ND 4.0>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统