ELK日志分析系统简介及配置

前言
当我们部署集群服务器的时候,日志文件就会散落在多台服务器上。查看日志信息就需要到各个服务器上去取和查看,我们把这些日志文件归集到一个地方统一管理。
这个时候ELK系统出现了,ELK是elasticsearch、Logstashh和Kibana三个系统的首字母组合。
当然ELK不只是查看日志功能这么简单,还有更多的应用。

概述
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

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

ELK工作流程
在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。

一. 部署ELK日志分析系统
1.1 案例设计
主机 操作系统 主机名/IP地址 主要软件
服务器 CentOS 7.4 node1/20.0.0.22 Elasticsearch
服务器 CentOS 7.4 node2/20.0.0.23 Elasticsearch
服务器 CentOS 7.4 20.0.0.24 Logstash\apache
服务器 CentOS 7.4 20.0.0.21 kibana
1.2 配置 elasticsearch环境
登录20.0.0.22更改主机名

hostnamectl set-hostname
su

配置主机名解析

vim /etc/hosts
20.0.0.22 node1
20.0.0.23 node2

查看Java环境

  [root@node1 ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

1.3 部署elasticsearch软件
1、安装 elasticsearch-rpm包

上传 elasticsearch-55.0.pm到/op目录下

[root@node1 ~]# cd /opt
[root@node1 ~]# rpm -ivh elasticsearch-5.5.0.rpm    //rpm

直接安装elasticsearch软件包,没有依赖
、加载系统服务
[root@node1 ~]# systemctl daemon-reload //以守护进程来加载,并开启elasticsearch服务

[root@node1 ~]# systemctl enable elasticsearch.service

3、更改 telasticsearch主配置文件

[root@node1 ~]# cd /etc/elasticsearch/
[root@node1 ~]# cp -p elasticsearch.yml elasticsearch.yml.bak 
      //备份配置文件时记得是使用cp -p 保存权限
[root@node1 ~]# vim elasticsearch.yml
  修改以下选项: 
   cluster.name: my-elk-cluster
    node.name: node1
    path.data: /data/elk_data
    path.logs: /var/log/elasticsearch
    bootstrap.memory_lock: false
    network.host: 0.0.0.0
    http.port: 9200
    discovery.zen.ping.unicast.hosts: ["node1", "node2"]
#######################################################################
配置文件分析:
cluster.name: my-elk-cluster       #集群名
node.name: node1                      #当前节点名
path.data: /data/elk_data            #数据存放的位置
path.logs: /var/log/elasticsearch              #日志存放的位置
bootstrap.memory_lock: false                  #不在启动的时候锁定内存:锁定物理内存地址,防止es内存被交换出去
network.host: 0.0.0.0                                #提供服务绑定的IP地址,0.0.0.0代表所有地址
http.port: 9200                                         #侦听端口为9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]                    #集群发现通过单播实现(群集里包含的节点,并非指主机名)

4、创建数据存放路径并授权

[root@node1 ~]# mkdir -p /data/elk_data
[root@node1 ~]# chown elasticsearch:elasticsearch /data/elk_data/ //赋予给elasticsearch管理

5、启动 elasticsearch是否成功开启

[root@node1 ~]# systemctl start elasticsearch.service
[root@node1 ~]# systemctl restart elasticsearch.service
[root@node1 ~]# netstat -anpt | grep 9200

6.查看节点信息用真机的浏览器打开

在谷歌浏览器输入:http:12.0.0.22:9200

{
  "name" : "node1",
  "cluster_name" : "my-elk-cluster",
  "cluster_uuid" : "O7vIIvwYT8KeQIMW9tc_HQ",
  "version" : {
    "number" : "5.5.0",
    "build_hash" : "260387d",
    "build_date" : "2017-06-30T23:16:05.735Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

1.4 安装 elasticsearch-head插件
上述查看集群的方式,及其不方便,我们可以通过安装 lasticsearch-head播件后,我们可以以可式化的方式,友好的查看到日志数据

1.41 安装node依赖包
(为了安装elasticsearch-head工具的依赖包),手工编译安装

上传node-v8.2.1.tar.gz 到/opt 编译安装node组件依赖包样耗时比较长47分钟

[root@node1 ~]# yum -y install gcc gcc-c++ make
[root@node1 ~]# cd /opt
[root@node1 ~]# tar zxvf node-v8.2.1.tar.gz
[root@node1 ~]# cd node-v8.2.1/
[root@node1 ~]# ./configure 
[root@node1 ~]#  make -j3       (时间比较久)
[root@node1 ~]# make install

1.42 安装phantomjs前端架构
上传phantomjs-2.1.1-linux-x86_64.tar.bz2 到/opt

[root@node1 ~]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
[root@node1 ~]# cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/
[root@node1 phantomjs-2.1.1-linux-x86_64]# ls
bin        examples     README.md
ChangeLog  LICENSE.BSD  third-party.txt
[root@node1 phantomjs-2.1.1-linux-x86_64]# cp bin/phantomjs /usr/local/bin/

1.43 安装elasticsearch-head数据可视化工具
1.安装elasticsearch-head

上传elasticsearch-head.tar.gz 到/opt

[root@node1 ~]# tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
[root@node1 ~]# cd /usr/local/src/elasticsearch-head/
[root@node1 elasticsearch-head]# npm install

2.修改主配置文件

[root@node1 elasticsearch-head]#  vim /etc/elasticsearch/elasticsearch.yml
  在末尾加入
  http.cors.enabled: true          //开启跨域访问支持,默认为false
  http.cors.allow-origin: "*"      //跨域访问允许的域名地址
[root@node1 elasticsearch-head]#  systemctl restart elasticsearch.service 

3.开启elasticsearch-head工具,检查9100和9200端口

[root@node1 elasticsearch-head]# npm run start &
[1] 101019
[root@node1 elasticsearch-head]# netstat -anpt | grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      101029/grunt        
[root@node1 elasticsearch-head]# systemctl restart elasticsearch.service 
[root@node1 elasticsearch-head]# netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      101085/java  

4.真机使用谷歌浏览器测试

在真机上输入:12.0.0.22:9100 可以看到群集很健康是绿色的 在
elasticsearch后面的栏目中输入http:/19216810041:9200

5.5 logstash搭建安装(12.0.0.24)
5.51 安装logstash软件
上传logstash-5.5.1.rpm到/opt,改主机名为apache

[root@apache opt]# rpm -ivh logstash-5.5.1.rpm
[root@apache opt]# systemctl start logstash.service 
[root@apache opt]# systemctl enable logstash.service 
[root@apache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin        //做个软连接,让logstash的命令能让系统所识别

1.52 测试logstash软件
采用标准输入和输出的方式测试一下

[root@apache opt]# logstash -e 'input { stdin{} } output { stdout{} }'

输入:www.baidu.com
显示:2020-10-29T03:31:32.572Z apache www.baidu.com

使用rubydebug显示详细输出,codec是一种编解码器

[root@apache opt]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'

输入:www.baidu.com
显示:
{
    "@timestamp" => 2020-10-29T03:46:17.817Z,
      "@version" => "1",
          "host" => "apache",
       "message" => "www.baidu.com"
}

使用logstash将信息写入elasticsearch中

[root@apache opt]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["12.0.0.24:9200"] } }'

输入:
www.baidu.com
www.sina.com.cn
www.google.com.cn
输出:
终端没有显示,要去宿主机的浏览器访问12.0.0.24:9100
下面输入:http://12.0.0.24:9200/点击连接
发现概览里面多出一个logstash-2020.10.29的索引
点击数据浏览选择logstash-2020.10.29的索引,右边显示框会显示我们在终端输入的三个地址。

1.53 做对接配置
与系统日志(/var/log/messages)做对接配置

[root@apache opt]# cd /var/log/
[root@apache log]# ll messages
找到messages文件
-rw-------. 1 root     root   1033039 1029 11:58 messages
给他加个其他用户可读的权限
[root@apache log]# chmod o+r messages
[root@apache log]# ll messages
-rw----r--. 1 root root 1053833 1029 12:00 messages

对于想要对接的数据,在/etc/logstash/conf.d 新创建一个新的**.conf 文件**

[root@apache log]# vim /etc/logstash/conf.d/system.conf     //新建配置文件
input {
        file{
         path => "/var/log/messages"
         type => "system"
         start_position => "beginning"
         }
        }
output {
        elasticsearch {
         hosts => ["20.0.0.10:9200"]
         index => "system-%{+YYYY.MM.dd}"
         }
        }

去宿主机的浏览器访问20.0.0.10:9100 下面输入:http://20.0.0.10:9200/点击连接
发现概览里面多出一个system-2020.10.29的索引

5.6 kibana安装 (12.0.0.21)
上传kibana-5.5.1-x86_64.rpm包到/opt目录下,主机名改为kibana

[root@kibana opt]# rpm -ivh kibana-5.5.1-x86_64.rpm 
去到kibana目录,做个备份再编辑配置文件
[root@kibana opt]# cd /etc/kibana/
[root@kibana opt]# cp kibana.yml kibana.yml.bak
[root@kibana kibana]# vim kibana.yml

第二行:server.port: 5601
第七行:server.host: “0.0.0.0”
二十一:elasticsearch.url: “http://20.0.0.10:9200”
三十行:kibana.index: “.kibana”

开启kibana服务,设为开机自启

[root@kibana kibana]# systemctl start kibana.service 
[root@kibana kibana]# systemctl enable kibana.service 

真机输入20.0.0.40:5601

首次登录创建一个索引名字:system-* ##这是对接系统日志文件 Index name or pattern
##下面输入system-* 然后点最下面的create创建按钮 创建完成之后点击页面左上角的Discover界面就能看到system-*的信息
然后鼠标悬停再system-*下面一排里面的host上,会出现一个add按钮
点击add按钮,会发现右边界面只有time和host选项了,这样显示方式更友好

1.7 logstaicsearch对接apache日志文件,kibana可视化展示 (20.0.0.24)

[root@apache log]# cd /etc/logstash/conf.d/
[root@apache conf.d]# touch apache_log.conf
[root@apache conf.d]# vim apache_log.conf

input {
        file{
         path => "/etc/httpd/logs/access_log"
         type => "access"
         start_position => "beginning"
        }
        file{
         path => "/etc/httpd/logs/error_log"
         type => "error"
         start_position => "beginning"
        }
}       
output {
        if [type] == "access" { 
        elasticsearch {
         hosts => ["20.0.0.10:9200"]
         index => "apache_access-%{+YYYY.MM.dd}"
         }
        }
        if [type] == "error" {
        elasticsearch {
         hosts => ["20.0.0.10:9200"]
         index => "apache_error-%{+YYYY.MM.dd}"
         }
        }
} 
[root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf

宿主机访问12.0.0.22:9100

连接http://12.0.0.22:9200/
可以看到索引信息多了两条
apache_error-2020.10.29
apache_access-2020.10.29

再开一个网页访问20.0.0.40:5601

左边选项最后一个Management ----> Index Patterns ---->Create Index Pattern
分别创建 apache_access-* 和 apache_error-* 的索引
创建完之后要等一段时间才能有数据显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值