我正在使用 Graylog 服务器来集中来自网络设备和服务器的日志,我想知道交换机、Windows 机器和其他设备上的 Syslog 服务是否仍会在本地保存日志,或者只是远程发送它们并停止本地日志记录过程?
我最近更改了我的 gmail 密码并更改了 server.conf 中的密码,但现在 graylog 的电子邮件警报失败并显示:
Sending the email to the following server failed : smtp.gmail.com:587 (javax.mail.AuthenticationFailedException: 535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8 https://support.google.com/mail/?p=BadCredentials h12sm2292608qkp.52 - gsmtp )
以下是 server.conf 中的电子邮件条目:
transport_email_enabled = true
transport_email_hostname = smtp.gmail.com
transport_email_port = 587
transport_email_use_auth = true
transport_email_use_tls = true
transport_email_auth_username = [email protected]
transport_email_auth_password = Fake!@$#%^&*()"password
transport_email_subject_prefix = [Log-Alerts]
transport_email_from_email = [email protected]
Web gui 中的警报配置中的设置也相同。
我知道用户名、电子邮件、端口、服务器和 tls 选项是正确的,因为 zabbix(托管在同一台服务器上)能够完全正常地向我的 gmail 发送电子邮件。
我担心我的新密码包含特殊字符,!@#$%^&*"
导致 server.conf 出错并且读取密码错误。
有没有办法将 server.conf 中的密码字段改为外部文件?Graylog 在其文档中的任何地方都没有提到这一点。
我一直在寻找几天来找到关于 Graylog/Elasticsearch 如何使用索引以及何时创建新索引的一个很好的解释。有很多关于分片索引的信息,但关于索引本身的信息并不多,除了它们是一组关于要保留多少数据以及如何管理它们的设置,但不是为什么。(或者在我看来)
背景:
我们将 Graylog 4.0 与 Elasticsearch 7.10 和 MongoDB 3 一起使用。
我们尝试集中来自 6 个仓库位置的日志(彼此相距数百公里)。每个都有 6 到 20 个 RFID 门,每个门都有日志。每个门都有连接到中央控制器中间件的连接器中间件,并且所有这些中间件都有日志。然后是自动化仓库“AWMS”的控制器、WMS服务器、ERP服务器及其前端。我们还考虑从运行这些服务的服务器的 Windows 事件日志中收集至少一些事件。
通常我们需要分析一个子系统中的问题,因此需要搜索其中一个日志。有时我们需要查看从 RFID 门到 AWMS、WMS 和 ERP 的整个流程。
目前,我考虑为每个日志创建一个流,并在搜索中使用相关的流。(或者这种方法是否已经存在缺陷,如果是,为什么?)
问题:
- Graylog中设置的索引是否只是保留策略的设置?
- 如果我有很多或几个索引,会有什么影响?
- 在Elasticsearch Index Model中,听起来分片大小及其分布对搜索性能有主要影响,而索引只是管理分片的框架
- 我的用例应该有多少个索引集?
- 每个流多个?
- 每个流一个?
- 每个位置一个?
- 每个子系统一个?
- 每个保留时间或大小间隔一个?
- 一个全球的?
- 从性能的角度来看,这重要吗?
- 我在哪里可以找到关于这些东西的更多信息,这解释了“为什么”,而不仅仅是“如何”来管理索引?(我一直在研究Graylog 索引模型、Elasticsearch 索引模型、Elasticsearch 索引模板)
这是一个稍微改写的版本:
谁在吃我的田?(或者:我如何从我的节拍消息中获取更多自定义字段到灰色日志中)
我正在使用 filebeat 从一堆 docker 容器中收集日志,然后将它们发送到 graylog beats 输入。使用 tcpdump,我可以看到输入端口上的消息,包括 json 中 docker 和 aws 元数据字段的完整补充:
0x10e0: 223a 7b22 7265 6769 6f6e 223a 2265 752d ":{"region":"eu-
0x10f0: 6365 6e74 7261 6c2d 3122 2c22 6176 6169 central-1","avai
0x1100: 6c61 6269 6c69 7479 5f7a 6f6e 6522 3a22 lability_zone":"
0x1110: 6575 2d63 656e 7472 616c 2d31 6122 2c22 eu-central-1a","
0x1120: 696e 7374 616e 6365 5f69 6422 3a22 692d instance_id":"i-
0x1130: 3034 6237 3133 3630 3633 6436 6165 3064 04b7136063d6ae0d
0x1140: 6122 2c22 6d61 6368 696e 655f 7479 7065 a","machine_type
0x1150: 223a 226d 342e 6c61 7267 6522 2c22 7072 ":"m4.large","pr
0x1160: 6f76 6964 6572 223a 2265 6332 227d 7d2c ovider":"ec2"}},
但是,graylog 中的消息缺少其中的大部分,仅存在最少的字段(见下图)。我想知道我怎样才能让其余的出现?或者,更确切地说,我如何控制消息中实际存储的内容?
嗨,我使用了 openstack qcow2 格式并运行了 graylog 服务器
现在我只能使用浮动公共 IP 地址而不是私有内部 IP 地址来访问我的 openstack 机器。
在这里,当我使用公共 IP 地址进行 graylog 时,出现以下错误,
"http://172.29.18.94:9000/api/"
这实际上是我的私人 IP 地址。
如何更改 IP 和端口应该在 8080,我按照文档“ http://docs.graylog.org/en/2.4/pages/installation/openstack.html ”安装
有时我想将日志条目视为“标准”外观的基于文本的日志文件。
现在,有时我最终会转到生成日志的服务器,这样我就可以显示一个文本块来跟踪日志的时间线,这比通过 graylog 快一点。这完全违背了中央日志记录的目的,但它仍然节省了我的时间。
例如,有时脚本在解析包含 1,000 行数据的文件时需要启用调试。由于启用了调试,因此它会在解析行时将其处理的每一行都吐到日志文件中。我想将此视为一个顺序日志条目文件,而不是每个条目在 graylog ui 中都有自己的对象。
我确实意识到它具有“显示周围消息”功能,但它仍然在 gui 中的单个对象中显示每条消息。
在标准日志视图中看到这一点真的很棒。所以它看起来就像一个普通的基于文本的日志。
用例: 在 5 分钟内对包含 700 条日志消息的应用程序行为进行故障排除时,我不想单独扩展每条消息。如果我可以将这些日志作为“标准”日志文件而不是通过 GUI 来查看,那么人类可读性会更高。
这可能吗,如果可以,我该怎么做?谢谢
Graylog v2.3.2
我的目标是让条件发出警报,并且警报保持打开状态,直到它被标记为已解决或应用定义的已解决条件。
我有一个警报设置,这是条件配置:
Configuration: Alert is triggered when messages matching
<full_message: "*Short*"> are received. Grace period: 15 minutes.
Including last 2 messages in alert notification. Configured to not
repeat notifications.
警报触发正常,但随后它会自行解决。
这是日志....
2018-01-04 23:56:23.699
Graylog checks test_alert (Field Content Alert Condition) condition on stream All messages
2018-01-04 23:56:23.699
Stream received messages matching <full_message:"Short"> (Current grace time: 15 minutes)
2018-01-04 23:56:23.699
Graylog triggers an alert for test_alert (Field Content Alert Condition) and starts sending notifications
2018-01-04 23:56:23.699
No notifications were configured for this alert
2018-01-04 23:56:28.526
Condition is no longer satisfied, alert is marked as resolved
为什么它说“条件不再满足”并解决警报?
我的目标是保持警报打开,直到有人解决它或通过另一个条件/等解决
我正在尝试使用 Graylog 来获取系统日志和 Snort 警报。我已经按照此处的示例将我的 snort 警报放入 Graylog,然后继续为单独的 IDS 日志源添加另一个流、管道和规则。我基本上复制了 Snort 示例并更改了正则表达式以从新日志源中提取相关字段。当我从搜索选项卡中选择一条消息然后选择“针对流进行测试”时,新的正则表达式确实可以测试。Streams
从Graylog 顶部的菜单项中选择时,消息也会显示在我的新流下。
问题是,在管道规则中,我使用该set_field()
函数从正则表达式中分配匹配组的值。我在规则中有九个字段,set_field()
但它们都没有出现在搜索数据中。为什么是这样?我需要add_field()
像在 GELF 示例中那样首先使用吗?我假设set_field()
自动这样做,因为这就是上面链接中的 snort 示例的工作方式。附加了我的管道规则,该规则附加到 Graylog 中的 IDrops 流。
rule "Extract IDropS fields"
when
has_field("message")
then
let m = regex("^([a-z]+)\\s.*(TCP|UDP|ICMP)\\s([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}):(\\d{1,5})\\s([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}):(\\d{1,5}).*SnortSid.*:([0-9]+):([0-9]+)\\s(.*)$", to_string($message.message));
set_field("snort_alert", false);
set_field("sd_host", m["0"]);
set_field("sd_proto", m["1"]);
set_field("sd_src", m["2"]);
set_field("sd_sport", m["3"]);
set_field("sd_dst", m["4"]);
set_field("sd_dport", m["5"]);
set_field("sd_sid", (m["6"]));
set_field("sd_rev", m["7"]);
set_field("sd_desc", m["8"]);
end
我将弹性搜索与 Graylog 结合使用。
有没有办法限制弹性搜索数据库的大小,可能对日志使用循环数据库方法?我的设置相对较小(~100GiB 数据库),而且我知道 elasticsearch 需要大量空间来存储所有数据库索引,但我需要限制它的大小,无论是否需要删除数据。
这里的最佳实践方法是什么?您如何限制设置中存储和索引日志的数量?
我正在尝试通过 tls 将日志从 rsyslog 转发到 graylog。
rsyslog 配置:
# make gtls driver the default
$DefaultNetstreamDriver gtls
#
# # certificate files
$DefaultNetstreamDriverCAFile /etc/ssl/rsyslog/ca.pem
$DefaultNetstreamDriverCertFile /etc/ssl/rsyslog/rsyslog-cert.pem
$DefaultNetstreamDriverKeyFile /etc/ssl/rsyslog/rsyslog-key.pem
#
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer graylog.mydomain.com
$ActionSendStreamDriverMode 1 # run driver in TLS-only mode
*.* @@graylog.mydomain.com:6514 # forward everything to remote server
我生成了 rsyslog 文档中描述的必要证书:
certtool --pkcs8 --generate-privkey --outfile ca-key.pem
certtool --pkcs8 --generate-self-signed --load-privkey ca-key.pem --outfile ca.pem
certtool --pkcs8 --generate-privkey --outfile graylog.key.pem
certtool --pkcs8 --generate-request --load-privkey graylog.key.pem --outfile graylog.request.pem
certtool --pkcs8 --generate-certificate --load-request graylog.request.pem --outfile graylog.cert.pem --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem
certtool --pkcs8 --generate-privkey --outfile rsyslog.key.pem
certtool --pkcs8 --generate-request --load-privkey rsyslog.key.pem --outfile rsyslog.request.pem
certtool --pkcs8 --generate-certificate --load-request rsyslog.request.pem --outfile rsyslog.cert.pem --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem
灰色日志配置
所有证书文件都在 /etc/ssl/graylog/input-ca/
graylog 输入配置如下:
TLS cert file: /etc/ssl/graylog/input-ca/graylog-cert.pem
TLS private key file: /etc/ssl/graylog/input-ca/graylog-key.pem
TLS Client Auth Trusted Certs: /etc/ssl/graylog/input-ca
但是当 rsyslog 将日志消息推送到 garylog 时,我收到此错误:
2016-10-06T13:19:27.734+02:00 WARN [AbstractNioSelector] Failed to initialize an accepted socket.
java.security.cert.CertificateParsingException: signed fields invalid
at sun.security.x509.X509CertImpl.parse(X509CertImpl.java:1791) ~[?:1.8.0_91]
at sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:195) ~[?:1.8.0_91]
at sun.security.provider.X509Factory.parseX509orPKCS7Cert(X509Factory.java:469) ~[?:1.8.0_91]
at sun.security.provider.X509Factory.engineGenerateCertificates(X509Factory.java:354) ~[?:1.8.0_91]
at java.security.cert.CertificateFactory.generateCertificates(CertificateFactory.java:462) ~[?:1.8.0_91]
at org.graylog2.plugin.inputs.transports.util.KeyUtil.loadCertificates(KeyUtil.java:90) ~[graylog.jar:?]
at org.graylog2.plugin.inputs.transports.util.KeyUtil.loadCertificates(KeyUtil.java:100) ~[graylog.jar:?]
at org.graylog2.plugin.inputs.transports.util.KeyUtil.initTrustStore(KeyUtil.java:73) ~[graylog.jar:?]
at org.graylog2.plugin.inputs.transports.AbstractTcpTransport$1.createSslEngine(AbstractTcpTransport.java:199) ~[graylog.jar:?]
at org.graylog2.plugin.inputs.transports.AbstractTcpTransport$1.call(AbstractTcpTransport.java:186) ~[graylog.jar:?]
at org.graylog2.plugin.inputs.transports.AbstractTcpTransport$1.call(AbstractTcpTransport.java:182) ~[graylog.jar:?]
at org.graylog2.plugin.inputs.transports.NettyTransport$1.getPipeline(NettyTransport.java:110) ~[graylog.jar:?]
at org.jboss.netty.channel.socket.nio.NioServerBoss.registerAcceptedChannel(NioServerBoss.java:134) [graylog.jar:?]
at org.jboss.netty.channel.socket.nio.NioServerBoss.process(NioServerBoss.java:104) [graylog.jar:?]
at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337) [graylog.jar:?]
at org.jboss.netty.channel.socket.nio.NioServerBoss.run(NioServerBoss.java:42) [graylog.jar:?]
at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) [graylog.jar:?]
at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) [graylog.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_91]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_91]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_91]
任何想法可能是什么问题?