ELK日志收集
ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。
Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。
Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。
1、准备环境
1.1、配置java环境
去官网 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载jdk1.8以上的包,然后配置java环境,确保环境正常使用,这里安装过程就略过,如有不懂请自行百度。
[root@vm96-yw-65-test-3060 application]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
1.2、下载ELK的软件包
去官网 https://www.elastic.co/cn/products 下载Elasticsearch、Logstash和Kibana,因为是测试环境,所以我就下载了最新版本v6.4.0,下载完解压即可。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.0.tar.gz
2、配置
2.1、修改系统配置
elasticsearch对系统最大连接数有要求,所以需要修改系统连接数。
echo '
* hard nofile 65536
* soft nofile 65536
* soft nproc 65536
* hard nproc 65536
' >>/etc/security/limits.conf
echo 'vm.max_map_count = 262144' >> /etc/sysctl.conf
vim /etc/security/limits.d/90-nproc.conf
# 第一行最后一个数,修改为4096,如果是则不用修改
# limits.d下面的文件可能不是90-nproc.conf,可能是其他数字开头的文件。
* soft nproc 4096
root soft nproc unlimited
2.2、elasticSearch配置
这个其实也是ELK中的核心,启动的时候一定要注意,从5.0开始,ElasticSearch 安全级别提高了,不允许采用root帐号启动,所以我们要添加一个用户,所以你还需要创建一个elsearch账户。
groupadd es #新建es组
useradd es -g es -p elasticsearch #新建一个es用户
chown -R es:es /usr/elasticsearch-6.4.0/ #指定elasticsearch-6.4.0目录下的文件所属elsearch组
修改配置文件
vim /application/elasticsearch-6.4.0/config/elasticsearch.yml
······
path.data: /application/elasticsearch-6.4.0/data
path.logs: /application/elasticsearch-6.4.0/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
······
启动
su es ## 切换到普通用户
cd /application/elasticsearch-6.4.0/
./bin/elasticsearch -d ## -d 后台运行
2.3、logstash配置
解压后进入到config目录中新建一个logstash.conf配置,添加如下内容。
[root@vm96-yw-65-test-3060 config]# pwd
/application/logstash-6.4.0/config
[root@vm96-yw-65-test-3060 config]# vim logstash.conf
input {
file {
type => "log"
path => "/logs/*.log" ##创建一个/logs目录用于之后的测试
start_position => "beginning"
}
}
output {
stdout {
codec => rubydebug { }
}
elasticsearch { ##输出到es
hosts => "localhost:9200"
index => "log-%{+YYYY.MM.dd}"
}
}
logstash做的事情分三个阶段依次执行:输入input——》处理filter(不是必须)——》输出output,这也就是我们需要配置的三部分,因为是测试,所以不添加filter的过滤和筛选,只配置输入输出。一个文件可以有多个input。其中的filter用处很大,但是也是比较麻烦的一个点,需要多多实验,nginx、Apache等服务的日志分析需要使用这个模块去过滤分析。
[root@vm96-yw-65-test-3060 config]# nohup ../bin/logstash -f logstash.conf &
# 使用nohup,启动后台运行,如需关闭使用kill -9,建议多开窗口,启动ELK三个服务,可以观看控制窗口的报错信息
2.4、kibana配置
它的配置也非常简单,你需要在kibana.yml文件中指定一下你需要读取的elasticSearch地址和可供外网访问的bind地址就可以了。
[root@vm96-yw-65-test-3060 config]# vim /application/kinbana-6.4.0/config/kibana.yml
······
elasticsearch.url: "http://localhost:9200"
server.host: 0.0.0.0
······
启动
[root@vm96-yw-65-test-3060 config]# nohup ../bin/kibana &
# 使用nohup,启动后台运行,如需关闭使用kill -9
2.5、测试
写入一个测试所用日志
vim /logs/test.log
Hello,World!!!
启动logstash
[root@vm96-yw-65-test-3060 config]# nohup ../bin/logstash -f logstash.conf &
浏览器中输入:http://IP:5601/,你就可以打开kibana页面了。
点击Management => Index Patterns 创建索引,如果ES接受到了logstash传过来的日志数据,页面会显示能创建的索引,不然会显示不能创建索引。请自行查看日志文件分析错误。
创建索引后,点击左侧Discover,可以看到你刚才创建的日志的分析。