【ELK搭建过程】

一、为什么用到ELK

一般我们需要进行日志分析场景:直接在日志文件中通过grep、awk这些命令进行获取信息。但是这种用在大型的场景下就显得效率非常低下,面临的问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志进行汇总。常见解决思路是建立集中式日志收集系统,将节点上的日志统一收集、管理、访问。

一般采用分布式部署,一个完整的集中式日志系统,需包含以下几个主要特点:
收集——能够采集多种来源的日志数据
传输——能够稳定的把日志数据传输到中央系统
存储——如何存储日志数据
分析——可以支持网页分析
警告——能提供错误报告

二、ELK简介

ELK是三个开源软件的缩写,分别代表:Elasticsearch Logstash Kibana 。另外新增一个FileBeat,它是一个轻量级的日志收集工具(Agent),Filebeat 占用资源少,适合于在各个服务器上搜集日志后,传输给Logstash,官方也推荐此工具。
Elasticsearch 是个开源分布式搜索引擎,提供搜索、分析、存储数据三大功能。特点:分布式、零配置、自动发现、索引自动分片、索引副本机制、restful风格接口、多数据源、自动搜索负载等。

Logstash 主要是用来日志的搜索、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为C/S架构,Client 端安装在需要收集日志的主机上,Server 端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上。

Kibana 也是一个开源和免费的工具, Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web界面,可以帮助汇总、分析和搜索重要数据日志。

Filebeat 隶属于 Beats 包含四种工具:
Packetbeat(搜集网络流量数据)
Topbeat(搜集系统、进程和文件系统级别的CPU和内存使用情况等数据)
Filebeat(搜集文件数据)
Winlogbeat(搜集windows事件日志数据)
在这里插入图片描述

三、实验部署

本次部署采用C/S架构,准备两台服务器。
filebeats(客户端),logstash+elasticsearch+kibana(服务器)

业务请求到达nginx-server 机器上的Nginx;Nginx相应请求,并在access.log文件中增加访问记录;FileBeat 搜索新增的日志,通过LogStash的5044端口上传日志;LogStash将日志信息通过本机的9200端口传入ElasticSearch;搜索日志的用户通过浏览器访问Kibana,服务器端口是5601;Kibana通过9200端口访问ElasticSearch。
在这里插入图片描述

实验环境

ELK服务器:192.168.28.151
Nginx客户端:192.168.28.30

准备工作

操作系统:centos7 64位
关闭selinux 和 firewalld 防火墙
网络yum源

1)关闭SELinux(进入配置文件,修改为disable)

永久关闭:

[root@localhost local]# vim /etc/selinux/config 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disable
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

临时关闭:

[root@localhost local]# setenforce 0
[root@localhost local]# getenforce 0
Permissive

2)关闭firewalld

[root@www filebeat-6.2.3-linux-x86_64]# systemctl disable   firewalld.service   #开机不启动防火墙
[root@www filebeat-6.2.3-linux-x86_64]# systemctl stop  firewalld.service   #临时关闭防火墙
[root@www filebeat-6.2.3-linux-x86_64]# systemctl status firewalld.service   #查看防火墙状态
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

3)配置yum源
可参考本地和网络yum配置

4)修改IP,将两个服务器的IP设置为同一网段
可编辑
[root@www ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
注意:一定需要配置一个DNS,否则网络yum可能解析不到。
在这里插入图片描述
[root@www ~]#systemctl restart network #重启网卡

下载并安装软件包

1)ELK服务器配置
由于官网下载软件包速度比较满,因此我们可以采用上传软件包的方式。
此处附上我已经为大家准备好的软件包。
链接:https://pan.baidu.com/s/1z4cBxtkq-jSoqIO54XpFLQ
提取码:jm55

2)将压缩包解压,并移动到/usr/local下

[root@localhost ~]$ tar -zxvf elasticsearch-6.2.3.tar.gz && cp -a elasticsearch-6.2.3 /usr/local/
[root@localhost ~]$ tar -zxvf logstash-6.2.3.tar.gz && cp -a logstash-6.2.3 /usr/local/
[root@localhost ~]$ tar -zxvf kibana-6.2.3-linux-x86_64.tar.gz && cp -a kibana-6.2.3-linux-x86_64 /usr/

3)安装JDK(java)环境工具

[root@localhost ~]$ yum -y install java-1.8*

配置elasticsearch

1)创建一个elasticsearch的用户并启动此服务

[root@localhost ~]$ useradd elasticsearch
[root@localhost ~]$ chown -R elasticsearch.elasticsearch /usr/local/elasticsearch-6.2.3/   #将此服务目录所有者所属组修改为elasticsearch
[root@localhost ~]$ su - elasticsearch  #切换为elasticsearch用户
[root@localhost ~]$ cd /usr/local/elasticsearch-6.2.3/  #切换到usr/local/elasticsearch-6.2.3/目录下
[root@localhost ~]$ ./bin/elasticsearch -d  #启动elasticsearch服务

2)查看端口号是否开启

