ELK - 实用日志分析系统

目前日志分析系统用的越来越广泛,而且最主流的技术即ELK,下面和大家分享一下:

---------------------------------------------------------------------------------------

一:简 介 

Elastic Stack 是 原 ELK Stack 在 5.0 版本加入 Beats 套件后的新称呼,近两年飞速崛起,成为开源界机器数据分析和日志处理第一选择。

组成:

kibana:开源工具,为 EL 提供友好的 Web 界面,汇总、分析和搜索重要数据日志;

Logstash:开源工具,它可以对你的日志进行收集、分析,并将其存储供以后使用;

Elasticsearch:开源搜索引擎,分布式、零配置、自动发现、索引机制好、restful接口、多数据源等。

特点如下:

处理方式灵活:Elastic.. 是实时全文索引,不需要像 storm 那样预先编程才能使用;

集群线性扩展:不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;

前端操作炫丽:Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板;

检索性能高效:每次查询都是实时计算,但优秀的设计和实现基本可以达到全天数据查询的秒级响应;

配置简易上手:Elastic.. 采用 JSON 接口,Logstash 是 Ruby DSL 设计,都是目前最通用的配置语法;

文档:https://kibana.logstash.es/content/

官网:https://www.elastic.co/downloads/logstash

架构:

目前大家实用接触最多的有四种架构,我们今天使用的是第二种,简单了解一下:

1、logstash > elasticsearce > kibana

2、logstash_agent > kafka/redis > logstash_index > elasticsearch > kibana

3、logstash_forword > logstash > elasticsearch > kibana

4、filebeat > logstash > elasticsearch > kibana

1、简单易上手、elastic数据易丢失、logstash消耗资源大

2、适用于大集群、引入消息队列保障了数据、但logstash elastic 负载较重

3、forword耗资源极低、与logstash采用ssl加密传输安全、但加密也产生了一定限制性

4、filebeat耗资源极低、并且扩展灵活性高、目前很多朋友开始将 elk 转移到这方向来了

详情见:http://blog.csdn.net/lively1982/article/details/50678657

二:安装  logstash-5.3 (yum方式安装)

Logstash 诞生于2009年8月2日,作者乔丹西塞(JordanSissel),发布过很棒打包工具fpm,2013年 Logstash 被Elasticsearch 公司收购,促使 ELK Stack 正式成为官方用语。

1、安装java环境

java -version  // java9不支持,确保输出是java 1.8系列

# alternatives --config java  //如果服务器存在多个java,可通过此命令更改优先顺序

2、配置yum源安装 logstash

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch  //下载签名秘钥

vim /etc/yum.repos.d/logstash.repo

