什么是elk:

ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成:
1)ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
在elasticsearch中,所有节点的数据是均等的。
2)Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
3)Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

一个完整的集中式日志系统,需要包含以下几个主要特点:

1)收集-能够采集多种来源的日志数据
2)传输-能够稳定的把日志数据传输到中央系统
3)存储-如何存储日志数据
4)分析-可以支持 UI 分析
5)警告-能够提供错误报告,监控机制
ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。目前主流的一种日志系统。

ELK工作原理:

Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。

环境

准备两台服务器
一台服务器:192.168.80.100
一台服务器:192.168.80.101

下载并解压

mkdir /usr/local/work //为elk创建目录
mkdir /usr/local/java ///为java创建目录
tar xf jdk-8u144-linux-x64.tar.gz -C /usr/local/java
tar xf kibana-6.2.3-linux-x86_64.tar.gz -C /usr/local/work/
tar xf logstash-6.2.3.tar.gz -C /usr/local/work/
tar xf elasticsearch-6.2.3.tar.gz -C /

搭建java环境

cd /opt/
cp -r jdk1.8.0_144/ /usr/local/java
vi /etc/profile //在文件末尾新增
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib

java环境生效

source /etc/profile
查看java版本
java -version

创建用户

ElasticSerach要求以非root身份启动,所以要创建一个用户:
groupadd elasticsearch //创建用户组
useradd -g elasticsearch elasticsearch //创建用户

给elasticesearch-6.2.3修改用户组为elasticsearch

chown -R elasticsearch.elasticsearch /usr/local/work/elasticsearch-6.2.3

修改主机名

hostnamectl set-hostname elk-server
vi /etc/security/limits.conf 新增

  • soft nofile 65536
  • hard nofile 131072
  • soft nproc 2048
  • hard nproc 4096
    linux elk+部署+网页日志工具+文件详解_第1张图片
    vi /etc/sysctl.conf 新增
    vm.max_map_count=655360
    linux elk+部署+网页日志工具+文件详解_第2张图片
    sysctl -p //生效
    重启电脑

启动ElasticSerach

su - elasticsearch //切换用户
cd /usr/local/work/elasticsearch-6.2.3
bin/elasticsearch -d //启动
tail -f /usr/local/work/elasticsearch-6.2.3/logs/elasticsearch.log //查看日志

切换到root

curl 127.0.0.1:9200
linux elk+部署+网页日志工具+文件详解_第3张图片

至此,ElasticSerach服务启动成功,接下来是Logstash

cd /usr/local/work/logstash-6.2.3
vi default.conf
 
input {
beats {
port => "5044"
}
file{
path => ["/usr/local/work/logstash-6.2.3/logs/logstash-plain.log"]
type => "logstash_log"
start_position => "beginning"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
geoip {
source => "clientip"
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
}
}
linux elk+部署+网页日志工具+文件详解_第4张图片

启动logstash

bin/logstash -f default.conf //-f 指定配置文件启动
tail -f logs/logstash-plain.log //查看配置文件

配置和启动Kibana

cd /usr/local/work/kibana-6.2.3-linux-x86_64/
vi config/kibana.yml
server.host: "192.168.80.100"
server.port: "5601"
启动
nohup bin/kibana &
tail -f nohup.out //查看

在浏览器访问http://192.168.80.100:5601

linux elk+部署+网页日志工具+文件详解_第5张图片

配置nginx-server

yum -y install epel-release //安装源
yum -y install nginx httpd-tools //安装软件包

启动nginx

systemctl start nginx

使用filebeat 收集日志的工具

mkdir /usr/local/work/
tar xf filebeat-6.2.3-linux-x86_64.tar.gz -C /usr/local/work/
cd /usr/local/work/filebeat-6.2.3-linux-x86_64/
vi filebeat.yml
enabled: true

  • var/log/.log => - /usr/local/nginx/logs/.log 
    output.elasticsearch: 前面加一个“#”注释掉 
    hosts: ["localhost:9200"] 前面加一个“#” 注释掉 
    #output.logstash 去掉注释符号 
    #host: ["localhost:5400"] 去掉注释符号,并修改为[“192.168.80.100:5400”]
    启动FileBeat:./filebeat -e -c filebeat.yml -d “publish”
通过浏览器多访问几次nginx服务,这样能多制造一些访问日志
访问Kibana:http://192.168.80.100:5601
点击左上角的Discover
可以看到访问日志已经被ELK搜集了
输入logstash-*,点击”Next step”
选择Time Filter,再点击“Create index pattern”

点击左上角的”Discover”按钮,即可看到最新的日志信息

至此,我们已经可以在ELK上查到Nginx的访问日志了

linux elk+部署+网页日志工具+文件详解_第6张图片
自此完成elk