[root@localhost elk]$ netstat -antp | grep 9200
tcp        0      0 127.0.0.1:54612         127.0.0.1:9200          ESTABLISHED 2443/bin/../node/bi 
tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      2217/java           
tcp6       0      0 ::1:9200                :::*                    LISTEN      2217/java     

若启动失败,或者端口号没有起来,可以查看日志

[root@localhost ~]$ cat /usr/local/elasticsearch-6.2.3/logs/elasticsearch.log

3)测试是否可以正常访问

[root@localhost elk]$ curl localhost:9200
{
  "name" : "aE-y2ID",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "0WPz925WSsKWIVKEPTaP8Q",
  "version" : {
    "number" : "6.2.3",
    "build_hash" : "c59ff00",
    "build_date" : "2018-03-13T10:06:29.741383Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

配置logstash

1)进入logstsh的配置文件

[root@localhost elk]$ vim /usr/local/logstash-6.2.3/default.conf

input {  #数据的入口,监听的端口
        beats {
        port => "5044"
        }
  }

#数据过滤
filter {
         grok { #日志分析的插件
         match => { "message" => "%{NGINXACCESS}" }
         }
         geoip { #监控的客户端,监控多个就写多个
         # nginx 客户端 ip
         source => "192.168.28.30"
         }
}

#输出配置为本机的 9200 端口,这是 ElasticSerach 服务的监听端口
output {
         elasticsearch {
         hosts => ["127.0.0.1:9200"]
         }
 }

2)启动elasticsearch服务
进入/usr/local/logstash-6.2.3 目录下,并启动放置后台。

[root@localhost ~]$ cd /usr/local/logstash-6.2.3
[root@localhost ~]$ nohup bin/logstash -f default.conf &

3)如果启动失败可以查看日志

[root@localhost ~]$ tailf nohup.out

4)查看端口是否开启

[root@localhost ~]$ netstat -napt|grep 5044
tcp6       0      0 :::5044                 :::*                    LISTEN      13309/java

配置kibana

1)修改kibana的配置文件
进入/usr/local/kibana-6.2.3-linux-x86_64/config/kibana.yml,找到下面这行并修改
[root@localhost ~]$ vim /usr/local/kibana-6.2.3-linux-x86_64/config/kibana.yml
#server.host: “localhost”
#修改为
server.host: “192.168.28.151” #监听的IP地址,本机的ip地址

因此kibana部署成功,可以被其他用户访问了

2)启动kibana服务并放置后台

[root@localhost ~]$ cd /usr/local/kibana-6.2.3-linux-x86_64
[root@localhost ~]$ nohup bin/kibana &

3)如果启动失败,可以查看日志

[root@localhost ~]$ tail -f nohup.out

4)查看端口是否开启

[root@localhost ~]$ netstat -napt|grep 5601 tcp 0 0
192.168.88.100:5601 0.0.0.0:* LISTEN 13359/bin/…/node/b

5)测试:通过浏览器访问192.168.28.151:5601
ok,ELK 部署完成

Nginx客户端配置

1)yum安装nginx

[root@localhost ~]$ yum -y install nginx
[root@localhost ~]$ systemctl start nginx && systemctl enable nginx

2)将filebeat包通过scp的方式从ELK服务器上复制过来。

[root@localhost local]$ scp /root/elk6.2.3/filebeat-6.2.3-linux-x86_64.tar.gz  root@192.168.28.30:/usr/local/ 
root@192.168.28.30's password: 
filebeat-6.2.3-linux-x86_64.tar.gz                                                                                     100%   12MB  52.7MB/s   00:00    
[root@localhost local]$ tar -xf filebeat-6.2.3-linux-x86_64.tar.gz

3)修改filebeat配置文件
打开文件/usr/local/filebeat-6.2.3-linux-x86_64/filebeat.yml,找到如下位置:修改三处

[root@localhost ~]$ vim /usr/local/filebeat-6.2.3-linux-x86_64/filebeat.yml
enable:false    #修改为 true
paths:/var/log/*.log    #修改为/var/log/nginx/*.log
#output.elasticsearch:   #将此行注释掉
	#hosts: ["localhost:9200"]   #将此行注释掉
output.logstash:     #取消此行注释
	hosts: ["192.168.28.151:5044"] #取消此行注释并修改 IP 地址为 ELK 服务器地址

4)启动filebeat服务
切换到/usr/local/filebeat-6.2.3-linux-x86_64 目录下,将filebeat服务启动并放置后台

[root@localhost ~]$ cd /usr/local/filebeat-6.2.3-linux-x86_64
[root@localhost ~]$ nohup ./filebeat -e -c filebeat.yml &

5)如果启动失败,可以查看日志

[root@localhost ~]$ tailf nohup.out

6)访问
利用浏览器多访问几次nginx服务器,这样能多产生一些访问日志。

7)通过Kibana查看日志
访问 Kibana:http://192.168.88.100:5601,点击左上角的 Discover,就可以看到访问日志已经被ELK 搜集了,然后按照下列步骤完成设置

1、输入 logstash-*,点击”Next step”
2、选择 Time Filter,再点击“Create index pattern”
3、然后可自行创建日志内容查询规则

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值