ELK日志分析系统
一、ELK日志分析系统简介
ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案。是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。
Elasticsearch 是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
日志服务器
日志分析系统
- Elasticsearch
- Logstash
- Kibana
日志处理步骤
- 1.将日志进行集中化管理
- 2.将日志格式化(Logstash)并输出到Elasticsearch
- 3.对格式化后的数据进行索引和存储(Elasticsearch)
- 4.前端数据的展示(Kibana)
二、Elasticsearch介绍
Elasticsearch概述
Elasticsearch核心概念
三、Logstash介绍
Logstash介绍
- 一款强大的数据处理工具
- 可实现数据传输、格式处理、格式化输出
- 数据输入、数据加工(如过滤,改写等)以及数据输出
LogStash主要组件
- Shipper:日志收集者,负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可
- Indexer:日志存储者,负责接收日志并写入到本地文件
- Broker:日志hub,负责连接多个shipper和多个indexer
- Search and Storage:允许对事件进行搜索和存储
- Web Interface:基于web的展示界面
四、Kibana介绍
Kibana介绍
- 一个针对Elasticsearch的开源分析及可视化平台
- 搜索、查看存储在Elasticsearch索引中的数据
- 通过各种图表进行高级数据分析及展示
Kibana主要功能
- Elasticsearch无缝之集成
- 整合数据,复杂数据分析
- 让更多团队成员受益
- 接口灵活,分享更容易
- 配置简单,可视化多数据源
- 简单数据导出
五、部署ELK日志分析系统
案例拓扑:
需求描述:
- 配置ELK日志分析群集
- 使用Logstash收集日志
- 使用Kibana查看分析日志
部署Elasticsearch(同时在elc-1、elk-2部署)
安装密钥及elasticsearch源
[root@elk-1 ~]
//添加
192.168.254.10 elk-1
192.168.254.11 elk-2
[root@elk-1 ~]
[root@elk-1 ~]
[root@elk-1 yum.repos.d]
//添加
[elasticsearch-2.x]
name=elasticsearch
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1
[root@elk-1 ~]
[root@elk-1 ~]
[root@elk-1 ~]
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)
修改配置文件
[root@elk-1 ~]
cluster.name: elastic //17行 集群名称
node.name:node1 //23行 节点名称
path.data: /data/es-data //33行 工作目录
path.logs: /var/log/elasticsearch/ //37行 日志目录
bootstrap.memory_lock: true //防止交换swap分区
http.port: 9200 //开启端口
创建目录及开启服务
[root@elk-1 ~]
[root@elk-1 ~]
[root@elk-1 ~]
[root@elk-1 ~]
tcp6 0 0 :::9200 :::* LISTEN 13919/java
tcp6 0 0 192.168.254.10:9200 192.168.254.10:56960 ESTABLISHED 13919/java

elasticsearch集群部署
[root@elk-1 ~]
discovery.zen.ping.unicast.hosts: ["192.168.254.10", "192.168.254.11"] //添加elk-1、elk-2 IP
重启服务
[root@elk-1 ~]
测试
http://192.168.254.10:9200/_plugin/head/

查看日志
[root@elc-1 ~]# less /var/log/elasticsearch/elastic.log
 发现无法分配内存
修改配置文件
[root@elc-1 ~]
// Shift+g跳到最后一行 o 添加
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
安装监控组件
[root@elk-1 ~]
测试
 
Logstash部署 (在apache上)
安装httpd并开启服务
[root@apache ~]
[root@apache ~]
[root@apache ~]
[root@apache html]
[root@apache html]
[root@apache ~]
[root@apache ~]
[logstash-2.1]
name=Logstash
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1
[root@apache ~]
[root@apache ~]
[root@apache ~]
www.baidu.coSettings: Default filter workers: 2
Logstash startup completed
www.baidu.com
2020-11-24T11:17:51.412Z apache www.baidu.cowww.baidu.com
www.hao123.com
2020-11-24T11:18:20.206Z apache www.hao123.com
logstash命令选项解释: -f:指定logstash的配置文件,根据配置文件配置logstash -e:后面跟着字符串,该字符串可以被当做logstash的配置(如果是“ ”,则默认使用stdin做输入,stdout为输出) -t:测试配置文件是否正确,然后退出 #输入采用标准输入,输出采用标准输出
[root@apache ~]
www.baidu.com
Settings: Default filter workers: 2
Logstash startup completed
{
"message" => "www.baidu.com",
"@version" => "1",
"@timestamp" => "2020-11-24T11:28:53.599Z",
"host" => "apache"
}
[root@apache ~]
Settings: Default filter workers: 2
Logstash startup completed
ghw111
abc222
333ddd
查看索引信息
[root@apache ~]
[root@apache ~]
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.254.10:9200"]
index => "system-%{+YYY.MM.dd}"
}
}

[root@elk-1 ~]
[root@elk-1 ~]
//2行
server.port: 5601
//5行
server.host: "0.0.0.0"
//12行 ES地址
elasticsearch.url: "http://192.168.254.10:9200"
//20行
kibana.index: ".kibana"
yum install screen -y
[root@elk-1 ~]
|