我需要通过 echo 向 graylog2 服务器发送一条消息,以测试工具的 %{@type} 是否正确,但是一旦我执行了 GELF 支持中的 echo,就不会到达我的 graylog2 服务器。如果它重新启动 graylog2,则有关它开始的消息将到达 graylog2 服务器。
回显消息示例:
echo '{"version": "1.1","host":"example.org","short_message":"A short message that helps you identify what is going on","full_message":"Backtrace here\n\nmore stuff","level":1,"_user_id":9001,"_some_info":"foo","_some_env_var":"bar"}' | nc -w 1 my.graylog.server 12201
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?graylog --debug 模式不显示任何内容。它甚至没有看到消息进来。
编辑:
Graylog2 输入是为 GELF TCP 设置的,并显示活动连接,当我尝试回显时它会升高,但没有消息到达服务器。
我目前正在研究使用logstash(或graylog2)整合来自多个服务器的日志的可能性。
我对logstash和graylog的区别还是有点困惑。到目前为止,我很欣赏 logstash 的易用性,但我很想听听其他人的经验。
此外,logstash 似乎可以获取 Windows 事件日志。是否有任何动机使用 nxLog 或 snare 来代替?许多人报告使用 nxlog 将事件转发到远处的 logstash 实例。这是推荐的方式吗?
目前,我们想从多个盒子中整合:
提前感谢您的任何反馈。
我刚刚设置了一个 Graylog2 服务器,我希望将所有日志从我的主服务器发送到 Graylog 服务器。我已启用主服务器的日志记录,并通过添加*.* @logs.example.com:1337
到/etc/rsyslog.conf
.
我想要的是让 Graylog2 收集我所有的 Apache 日志、系统日志(用于 SSH 登录、拒绝登录)以及我需要监控的任何其他日志。
对于 Apache 日志,我还想要 Rails 日志。我的网站位于/srv/www/
,然后结构是sitename.com/public_html
和sitename.com/logs
。我在服务器上有很多站点,我想要一种简单的方法来查看所有错误并从中制作一些漂亮的图表,因此我想使用 Graylog2 ...
日志文件夹中的日志文件是access.log
和error.log
。
Rails 日志将在sitename.com/public_html/log
. 这包含production.log
.
我正在尝试使用 Graylog 收集 nginx 错误和访问日志,我认为一切都已正确配置,但 Graylog 未从 NGINX 收到任何信息(Graylog 和 NGINX 在 docker 容器中,并且都在同一网络中)
我使用 nginx/1.13.5 & Graylog 2.4.0 并且我在 graylog 上使用这个内容包
这是我的 nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format graylog2_json escape=json '{ "timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"body_bytes_sent": $body_bytes_sent, '
'"request_time": $request_time, '
'"status": $status, …
Run Code Online (Sandbox Code Playgroud) 我只是在阅读GELF规范,因为我正在将其集成到我们的系统中。我只是想知道一个附加/自定义字段是否可以包含一个 JSON 对象,因为规范没有提到它:
所以我的 GELF 输出(特别是下面的 _request 字段)看起来像:
{
"version": "1.0",
"host": "www1",
"short_message": "Short message",
"full_message": "Backtrace here\n\nmore stuff",
"timestamp": 1291899928,
"level": 1,
"facility": "payment-backend",
"file": "/var/www/somefile.rb",
"line": 356,
"_request": {
"ip": "123.123.123.123",
"url": "example.com/dir/file.ext",
"method": "get",
"referer" "example.net"
}
Run Code Online (Sandbox Code Playgroud) 我正在按照此博客中的步骤设置 rsyslog + logstash + graylog2,但我无法弄清楚如何使用 mutate -> 替换过滤器替换 logstash 中的 @source_host 属性。
在示例中,作者将他的 @source_host 替换为字符串值,但我想使用在这种情况下从系统日志解析的实际值。
mutate {
type => loc1
replace => ["@source_host", "loc1"]
}
mutate {
type => loc2
replace => ["@source_host", "loc2"]
}
Run Code Online (Sandbox Code Playgroud)
如何在我的日志中实际维护原始源主机?
我想以自定义格式 (GELF) 将我的 Apache 日志发送到 UDP 接收服务器(运行 Graylog2)。我确信一切正常,但过了一会儿,我收到警报,我的服务器没有响应。我在 Apache 错误日志中看到了一大堆:
piped log program 'nc -w 1 -u logserver 12201' failed unexpectedly
Run Code Online (Sandbox Code Playgroud)
有趣的是,在流量非常小的服务器上,即使网站没有流量,我也会在日志中不断看到此错误。当有流量时,日志确实会由 netcat 发送到 graylog - 所以无论如何它都可以工作。
如果我停止 Apache 并重新启动它,则重新启动后错误会继续显示在错误日志中。在停止它之后,我确保没有剩余的失控进程。
配置是:
LogFormat "{ \"version\": \"1.1\", \"host\": \"%V\", \"short_message\": \"%r\", \"full_message\": \"%r, status: %>s, %O bytes, User Agent: %{User-Agent}i\", \"timestamp\": %{%s}t, \"level\": 6, \"_user_agent\": \"%{User-Agent}i\", \"_source_ip\": \"%a\", \"_duration_usec\": %D, \"_duration_sec\": %T, \"_request_size_byte\": %O, \"_http_status\": %s, \"_http_request_path\": \"%U\", \"_http_request\": \"%U%q\", \"_http_method\": \"%m\", \"_http_referer\": \"%{Referer}i\" }" graylog2_access
Run Code Online (Sandbox Code Playgroud)
和自定义日志:
CustomLog "|nc -w 1 -u …
Run Code Online (Sandbox Code Playgroud) 我目前正在为我的系统使用 Graylog 设置日志记录,但有一个问题,即日志可能包含敏感信息。标准行为是通过 UDP 发送未加密的日志以防止应用程序阻塞。有没有办法在保持UDP连接的同时保护它?如果 graylog 不适合它,我很乐意切换到提供此功能的工具。您的经验是什么,如果我想维护应用程序的安全性并且不想引入通过 https 进行日志记录带来的延迟,我应该如何实现日志记录?