Linux--ELK日志分析系统

一,ELK是什么?

        ELK是一套针对日志数据做解决方案的框架,分别代表了三款产品: - E: ElasticSearch(ES),负责日志的存储和检索; - L:Logstash,负责日志的收集,过滤和格式化; - K:Kibana,负责日志的展示统计和数据可视化;

  1. ElasticSearch
    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

  2. Logstash
    Logstash是一个用于管理日志和事件的工具,你可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等。

  3. Kibana
    Kibana是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持。

 二,ELK可以做什么:

  1. 应用出现故障,需要通过日志排查故障信息。当应用已部署了多个环境时,这时排查的难度和耗时就是一个巨大的损耗。而ELK就可以对多个环境的日志进行收集,过滤,存储,检错,可视化。届时你只需要查看kibana上的日志信息,就可以找出故障所在。
  2. 针对应用在生产环境上的表现需要数据支撑,如访客数,功能调用量,出错率等等。此类数据的收集,当然可以通过使用别的产品或编写一套程序进行输出,是有其一定的效果。但能像ELK这样对应用无入侵,且功能强大的开源软件。那是少之又少了。

三,ELK一般用来做啥?
  ELK组件在海量日志系统的运维中,可用于解决:

        分布式日志数据集中式查询和管理

        系统监控,包含系统硬件和应用各个组件的监控

        故障排查

        安全信息和事件管理

        报表功能

  ELK组件在大数据运维系统中,主要可解决的问题如下:

        日志查询,问题排查,上线检查

        服务器监控,应用监控,错误报警,Bug管理

        性能分析,用户行为分析,安全漏洞分析,时间管理

四,ELK日志分析的构成:

1.elasticsearch的基础概念:
        接近实时(NRT),群集(cluster),节点(node),索引(index),分片或副本(shards & replicas)。

2.logstash的主要组件:

        shipper:日志收集者。

        lndexer:日志存储者。

        broker:日志Hub

        Search and Storage:允许对事件进行搜索和存储

        web interface:基于web的展示界面

3.kibana的主要功能:

        Elasticsearch无缝之集成,整合数据,复杂数据分析,让更多团队成员收益,接口灵活,配置简单,可视化多数据源,简单数据导出。

一,配置Elasticsearch软件

注:两台节点配置相同,在配置elasticsearch配置文件中注意服务器名称不要相同,群集名称要相同,才可以实现群集效果。

        准备环境:在两台ELK节点上配置域名解析,通过本地/etc/hosts文件实现。

