ELK 企业级日志分析系统

目录

一、ELK 简介

filebeat 结合 logstash 带来好处

缓存/消息队列(redis、kafka、RabbitMQ等)

Fluentd

为什么要使用 ELK

二、完整日志系统基本特征

ELK 的工作原理

三、部署ELK集群部署

第一步 关闭防火墙和安全机制

第二步  给节点服务器设置地址映射关系

第三步 查看JDK是否安装

第四步 给节点服务器安装ES

第五步 加载系统服务

第六步 备份并修改配置文件

第七步 查看取消注释的行

第八步 给两个Node节点创建存放路径并授权

第九步 启动服务器并查看

第十步 用浏览器访问查看

第十一步 安装 Elasticsearch-head 插件

第十二步 编译安装Node

第十三步 安装Phantomjs框架

第十四步  安装Elasticsearch-head

第十五步 修改Elasticsearch主配置文件

第十六步 重启ES服务

第十七步  启动ES-head服务

第十八步 浏览器访问测试

第十九步 插入测试索引

第二十步 查看索引信息

第二十一步 安装Apache节点服务

第二十二步  启动HTTP服务

第二十三步 安装Java环境

第二十四步 安装并启动Logstash服务

第二十五步  加入系统识别服务

第二十六步 使用Logstash把信息写入ES当中

第二十七步 将Logstash日志写入到ES指定IP地址

第二十八步 刷新浏览器访问

第二十九步  给日志文件赋权

第三十步 编写配置文件

第三十一步 重启Logstash服务

第三十二步 再次查看刷新指定ES地址

四、ELK中部署Kibana可视化界面

第一步  在Node1节点服务器中安装部署Kibana

第二步 修改配置文件

第三步 启动Kibana服务

第四步 用浏览器访问测试

第五步 编写配置文件

第六步 执行指定文件

第七步 用浏览器访问测试


一、ELK 简介

ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。

●ElasticSearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。

Elasticsearch 是用 Java 开发的,可通过 RESTful Web 接口,让用户可以通过浏览器与Elasticsearch 通信。

Elasticsearch是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大容量的日志数据,也可用于搜索许多不同类型的文档。
1秒

●Kiabana:Kibana 通常与 Elasticsearch 一起部署,Kibana 是 Elasticsearch 的一个功能强大的数据可视化 Dashboard,Kibana 提供图形化的 web 界面来浏览 Elasticsearch 日志数据,可以用来汇总、分析和搜索重要数据。

●Logstash:作为数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置,一般会发送给 Elasticsearch。

Logstash 由 Ruby 语言编写,运行在 Java 虚拟机(JVM)上,是一款强大的数据处理工具, 可以实现数据传输、格式处理、格式化输出。Logstash 具有强大的插件功能,常用于日志处理。

相对  input(数据采集)  filter(数据过滤)  output(数据输出) 

可以添加的其它组件

●Filebeat:轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 logstash 进或是直接发给

Elasticsearch 存储,性能上相比运行于 JVM 上的 logstash 优势明显,是对它的替代。常应用于 EFLK 架构当中。行解析

filebeat 结合 logstash 带来好处

① 通过 Logstash 具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻 Elasticsearch 持续写入数据的压力

② 从其他数据源(例如数据库,S3对象存储或消息传递队列)中提取

③ 将数据发送到多个目的地,例如S3,HDFS(Hadoop分布式文件系统)或写入文件

④ 使用条件数据流逻辑组成更复杂的处理管道

缓存/消息队列(redis、kafka、RabbitMQ等)

可以对高并发日志数据进行流量削峰和缓冲,这样的缓冲可以一定程度的保护数据不丢失,还可以对整个架构进行应用解耦。

Fluentd

是一个流行的开源数据收集器。由于 logstash 太重量级的缺点,Logstash 性能低、资源消耗比较多等问题,随后就有 Fluentd 的出现。相比较 logstash,Fluentd 更易用、资源消耗更少、性能更高,在数据处理上更高效可靠,受到企业欢迎,成为 logstash 的一种替代方案,常应用于 EFK 架构当中。在 Kubernetes 集群中也常使用 EFK 作为日志数据收集的方案。

在 Kubernetes 集群中一般是通过 DaemonSet 来运行 Fluentd,以便它在每个 Kubernetes 工作节点上都可以运行一个 Pod。 它通过获取容器日志文件、过滤和转换日志数据,然后将数据传递到 Elasticsearch 集群,在该集群中对其进行索引和存储。

为什么要使用 ELK

日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

往往单台机器的日志我们使用grep、awk等工具就能基本实现简单分析,但是当日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用 grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

二、完整日志系统基本特征

收集:能够采集多种来源的日志数据

传输:能够稳定的把日志数据解析过滤并传输到存储系统

存储:存储日志数据

分析:支持 UI 分析

警告:能够提供错误报告,监控机制

ELK 的工作原理

① 在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。

② Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。

③ Elasticsearch 对格式化后的数据进行索引和存储。

④ Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。

logstash作为日志搜集器,从数据源采集数据,并对数据进行过滤,格式化处理,然后交由Elasticsearch存储,kibana对日志进行可视化处理。

三、部署ELK集群部署

Node1节点(2C/4G):node1/192.168.8.130                    Elasticsearch  Kibana

Node2节点(2C/4G):node2/192.168.8.140                    Elasticsearch

Apache节点:Apache/192.168.8.200                        Logstash  Apache

第一步 关闭防火墙和安全机制

命令:systemctl stop firewalld

setenforce 0

ELK 企业级日志分析系统_第1张图片

第二步  给节点服务器设置地址映射关系

命令:echo "192.168.8.130 node1" >> /etc/hosts

echo "192.168.8.140 node2" >> /etc/hosts 

