ELK
ELK(Elasticsearch文本搜索引擎/Logstash日志收集插件/Kibana是Elasticssearch的Web控制台)三个软件的结合。
系统架构
ELK日志采集与分析系统的主要架构包括日志源、日志采集、数据缓存、数据格式化、日志存储和数据展示六个层面。
- 日志源:是系统分析的数据获取来源,日志形式可以有多种:本地文件、syslog数据、Netflow日志或Windows主机日志等。
- 日志采集:是将日志源数据采集到系统中,可以根据日志源格式的不同,指定不同的采集方式。在采集本地日志文件和syslog数据时,通常使用logstash shipper进行日志数据采集。部分特殊日志会选择使用beat采集。
- 数据缓存:使用logstash shipper采集日志时,为了保证日志数据的完整性,引入了redis缓存shipper采集来的日志数据,数据缓存的意义在于,及时ES集群出现故障,数据无法写入ES时依然可以存储在redis中,待ES集群恢复正常后再写入。
- 数据格式化:logstash shipper会将日志整条读取采集,为了便于存储和分析,使用logstash indexer对整条日志做字段分割的格式化处理,完成格式化后的日志写入ES集群。如数据源为Netflow数据或者使用beat做数据采集,则数据采集和数据格式化的功能都集中在logstash或beat中。
- 日志存储:将采集并完成格式化的日志数据统一存储在ElasticSearch集群中。数据存储在逻辑上将数据根据index划分,每一个index下存储一类日志数据;在真实的物理存储中,所有的数据被划分为一个个shard,存储在ElasticSearch集群各成员主机的路径下。
- 数据展示:日志存储至ES集群后,利用kibana将ES中存储的日志数据做可视化展示;利用“弋搜日志数据管理和分析面板”可以对原始数据进行分析,并且将分析逻辑和分析结果以各种图表的形式展示。
Elasticsearch
Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。其特点有:
- 分布式的实时文件存储,每个字段都被索引并可被搜索
- 分布式的实时分析搜索引擎-做不规则查询
- 可以扩展到上百台服务器,处理PB级结构化或非结构化数据
配置Elasticsearch
将安装包上传到linux服务器的/home/elk中
mkdir elk
修改es的配置和jvm的配置文件
```bash
cd config
vim jvm.options
将jvm.options文件的第22行和23行改为
-Xms128m(128m自定义大小,默认为4g,如果仅作测试不用设置太大,设置太大的话启动不了)
```bash
vim Elasticsearch.yml
- 修改权限
在安装包的最顶级目录下新建一个data文件夹,并修改所有文件夹权限mkdir data chmod -R 777 *
- 修改linux配置,配置ES能够占用的最大线程数、最大内存数、最大文件数
vim /etc/security/limits.conf
vim /etc/sysctl.conf
sysctl -p #使配置生效
新建一个用户用于运行elk,使用root会报错(如果被黑客攻破将可以使用root权限,为了安全起见不使用root运行elk)
adduser elk su elk #切换为elk用户执行 cd bin #进入到bin目录下 ./elasticsearch
通过http://本机ip:9200访问得到下图证明搭建成功
配置kibana
将安装包上传到linux的/home/elk下
配置config下的kibana.yml文件(4个地方需要修改)
启动kibana
访问kibana的Web界面,在搜索栏输入elasticsearch服务器所在ip地址:5601,出现以下界面说明kibana配置成功