[root@node1 ~]# hostname
node1
[root@node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.1 node1
192.168.2.2 node2

        检查Java环境

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

        部署elasticsearch软件

[root@node1 ~]# rpm -ihv /mnt/elasticsearch-5.5.0.rpm 
警告:/mnt/elasticsearch-5.5.0.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中...                                                            ################################# [100%]

         加载系统服务

[root@node1 ~]# systemctl daemon-reload 
[root@node1 ~]# systemctl enable elasticsearch.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
[root@node1 ~]# 

        创建数据存放数据并授权

[root@node1 ~]# mkdir -p /data/elk_data/
[root@node1 ~]# chown elasticsearch:elasticsearch /data/elk_data/

        更改elasticsearch主配置文件

[root@localhost ~]# vim /etc/elasticsearch/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"]

        启动elasticsearch并查看是否成功开启

[root@node1 ~]# systemctl start elasticsearch.service 
[root@node1 ~]# netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      4297/java          

        查看节点信息

二,安装Elasticsearch-head插件

        编译安装node,编译安装node耗时较长,大约40min,根据机械的配置可能有所不同,请耐心等待。

[root@node1 ~]# tar zxf /mnt/node-v8.2.1.tar.gz -C /usr/src/
[root@node1 ~]# cd /usr/src/node-v8.2.1/
[root@node1 node-v8.2.1]# ./configure && make && make install

        安装phantomjs

[root@node1 ~]# cd /usr/local/src/
[root@node1 src]# tar jxf /mnt/phantomjs-2.1.1-linux-x86_64.tar.bz2 
[root@node1 src]# cd phantomjs-2.1.1-linux-x86_64/bin/
[root@node1 bin]# cp phantomjs /usr/local/bin/

        安装Elasticsearch-head 

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

        修改Elasticsearch配置文件

[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml 
http.cors.enabled: true
http.cors.allow-origin: "*"
[root@node1 ~]# systemctl restart elasticsearch

         启动服务

[root@node1 elasticsearch-head]# npm run start &
[root@node1 elasticsearch-head]# netstat -lnupt | grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      50396/grunt         
[root@node1 elasticsearch-head]# netstat -lnupt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      50023/java          

        通过elasticsearch-head查看elasticsearch信息。通过浏览器访问http://192.168.2.1:9100/,并连接群集

         插入索引。通过命令插入一个测试索引,通过输出信息可以看到索引为index-demo,类型为test。

[root@node1 elasticsearch-head]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

        查看效果

 二,logstash安装及使用方法

注:logstash一般部署在需要监控其日志的服务器中,在本案例中,logstash部署在Apache服务器上,用于收集Apache服务器的日志信息并发送到Elasticsearch中。在正式部署之前,在Node1上部署Logstash,以熟悉logstash的使用方法。logstash也需要Java环境,所以安装之前也要检查当前机器的Java环境是否存在。

        在node1上安装logstash

[root@node1 ~]# rpm -ihv /mnt/logstash-5.5.1.rpm 
警告:/mnt/logstash-5.5.1.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:logstash-1:5.5.1-1              ################################# [100%])
Using provided startup.options file: /etc/logstash/startup.options
Successfully created system startup script for Logstash
[root@node1 ~]# systemctl start logstash.service 
[root@node1 ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

        测试logstash 

logstash命令行中常用的命令选项如下:

            -f:通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash

            -e:后面跟着字符串,该字符串可以被当做lgostash配置(如果是“ ”,则默认使用stdin作为输入,stdout作为输出)。

            -t:测试配置文件是否正确,然后退出。

[root@node1 ~]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.2.1:9200"] } }'
www.baidu.com
www.sina.com
www.google.com

        查看logstash新增的索引

        logstash配置文件

input {

    fliter {...}

}
output {...}

        下来修改logstash配置文件,让其收集系统日志/vcar/log/messages,并将其输出到elasticsearch中。

[root@node1 src]# chmod o+r /var/log/messages
[root@node1 src]# ll /var/log/messages
-rw----r--. 1 root root 107359 9月   2 03:23 /var/log/messages
[root@node1 ~]# vim /etc/logstash/conf.d/system.conf
input {
        file {
                path => "/var/log/messages"
                type => "system"
                start_position => "beginning"
        }
}

output {
        elasticsearch {
                hosts => ["192.168.2.1:9200"]
                index => "system-%{+YYYY.MM.dd}"
        }
}
~                                                                             

[root@node1 src]# systemctl restart logstash

 

三,安装Kibana 

        在node1服务器上安装Kibana,并设置开机启动

[root@node1 ~]# cd /usr/local/src/
[root@node1 src]# rpm -ihv /mnt/kibana-5.5.1-x86_64.rpm 
警告:/mnt/kibana-5.5.1-x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:kibana-5.5.1-1                  ################################# [100%])
[root@node1 src]# systemctl enable kibana.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.

        设置kibana的主配置文件/etc/kibana/kibana.yml\

[root@node1 src]# vim /etc/kibana/kibana.yml 
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"
bana.index: ".kibana"

        启动kibana服务

[root@node1 src]# systemctl start kibana.service 

        验证kibana,通过浏览器访问http://192.168.2.1:5601,第一次登录需要添加一个elasticsearch索引,添加前面创建索引system-*。

         单击“Discover”按钮查看图标信息及日志信息,可以分类显示,使鼠标指针悬停在“Available Fields”中的“host”,然后点击“add”按钮,可以看到按照“host”筛选后的结果。

         将apache服务器的日志添加到Elasticsearch并通过Kibana显示。

[root@node1 src]# yum -y install httpd
[root@node1 ~]# systemctl start httpd

        在logstash配置文件apache_log.conf

[root@node1 ~]# cd /etc/logstash/conf.d/
[root@node1 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 => ["192.168.2.1:9200"]
                        index => "apache_access-%{+YYYY.MM.dd}"
                }
        }
        if [type] == "error" {
                elasticsearch {
                        hosts => ["192.168.2.1:9200"]
                        index => "apache_error-%{+YYYY.MM.dd}"
                }
        }
}

激活配置文件

/usr/share/logstash/bin/logstash -f apache_log.conf 

登录Kibana,单击“  Create index Pattern ”

添加“ apache_access ”,并单击Create按钮。

查看apache_access日志 

添加“ apache_error ”,并单击Create按钮。

查看 apache_error 日志文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

征服bug

curry.30

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值