ELK 企业级日志分析系统_第2张图片

第三步 查看JDK是否安装

命令:java -version

ELK 企业级日志分析系统_第3张图片

第四步 给节点服务器安装ES

命令:rpm -ivh elasticsearch-5.5.0.rpm

ELK 企业级日志分析系统_第4张图片

第五步 加载系统服务

命令:systemctl daemon-reload    
systemctl enable elasticsearch.service

ELK 企业级日志分析系统_第5张图片

第六步 备份并修改配置文件

命令:cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml

ELK 企业级日志分析系统_第6张图片

ELK 企业级日志分析系统_第7张图片

ELK 企业级日志分析系统_第8张图片

 Node2节点名称与Node1不同

ELK 企业级日志分析系统_第9张图片

第七步 查看取消注释的行

命令:grep -v "^#" /etc/elasticsearch/elasticsearch.yml

ELK 企业级日志分析系统_第10张图片

第八步 给两个Node节点创建存放路径并授权

命令:mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

ELK 企业级日志分析系统_第11张图片

第九步 启动服务器并查看

命令:systemctl start elasticsearch.service
netstat -antp | grep 9200

ELK 企业级日志分析系统_第12张图片

第十步 用浏览器访问查看

ELK 企业级日志分析系统_第13张图片

ELK 企业级日志分析系统_第14张图片

ELK 企业级日志分析系统_第15张图片

第十一步 安装 Elasticsearch-head 插件

命令:yum -y install gcc gcc-c++ make

ELK 企业级日志分析系统_第16张图片

第十二步 编译安装Node

命令:cd /opt
tar zxvf node-v8.2.1.tar.gz

cd node-v8.2.1/
./configure
make && make install

ELK 企业级日志分析系统_第17张图片

第十三步 安装Phantomjs框架

命令:cd /opt
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/

cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin

ELK 企业级日志分析系统_第18张图片

第十四步  安装Elasticsearch-head

命令:cd /opt
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install

ELK 企业级日志分析系统_第19张图片

第十五步 修改Elasticsearch主配置文件

命令:vim /etc/elasticsearch/elasticsearch.yml

ELK 企业级日志分析系统_第20张图片

第十六步 重启ES服务

命令:systemctl restart elasticsearch

ELK 企业级日志分析系统_第21张图片

第十七步  启动ES-head服务

命令:cd /usr/local/src/elasticsearch-head/
npm run start &

netstat -antp | grep 9100

ELK 企业级日志分析系统_第22张图片

第十八步 浏览器访问测试

ELK 企业级日志分析系统_第23张图片

第十九步 插入测试索引

命令:curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

ELK 企业级日志分析系统_第24张图片

第二十步 查看索引信息

ELK 企业级日志分析系统_第25张图片

第二十一步 安装Apache节点服务

命令:yum -y install httpd

ELK 企业级日志分析系统_第26张图片

第二十二步  启动HTTP服务

命令:systemctl start httpd

ELK 企业级日志分析系统_第27张图片

第二十三步 安装Java环境

命令:yum -y install java

ELK 企业级日志分析系统_第28张图片

第二十四步 安装并启动Logstash服务

命令:rpm -ivh logstash-5.5.1.rpm

systemctl start logstash.service                      

systemctl enable logstash.service

ELK 企业级日志分析系统_第29张图片

第二十五步  加入系统识别服务

命令:ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

第二十六步 使用Logstash把信息写入ES当中

命令:logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'

www.baidu.com

www.sina.com.cn

ELK 企业级日志分析系统_第30张图片

第二十七步 将Logstash日志写入到ES指定IP地址

命令:logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.8.130:9200"] } }'

ELK 企业级日志分析系统_第31张图片

第二十八步 刷新浏览器访问

ELK 企业级日志分析系统_第32张图片

第二十九步  给日志文件赋权

命令:chmod 777 /var/log/messages

第三十步 编写配置文件

命令:vim /etc/logstash/conf.d/system.conf

ELK 企业级日志分析系统_第33张图片

第三十一步 重启Logstash服务

命令:systemctl restart logstash

systemctl status logstash

ELK 企业级日志分析系统_第34张图片

第三十二步 再次查看刷新指定ES地址

ELK 企业级日志分析系统_第35张图片

四、ELK中部署Kibana可视化界面

第一步  在Node1节点服务器中安装部署Kibana

命令:cd /opt
rpm -ivh kibana-5.5.1-x86_64.rpm

ELK 企业级日志分析系统_第36张图片

第二步 修改配置文件

命令:vim /etc/kibana/kibana.yml

ELK 企业级日志分析系统_第37张图片

ELK 企业级日志分析系统_第38张图片

第三步 启动Kibana服务

命令:systemctl start kibana

systemctl enable kibana

lsof -i:5601

ELK 企业级日志分析系统_第39张图片

第四步 用浏览器访问测试

ELK 企业级日志分析系统_第40张图片

ELK 企业级日志分析系统_第41张图片

第五步 编写配置文件

命令:vim /etc/logstash/conf.d/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.10.13:9200"]
            index => "apache_access-%{+YYYY.MM.dd}"
        }
    }
    if [type] == "error" {
        elasticsearch {
            hosts => ["192.168.10.13:9200"]
            index => "apache_error-%{+YYYY.MM.dd}"
        }
    }
}

ELK 企业级日志分析系统_第42张图片

第六步 执行指定文件

命令:cd /etc/logstash/conf.d/
/usr/share/logstash/bin/logstash -f apache_log.conf

ELK 企业级日志分析系统_第43张图片

第七步 用浏览器访问测试

ELK 企业级日志分析系统_第44张图片

ELK 企业级日志分析系统_第45张图片

你可能感兴趣的:(elk)