ELK日志分析系统

ELK日志分析系统

是基于Elasticsearch、Logstash、Kibana三个开源的日志收集、存储检索和可视化的解决方案。

elk可以帮助用户快速定位和分析应用程序的故障,监控应用程序的性能和安全性,以及提供丰富的数据分析和展示功能。

ELK日志分析系统包括

Elasticsearch

Logstash

Kibana

日志处理步骤

1.将日志进行集中化管理

2.将日志格式化(Logstash) 并输出到Elasticsearch

3.对格式化后的数据进行索引和存储 (Elasticsearch)

4.前端数据的展示(Kibana)

Elasticsearch

是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。是一个分布式和搜索和分析引擎,它可以对各种类型的数据进行近实时的索引和查询,支持高可用和水平扩展性。

它提供了一个分布式多用户能力的全文搜索引擎。

Logstash

是一个数据处理管道,它可以从多个来源采集数据,对数据进行过滤、转换和增强,然后将数据发送到Blasticsearch或者其他的目的地。

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

LogStash主要组件

Shipper   						日志收集者
Indexer 						日志存储
Broker        					日志hub(用于连接)
Search and Storage		        搜索和存储
Web Interface				    基于Web的展示的界面

input (数据采集)		filter (数据过滤)		output(数据输出)
用jdk启动,基于Jana,会占用大量资源。

Kibana

是一个针对Easticsearch的数据可视化平台,它可以通过各种图表、仪表盘和地图来展示和探索Elasticsearch中的数据。

Kibana主要功能

1、Elasticsearch无缝之集成

2、整合数据,复杂数据分析

3、让更多团队成员受益

4、接口灵活,分享更容易

5、配置简单,可视化多数据源

6、简单数据导出

为什么要使用 ELK

往往单台机器的日志我们使用grep、awk等工具就能基本实现简单分析,但是当日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。

一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

ELK 工作原理

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

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

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

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

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

ELK日志分析系统_第3张图片ELK Elasticsearch 集群部署 

1、部署 Elasticsearch 软件

上传elasticsearch-5.5.0.rpm到/opt目录下
cd /opt
rpm -ivh elasticsearch-5.5.0.rpm 

systemctl daemon-reload    
systemctl enable elasticsearch.service

修改elasticsearch主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml
--17--取消注释,指定集群名字
cluster.name: my-elk-cluster
--23--取消注释,指定节点名字:day6节点为day6,day7节点为day7
node.name: day6
--33--取消注释,指定数据存放路径
path.data: /data/elk_data
--37--取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch/
--43--取消注释,改为在启动的时候不锁定内存
bootstrap.memory_lock: false
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200
--68--取消注释,集群发现通过单播实现,指定要发现的节点 day6、day7
discovery.zen.ping.unicast.hosts: ["day6", "day7"]

grep -v "^#" /etc/elasticsearch/elasticsearch.yml

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

创建数据存放路径并授权
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

启动elasticsearch是否成功开启
systemctl start elasticsearch.service
netstat -antp | grep 9200

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

查看节点信息
浏览器访问 http://192.168.11.66:9200/_cluster/health?pretty  、 http://192.168.11.77:9200/_cluster/health?pretty查看群集的健康情况,可以看到 status 值为 green(绿色), 表示节点健康运行。

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

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

2、 ELK Logstash 部署(在 Apache 节点上操作)

更改主机名
hostnamectl set-hostname apache

安装Apahce服务(httpd)
yum -y install httpd
systemctl start httpd

安装Java环境
yum -y install java
java -version

安装logstash
#上传软件包 logstash-5.5.1.rpm 到/opt目录下
cd /opt
rpm -ivh logstash-5.5.1.rpm                           
systemctl start logstash.service                      
systemctl enable logstash.service

ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
测试 Logstash
logstash -e 'input { stdin{} } output { stdout{} }'
......
www.baidu.com

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

 

修改logstash配置文件
chmod +r /var/log/messages
让 Logstash 可以读取日志

vim /etc/logstash/conf.d/system.conf
input {
    file{
        path =>"/var/log/messages"				指定要收集的日志的位置
        type =>"system"							自定义日志类型标识
        start_position =>"beginning"			表示从开始处收集
    }
}
output {
    elasticsearch {								输出到 elasticsearch
        hosts => ["192.168.11.66:9200"]			指定 elasticsearch 服务器的地址和端口
        index =>"system-%{+YYYY.MM.dd}"			指定输出到 elasticsearch 的索引格式
    }
}

systemctl restart logstash 

ELK Kiabana 部署

安装 Kiabana
#上传软件包 kibana-5.5.1-x86_64.rpm 到/opt目录
cd /opt
rpm -ivh kibana-5.5.1-x86_64.rpm

设置 Kibana 的主配置文件
vim /etc/kibana/kibana.yml
--2--取消注释,Kiabana 服务的默认监听端口为5601
server.port: 5601
--7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--21--取消注释,设置和 Elasticsearch 建立连接的地址和端口
elasticsearch.url: "http://192.168.11.66:9200" 
--30--取消注释,设置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"

启动 Kibana 服务
systemctl start kibana.service
systemctl enable kibana.service

netstat -natp | grep 5601

验证 Kibana
浏览器访问 http://192.168.11.66:5601
第一次登录需要添加一个 Elasticsearch 索引:
Index name or pattern
//输入:system-*			#在索引名中输入之前配置的 Output 前缀“system”

单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。
数据展示可以分类显示,在“Available Fields”中的“host”,然后单击 “add”按钮,可以看到按照“host”筛选后的结果

你可能感兴趣的:(elk)