上次es集群已经搭建完毕,这次我们使用logstash进行日志的收集并传输到es集群中,通过kibana进行可视化。
安装logstash+kibana
本次系统为Ubuntu18.04 logstash版本7.12.1
在此提醒ES、logstash、kibana三个版本最好一直,否则有些功能并不兼容
下载安装包
wget https://mirrors.tuna.tsinghua.edu.cn/elasticstack/7.x/apt/pool/main/l/logstash/logstash-7.12.1-amd64.deb
安装
dpkg -i logstash-7.12.1-amd64.deb
考虑到本次收集日志文件会有权限问题,我们把启动用户设置为ROOT,也可以自己给需要收集的日志添加响应的权限。
下载kibana包
wget https://mirrors.tuna.tsinghua.edu.cn/elasticstack/7.x/apt/pool/main/k/kibana/kibana-7.12.1-amd64.deb
安装
dpkg -i kibana-7.12.1-amd64.deb
修改kibana配置文件
root@es1:~# grep -v ^# /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://10.0.0.121:9200"] #连接es集群地址
i18n.locale: "zh-CN" #支持中文
启动kibana
systemctl start kibana
本次收集日志分为几个简单的场景
场景一
收集系统日志
查看所需要收集的日志
root@logstash1:/etc/logstash/conf.d# ll /var/log/syslog
-rw-r----- 1 syslog adm 1658751 Sep 25 20:17 /var/log/syslog
编写logstash配置文件/etc/logstash/conf.d下
root@logstash1:/etc/logstash/conf.d# cat syslog.conf
input {
file { #输入的方式
path => "/var/log/syslog" #指定收集日志的路径
start_position => "beginning" #“end”默认采集文件位置为logstash启动时间节点,“beginning”为从syslog日志第一条开始收集,
stat_interval => 3 #日志收集间隔时间
}
}
output {
elasticsearch { #输出至es中
hosts => ["10.0.0.121:9200"] #指定输出es地址与端口
index => "lhl-syslog-%{+YYYY.MM.dd}" #日志输出到lhl-syslog-%{+YYYY.MM.dd}索引中。索引为自动创建
}
}
启动logstash服务
root@logstash1:/etc/logstash/conf.d# systemctl restart logstash.service
通过命令检查配置文件是否正常
root@logstash1:/etc/logstash/conf.d# /usr/share/logstash/bin/logstash -f syslog.conf -t

在Elasticsearch-Head插件中查看

通过kibana进可视化

通过模糊匹配来匹配对于的索引名称


可以根据字段来过滤关键信息

场景二
收集Nginx access.log error.log
root@web2:/etc/logstash/conf.d# cat lhl-nginx.conf
input {
file{
path => "/opt/logs/access.log" #指定收集日志的路径
start_position => "beginning" #“end”默认采集文件位置为logstash启动时间节点,“beginning”为从syslog日志第一条开始收集
stat_interval => 3 #日志收集间隔时间
type => "nginx-accesslog" #事件的唯一类型,可以理解为给access.log文件打上一个标签
}
file{
path => "/opt/logs/error.log"
start_position => "beginning"
stat_interval => 3
type => "nginx-errorlog"
}
}
output {
if [type] == "nginx-accesslog" { #判断type标签是否匹配nginx-accesslog
elasticsearch {
hosts => ["10.0.0.120:9200"]
index => "lhl-nginx-access-%{+YYY.MM.dd}"
}}
if [type] == "nginx-errorlog" { #判断type标签是否匹配为nginx-errorlog
elasticsearch {
hosts => ["10.0.0.121:9200"]
index => "lhl-nginx-error-%{+YYYY.MM.dd}"
}}
}
启动logstash服务
systemctl start logstash
查看索引是否生成

在kibana添加索引进行可视化

error索引日志可视化

access索引日志可视化

注意事件
logstash::input::file不支持path=>"/path/to/%{+yyyy/mm/dd/hh}.log"写法
path=>"/path/to/*/*/*.log" 或者path=>"/path/to/**/*.log" //**递归所有子目录
添加注意事件会更新