gpt4 book ai didi

redis - syslog-ng 到 redis 问题,能够写入文件但无法写入 redis

转载 作者:可可西里 更新时间:2023-11-01 11:01:13 25 4
gpt4 key购买 nike

我需要使用 Redis 作为 Logstash 读取的消息键值存储。这个想法是使用现有的 Syslog-ng 服务器将所有服务器的系统日志路由到 Redis 服务器,以便 Logstash 能够从中读取。我已经设置了我的 Redis 服务器,并且能够使用以下方法从 Syslog-ng 服务器连接并写入 Redis:

telnet redis.somedomain.com 6379

所以端口是开放的,可以写入但是键值存储没有被发送。我已经让这个系统的大部分工作使用 UDP 以及附加到/var/log/hosts 下的各个主机。我对现有 syslog-ng.conf 文件所做的更改如下:

# In Redis Protocol Notation
# $5 = 5 characters(LPUSH), $4 = 4 characters(logs), $(length $MSG) = character length of $MSG,
# $MSG = Log Message per syslog-ng symbols

template t_redis_lpush { template("*3\r\n$5\r\nLPUSH\r\n$4\r\nlogs\r\n$(length $MSG)\r\n$MSG\r\n"); };
destination d_redis_tcp { tcp("redis.somedomain.com" port(6379) template(t_redis_lpush)); };
log { source(remote); source(noforward); filter(f_messages); destination(d_redis_tcp); flags(final); };

我没有包含 f_messages 过滤器内容,因为它已经可以工作并且用于将日志发送到 UDP 和/var/log/hosts。如果有人希望我提取过滤器功能,我也可以发布这些功能。 filter(f_messages) 最终将结果处理成

"Jan 21 14:27:23 www1/www1 10.252.4.152 - - [21/Jan/2014:14:27:23 -0700] "POST /service.php?session_name=6tiqbpfeu1uc31pg1eimjqpvt0&url=%2Fseo%2FinContentLinks%2Fblogs.somedomain.com%7Cmusic%7C2013%7C12%7Cinterview_fredo.php%2F HTTP/1.1" 200 536 www1.nyc.somedomain.com "66.156.238.1" "-" "Arch Quickcurl" "8126464" 0 92878"

有谁知道为什么我的 Syslog-ng 的 Redis 模板、目标和日志发送器不起作用?

提前致谢!科尔

最佳答案

抱歉没有早点看到这个。你看过使用 format-json() 吗?

这是我一直在使用的一个目标,它运行良好(大部分宏来自 patterndb 解析器)

destination d_redis {
redis (
host("localhost")
command("LPUSH", "logstash", "$(format-json type=bluecoat proxy_time=${PROXY.TIME} proxy_time_taken=${PROXY.TIME_TAKEN} proxy_c_ip=${PROXY.C_IP} proxy_sc_status=${PROXY.SC_STATUS} proxy_s_action=${PROXY.S_ACTION} proxy_sc_bytes=int64(${PROXY.SC_BYTES}) proxy_cs_bytes=int64(${PROXY.CS_BYTES}) proxy_cs_method=${PROXY.CS_METHOD} proxy_cs_uri_scheme=${PROXY.CS_URI_SCHEME} proxy_cs_host=${PROXY.CS_HOST} proxy_cs_uri_port=${PROXY.CS_URI_PORT} proxy_cs_uri_path=${PROXY.CS_URI_PATH} proxy_cs_uri_equery=${PROXY.CS_URI_EQUERY} proxy_cs_username=${PROXY.CS_USERNAME} proxy_cs_auth_group=${PROXY.CS_AUTH__GROUP} proxy_s_supplier_name=${PROXY.S_SUPPLIER_NAME} proxy_content_type=${PROXY.CONTENT_TYPE} proxy_referrer=${PROXY.REFERRER} proxy_user_agent=${PROXY.USER_AGENT} proxy_filter_result=${PROXY.FILTER_RESULT} proxy_cs_categories=${PROXY.CS_CATEGORIES} proxy_x_virus_id=${PROXY.X_VIRUS_ID} proxy_s_ip=${PROXY.S_IP} proxy_any=${PROXY.ANYREST})\n")
);
};

顺便说一句 - 我真的更喜欢 syslog-ng 在 logstash 上进行解析。我的经验是使用 patterndb 比 grok 快得多,并且通过 syslog-ng 完成它也使配置更加灵活。

祝你好运,吉姆

关于redis - syslog-ng 到 redis 问题,能够写入文件但无法写入 redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21267235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com