简介
之前一直尝试在centos中或docker中安装和运行ELK,大体的安装和测试都能够完成。这次专门实战一下把nginx中的日志通过logstash收集到es中,便于后续查询和分析。也为下一步把自己程序中的日志等数据导入到es中做准备。
环境
- Centos7 64位 (操作系统)
- docker
- docker-compose
kibana和es容器配置
我的kibana和es是运行在docker上的,需要提到的是,其中es容器中的数据目录做了本地文件挂载映射,是为了防止重新运行容器时导致es数据丢失的问题。
docker-compose.yml配置文件
1 | version: '2' |
运行容器
1 | docker-compose up -d |
logstash安装及配置
我的logstash用的也是6.8版本,这里注意如果es的版本低于logstash的版本会导致传输数据不兼容的问题。logstash的安装比较简单,就是下载解压安装包,主要是几个配置需要修改。
安装命令
安装命令如下:1
2
3
4
5 下载安装包
wget https://mirrors.huaweicloud.com/logstash/6.8.7/logstash-6.8.7.tar.gz
解压至指定目录
tar -zxvf logstash-6.8.7.tar.gz -C /home/app
jvm内存分配配置
如果云主机的内存不是很充足,可以修改logstash启动时分配的java虚拟机内存大小,编辑{logstash安装目录}/config/jvm.options文件,修改如下两项配置,默认都是1g的:1
2-Xms50m
-Xmx200m
nginx日志搜集到es的配置
搜集nginx日志的logstash配置文件{logstash安装目录}/config/xjy-nginx-es.yml如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23input {
# 从文件读取日志信息
file {
path => "/var/log/nginx/access.log"
type => "nginx_access"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}
}
output {
# 输出es
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "nginx-%{+YYYY.MM.dd}"
}
}
运行命令
1 | 按照指定配置文件运行logstash |
最终效果
上面的步骤都执行后,logstash会在es中自动创建索引,并在nginx有访问日志的时候同步到es中,下面是在kibana中查询到的nginx日志的索引:
结束语
好了,这一期就到这里,等有时间再更新其他es相关的其他实战应用。
本文链接: https://www.xiajunyi.com/pages/p67.html
版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。转载请注明出处!