我正处于ELK堆栈的学习阶段,并且一直在关注弹性文档。我有几个Linux服务器,我想用ELK监控。我已经设置了两个弹性节点实例,一个kibana实例和一个logstash节点实例。我的Linux服务器运行了一个Web服务(apache2),我想监视来自服务器的apache访问和错误日志以及auth.log。我有另一台运行相同服务的Linux服务器,我也想监控它。
我已经关注https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html并且能够将apache访问日志提供给logstash然后进入弹性搜索,但是,在一次提供apache访问日志,错误日志和身份验证日志时遇到了问题。
以下是我的filbeat配置文件:
- type: log
enabled: true
paths:
- /var/log/apache2/access.log
fields:
type: apachelog
- type: log
enabled: true
paths:
- /var/log/apache2/error.log
fields:
type: apachelog
- type: log
enabled: true
paths:
- /var/log/apache2/auth.log
fields:
type: syslog
output.logstash:
hosts: ["10.115.1.5:5044"]
conf.d目录下的任何配置文件都是:
input {
beats {
port => "5044"
}
}
filter {
if [type] == "apachelog" {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}"}
}
geoip {
source => "clientip"
}
}
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:system
.auth.timestamp} %{SYSLOGHOST:system.auth.hostname}
sshd(?:\\[%{POSINT:system.auth.pid}\\])?:%{DATA:system.
auth.ssh.even} %{DATA:system.auth.ssh.metho} for
(invalid user )? %{DATA:system.auth.user} from %
{IPORHOST:system.auth.ip} port%{NUMBER:system
.auth.port} ssh2(: %{GREEDYDATA:system.auth.ssh.signature})?" }
}
}
}
output {
if [type] == "apachelog" {
elasticsearch {
hosts => ["10.115.1.27", "10.115.1.47"]
index => Linux1apachelog
}
stdout { codec => rubydebug }
}
else {
elasticsearch {
hosts => ["10.115.1.27", "10.115.1.48"]
index => Linux1apachelog
}
stdout { codec => rubydebug }
}
}
我的logstash能够与两个弹性搜索节点进行通信。你能帮我指点正确的方向吗?
答案 0 :(得分:0)
您的文件格式不正确。 在output.logstash:
之前删除空格