有谁知道我可以用来向系统日志发送消息的工具或脚本?我正在尝试对 syslog 配置进行故障排除,但在排除可能性方面遇到了麻烦。我想做的是这样的:
./testScript -f myFacility "testing testing 123"
Run Code Online (Sandbox Code Playgroud)
并将其发送到本地计算机上的 syslog。
在此先感谢您的任何建议。
富有的
我想将日志日志记录到一个文件中,以便稍后可以获取它并将其发送到 Logstash。我考虑过运行 syslog-ng 并使其成为 Journald 的客户端,这样我就可以获得 syslog 文件。我在 CoreOS 机器上使用 Docker 容器,因此我尝试将 syslog-ng 作为 CoreOS docker 主机中的容器运行,创建一个执行该容器的 systemd 单元。我按照此页面在 systemd 中获取 syslog,但是如果我尝试使 syslog-ng 容器直接从主机中的 syslog 套接字读取(通过使用 docker 卷安装它),它会抱怨“地址已在使用中”。所以我有日志记录,一个运行 syslog-ng 的容器,但我不知道如何在 syslog-ng 内获取日志日志。
我在文件中获取日志日志的替代解决方案是运行一个执行 的 systemd 单元journalctl -f --json | tee -a /var/log/systemd,但我不确定该解决方案的可靠性。这是一个足够好的解决方案吗?
我有一个由负载平衡器前端的 Linux 服务器集群,它每 5 秒探测每台服务器以确定它是否可以运行。这些探针在日志中产生了很多无用的噪音,我只想不记录它们......
有没有办法阻止 rsyslog 记录特定事件?
有人可以在这里提出一个像样的案例:
我想使用 syslog,所以日志是集成的,所以我可以根据严重性等来指导它更不用说日志轮换了,但同时我喜欢为我的应用程序拥有一个专用日志文件的想法,所以如果有问题,你可以无需进行任何过滤即可轻松查看与应用程序相关的信息。记录到专用文件和系统日志似乎是多余的。有人可以说服我使用一个或另一个,或两者兼而有之。
谢谢
我们有几个应用程序正在生成自己的纯文本日志文件,我想将其转发到远程 syslog 服务器以进行集中日志记录。我无权访问root这些机器,也无法重新配置syslog以将输出重定向到远程机器。
我在网上找到了一些解决方案,但它们大多是人们自制的 bash 脚本,我正在寻找适合在潜在大批量生产环境中实施的更强大的东西。
最好是设计的东西,着眼于占用空间小,后台守护进程不断运行,可以跟上很多行等。 - 目前有哪些解决方案?
我正在构建一个日志分析器服务来开始主要监控我们的 pfSense 防火墙、XenServer 管理程序、FreeBSD/Linux 服务器和 Windows 服务器。
互联网上有很多关于 ELK 堆栈以及如何使其正常工作的文档。但我想以不同的方式使用它,但我不知道这是一个好的解决方案还是只是浪费时间/磁盘空间。
我已经有一台 FreeBSD 10.2 机器作为远程系统日志服务器,我的想法是简单地将所有日志集中在这台机器上,系统日志服务器将日志转发logstash-forwarder给 ELK 服务器。
我很清楚这种方法将提高此设置的磁盘要求,但另一方面,我将只有一台logstash-forwarder安装了守护程序的机器,这对我来说似乎很好。
但谈问题。该logstash分析器匹配[host]与服务器的主机名发送日志消息,并在这种方法只存在对ELK,远程系统日志服务器“服务器”节目的。
我知道我可以自定义logstash配置文件上的设置,但我不知道(而且我没有经验知道)这是否只是它的解析器上的一个简单设置是否会危及整个 ELK经验。
最后,我只想要一些关于我的日志架构的建议,以及它是否可以工作,或者我是否应该没有其他选择。
提前致谢,
我想知道将我的 docker 容器日志转发到 ELK 服务器的最简单方法是什么,到目前为止,我在搜索互联网后尝试的解决方案根本不起作用。
基本上,我有一个使用 docker-compose 运行的 docker 映像,该容器不会在本地记录任何内容(它由不同的服务组成,但没有一个是 logstash 或其他任何服务),但我看到通过docker logs -tf imageName或docker-compose logs. 由于我使用 compose 启动容器,因此我无法使用(或至少我不知道如何使用)--logs-driverdocker 选项。
因此,我想知道是否有人可以启发我,例如如何将该日志转发到 ELK 容器。
提前致谢,
问候
解决方案:
感谢 madeddie,我可以通过以下方式解决我的问题,提到我使用了 madeddie 在他的帖子中建议的基本 ELK-stack-in-containers。
首先,我更新了docker-compose.yml我的容器文件,以按照 madeddie 告诉我的那样为日志记录引用添加条目,我为每个服务添加了一个条目,我的 docker-compose 片段如下所示
version: '2'
services:
mosquitto:
image: ansi/mosquitto
ports:
- "1883:1883" # Public access to MQTT
- "12202:12202" #mapping logs
logging:
driver: gelf
options:
gelf-address: udp://localhost:12202
redis:
image: redis
command: redis-server --appendonly yes
ports:
- "6379:6379" # …Run Code Online (Sandbox Code Playgroud) 我有一个我认为在某个时候重新启动的网络服务器..主要是因为 apache 没有为站点提供服务,并且通常在有人启动它并且没有输入 SSL 证书的密码时会这样做......并且重新启动/启动解决了这个问题。环顾四周/var/log/messages,今天的第一个日志条目是:
Jun 30 05:17:40 localhost kernel: imklog 4.2.0, log source = /proc/kmsg started.
Jun 30 05:17:40 localhost rsyslogd: [origin software="rsyslogd" swVersion="4.2.0" x-pid="393" x-info="http://www.rsyslog.com"] (re)start
Jun 30 05:17:40 localhost rsyslogd: rsyslogd's groupid changed to 103
Jun 30 05:17:40 localhost rsyslogd: rsyslogd's userid changed to 101
Run Code Online (Sandbox Code Playgroud)
我假设这意味着它是重新启动,但我对真正的服务器管理知之甚少,我想验证一下。messages如果有帮助,我可以发布其余的。在这些之前的条目是每天一次:
Jun 29 06:34:11 localhost rsyslogd: [origin software="rsyslogd" swVersion="4.2.0" x-pid="350" x-info="http://www.rsyslog.com"] rsyslogd was HUPed, type 'lightweight'.
Run Code Online (Sandbox Code Playgroud)
那么这些是否表明服务器重新启动,正如我猜测的那样?有什么办法可以确定是什么导致了重启?或者如果一个人做到了?
RHEL 6 服务器上的 Rsyslog 在端口 514 UDP 上本地接收消息。这些消息有时比正常的系统日志消息大小大得多。我看到 rsyslog 可以很好地处理所有消息,它可以毫无问题地写入本地文件。但是,当我将远程主机添加到 rsyslog 配置时,这些相同的大消息被截断为大约 2048 个字符。
我正在运行 rsyslogd 版本:5.8.10
rsyslogd 5.8.10, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
Run Code Online (Sandbox Code Playgroud)
我对 rsyslog conf 所做的唯一更改是以下两件事:
这是在我的 rsyslog conf 文件的最顶部:
$MaxMessageSize 64k
Run Code Online (Sandbox Code Playgroud)
这是在我的 rsyslog conf 文件的最底部:
$template RemoteHost,"<%%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%
*.* @my-rsyslog-central-logger:514; RemoteHost
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么 rsyslog 会通过 UDP 将日志截断到远程主机,但是在将日志写入本地文件时能够处理日志?
**注意我确实通过使用 netcat 侦听 …
我想通过命令将多行消息记录到系统记录器中
echo -e "foo\nbar" | logger
Run Code Online (Sandbox Code Playgroud)
但它显示为 2 个日志。
是否可以记录为单个日志?