[logstash-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

yum install logstash   //默认安装路径/usr/share/logstash

cd /usr/share/logstash

bin/logstash -e ‘input { stdin { } } output { stdout {} }‘   //命令行测试,输入任何值会有输

-------------------------------------------------------------------------------

error:Could not find logstash.yml which ....located  $LS_HOME/config or /etc/logstash

解决:cd /usr/share/logstash  &&  ln -svf /etc/logstash  config

error:启动特别慢(其实java写的tomcat也有这问题)

解决:yum install haveged  && systemctl start haveged && systemctl enable haveged

原因:在于jruby启动慢,新版 jruby 启动的时候用PRNG算法产生随机数,会快;但是老版的启动时 jdk 会去 /dev/random 初始化随机数熵,random 发生跟不上生成速度,会被阻塞,直到随机数池有了足够的熵,查看池子 /proc/sys/kernel/random/entropy_avail。安装后随机数都在1000以上

---------------------------------------------------------------------------------

3、测试

在生产环境,我们当然不能命令行直接启动,可以放到screen 或者nohup &启动,但最常用的方法还是daemon,服务去找config下面的配置文件将所有.conf 整合成一个大conf启动,以格式收集日志;

启动:systemctl start logstash   //启动服务,会整合conf下所有的配置文件启动

测试:vim /etc/logstash/conf.d/messlog.conf

input {
    file {
        path => ["/var/log/messages"]   #监控的文件
        type => ["message"]
       #start_position => ["beginning"]  #从最开始输出
    }
}
output {
    stdout { codec => rubydebug }  #屏幕输出信息
    file {
        path => "/usr/share/logstash/recordlog/%{+dd}/%{host}.log"
        codec => "json"   #json格式,信息输入到文件
    }
}

检查:logstash -t -f messlog.conf   //首先要将logstash加入PATH

启动:logstash -f messlog.conf   //命令行指定配置文件启动

测试:logger -i teng test    //此命令可像messages log写入内容测试

4、安装插件 plugins

logstash 1.5.0 版本开始,logstash 将所有的插件都独立拆分成 gem 包,这样就可以单独更新某个插件而不需要等待 logstash整个更新。为此配置了单独的命令 bin/logstash-plugin --help

查看插件:bin/logstash-plugin list   //就位于 vendor/bundle/jruby/1.9/gems/ 下

安装插件:bin/logstash-plugin install logstash-output-xxxx  //可替换成本地路径装gem包

更新插件:bin/logstash-plugin update logstash-input-xxxx

成功后,会在 Gemfile 最后和 Gemfile.jruby-1.9.lock 开头 有新内容

安装时卡住:http://tchuairen.blog.51cto.com/3848118/1871556

三:redis 安装 

1、参考:http://beibing.blog.51cto.com/10693373/1875149

2、确认 logstash 与 redis 结合没问题 (架构应用配置一)

redis-cli -p ** -a ***  > select 2 > lrange logstash:red 0 -1  //会查看到记录的日志

四:安装 Elasticsearch-5.3 (tar 包方式安装)

1、安装测试

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.tar.gz

tar zxvf elasticsearch-5.3.0.tar.gz

cd elasticsearch-5.3.0   //tar 包是已编译过的,可直接使用,这种方法比yum安装更合适

bin/elasticsearch

-------------------------------------------------------------------------------

error:java.lang.RuntimeException: can not run elasticsearch as root

groupadd elsearch  && useradd elsearch -g elsearch -p elsearchpass

cd ..  &&  chown -R elsearch:elsearch elasticsearch-5.3.0  && su - elsearch

cd elasticsearch-5.3.0   &&  bin/elasticsearch   //新建其他用户启动就好

error:启动后只监听了本地的127.0.0.1,需要指定ip启动,外网才能访问这个IP

sed "s/network.host.*/network.host: 0.0.0.0/g" config/elasticsearch.yml

error:max virtual mem.... vm.max_map_count [65530] is too low.. to least [262144]

sysctl -w vm.max_map_count=262144

error:max file descriptors [65535] for elasticsea....ss is too low.. to least [65536]

vim /etc/security/limits.conf   //底部添加

elsearch soft nofile 65536

elsearch hard nofile 65536

-------------------------------------------------------------------------------

bin/elasticsearch   //启动查看,当然可以用 -d 选项后台启动,如下表示安装成功

2、elastic 从 logstash 取数据

vim /etc/logstash/conf.d/messlog.conf   //继续在logstash配置文件中添加

input {
    file {
        path => ["/var/log/messages"]
        type => ["message"]
       #start_position => ["beginning"]
    }
}
output {
    stdout { codec => rubydebug }
    elasticsearch {
        hosts => "127.0.0.1:9200"
    }
}

logstash -f messlog.conf  //开始收集日志,检测与elasticsearch链接是否正常

curl http://localhost:9200/_search?pretty  //查看输出如下,是否匹配

五、安装kibana (rpm方式安装)

1、安装启动

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-x86_64.rpm

rpm -ivh kibana-5.3.0-x86_64.rpm   //默认安装路径与yum类似,在/usr/share/kibana

vim /etc/kibana/kibana.yml

server.host: "xxxxxxxx"    //指定被访问IP

elasticsearch.url: "http://xxxxx:9200"   //指定展示 elasttic 的数据地址

................

/usr/share/kibana/bin/kibana   // 启动测试,web端访问

2、编辑 logstash 收集格式

vim /etc/logstash/conf.d/kibana.conf  (测试配置)

input {
    file {
        path => ["/var/log/messages"]
        type => ["message"]
       #start_position => ["beginning"]
    }
}
filter {
    grok {
        match => { "message" => "%{SYSLOGBASE} %{GREEDYDATA:sys_message}" }#带=>要用{}
        overwrite => [ "message" ]   #将输出格式更改美观,见下面对比
    }
}
output {
    stdout { codec => rubydebug }
    elasticsearch {
        hosts => "127.0.0.1:9200"
        index => "messelog-%{+YYYY.MM.dd}"  #kibana需要识别index才有图表
    }

3、kibana web端设置

引入elaticsearc_index,kibana才能对其进行展示,如下

六:搭建架构 

当测试上面各个组件没问题后,我们将搭建整个架构,实现目标如下:

架构二:Logstash_agent > redis > logstash_index > elasticsearch > kibana


# logstash_agent 处配置

input {

file {
        path => ["/var/log/messages"]
        type => ["message"]
       #start_position => ["beginning"]
    }
}  
#filter {
#  过滤内容自定义  
#}    
output {
    redis {
     host => "xxxxxx"  #redis服务器
     port => "8888"
     db => "2"
     password => "zhimakaimen"
     data_type => "list"
     key => "message_log" #key的名字
    }
}

# logstash_index 服务器配置

input {

redis {
        host => "127.0.0.1"
        port => "8888"
        db => "2"
        password => "zhimakaimen"
        data_type => "list"
        key => "message_log" 
    }
}
#filter {
#  过滤内容自定义  
#}      
output {
    elasticsearch {

hosts => "xxxxx:9200" #elastic服务器

index => "messelog-%{+YYYY.MM.dd}"


    #stdout { codec => rubydebug }
}

systemctl start logstash   //logstash 服务启动收集日志

redis-server redis/redis.conf  //启动redis服务

su - elsearch && elasticsearch -d  //后台启动 elastic 服务

vim /etc/kibana/kibana.yml   // kibana服务器配置 elasticsearch.url 路径

测试查看 kibana:

logger testmsg   //利用 logger 命令将 testmsg 带入message log,刷新kibana查看

------------------------------------------------------------------------------------

今天就到这,下次引入 filebeat 试试效果 .........

时间: 2024-10-07 13:14:47

ELK - 实用日志分析系统的相关文章

docker:搭建ELK 开源日志分析系统

ELK 是由三部分组成的一套日志分析系统, Elasticsearch: 基于json分析搜索引擎,Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片, 索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash:动态数据收集管道,Logstash是一个完全开源的工具,它可以对你的日志进行收集.分析,并将其存储供以后使用 Kibana:可视化视图,将elasticsearh所收集的data通过视图展现.kibana 是一个

ELK+filebeat日志分析系统部署文档

环境说明 架构说明及架构图 filebeat部署在客户端用于收集日志并把收集到的日志发送到logstash.logstash把收集到的日志处理之后交给elasticsearch. kibana从elasticsearch中提取数据并进行展示.之所以使用filebeat进行日志收集是因为filebeat不会像logstash使用大量的资源,影响业务服务器. 环境需求 需要java环境和redis yum install java yum install redis 使用版本 java  1.8.0

elk+redis 日志分析系统

e:elasticsearch l:logstash k:kibana logstash快速入门:http://www.2cto.com/os/201411/352015.html elk中文指南 :http://kibana.logstash.es/content/logstash/index.html

ELK日志分析系统 介绍 安装配置

ELK日志分析系统 一.ELK介绍 ELK顾名思义:是由Elasticsearch,Logstash 和 Kibana三部分组成的. 其中Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写.目前,最新的版本是 5.4. 主要特点 实时分析 分布式实时文件存储,并将每一个字段都编入索引 文档导向,所有的对象全部是文档 高可用性,易扩展,支持集群(Cl

ELK日志分析系统搭建配置

我们主要用ELK日志分析系统来分析Nginx访问日志,mysql慢查询日志,tomcat运行日志以及系统日志等. 介绍:ELK:ElasticSearch+LogStash+Kibana=ElkStackElasticSearch:存储.收索.分析(可以用solr替代)LogStash:收集器,输入,处理分析,存储到ESKibana:展示备注:ElasticSearch支持集群功能,日志收集后会在每个节点存放一份(可以选择) 1.安装jdkwget http://sg-new.oss-cn-ha

Rsyslog+ELK日志分析系统搭建总结1.0(测试环境)

因为工作需求,最近在搭建日志分析系统,这里主要搭建的是系统日志分析系统,即rsyslog+elk. 因为目前仍为测试环境,这里说一下搭建的基础架构,后期上生产线再来更新最后的架构图,大佬们如果有什么见解欢迎指导. 这里主要总结一下搭建过程. 一.rsyslog rsyslog是如今大多数linux自带的日志收集,这里主要说一下rsyslog的简单配置. client端配置它只需要更改准备发送的日志以及在末尾加上Server端使用的协议和IP即可,例如: #加入以下即可 *.* @10.144.1

开源日志分析系统ELK平台搭建部署

开源日志分析系统ELK平台搭建部署 一.前言 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误. 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总. 集中化管理

Ubuntu14.04搭建ELK日志分析系统

系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误.日志的作用不言而喻,但对于数量庞大且分布在多台机器上的日志,查看就显得特别麻烦了.所以,对于运维人员来说,使用日志分析系统是非常有必要的. 开源实时日志分析ELK平台能够实现日志的监控与分析,ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成.官方网站:https://www.elastic.co/pr

elk 日志分析系统Logstash+ElasticSearch+Kibana4

elk 日志分析系统 Logstash+ElasticSearch+Kibana4 logstash 管理日志和事件的工具 ElasticSearch 搜索 Kibana4 功能强大的数据显示客户端 redis 缓存 安装包 logstash-1.4.2-1_2c0f5a1.noarch.rpm elasticsearch-1.4.4.noarch.rpm logstash-contrib-1.4.2-1_efd53ef.noarch.rpm kibana-4.0.1-linux-x64.tar