ELK是Elasticsearch、Logstash、Kibana的简称 Elasticsearch是实时全文搜索和分析引擎 Logstash是一个用来搜集、分析、过滤日志的工具 Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据
提升安全性 集中存放日志 缺陷:对日志的分析困难
收集数据:LogstashAgent 创建索引:ElasticSearchCluster 数据可视化:KilbanaServer
1.将日志进行集中化管理 2.将日志格式化( Logstash )并输出到Elasticsearch 3.对格式化后的数据进行索引和存储( Elasticsearch ) 4.前端数据的展现( Kibana )
Elasticsearch的概述前端
提供了一个分布式多用户能力的全文搜索引擎
Elasticsearch的概念java
接近实时 集群 节点 索引:索引(库)-->类型(表)-->文档(记录) 分片和副本
Logstash介绍node
一款强大的数据处理工具,能够实现数据传输、格式处理、格式化输出 数据输入、数据加工(如过滤,改写等)以及数据输出
LogStash主要组件linux
Shipper Indexer Broker Search and Storage Web Interface
Kibana介绍c++
一个针对Elasticsearch的开源分析及可视化平台 搜索、查看存储在Elasticsearch索引中的数据 经过各类图表进行高级数据分析及展现
Kibana主要功能数据库
Elasticsearch无缝之集成 整合数据,复杂数据分析 让更多团队成员受益 接口灵活,分享更容易 配置简单,可视化多数据源 简单数据导出
配置ELK日志分析群集 使用Logstash收集日志 使用Kibana查看分析日志
所有关闭防火墙 Node一、Node2节点内存分配4G,Apache节点分配1G内存 经过VMware虛拟网络Vmnet8链接
主机名称 | IP地址 | 主要软件 |
---|---|---|
Node1服务器 | 192.168.142.152 | Elasticsearch、Kibana |
Node2服务器 | 192.168.142.153 | Elasticsearch |
Apache服务器 | 192.168.142.155 | Logstash |
1.关闭防火墙及安全功能apache
systemctl stop firewalld.service setenforce 0
2.修改主机名配置文件npm
vim /etc/hosts 192.168.142.152 node1 192.168.142.153 node2
3.远程挂载资源包bootstrap
mount.cifs //192.168.142.1/elk /mnt
4.安装软件包vim
cd /mnt rpm -ivh elasticsearch-5.5.0.rpm
5.加载系统服务
systemctl daemon-reload
6.开机自启动服务
systemctl enable elasticsearch.service
7.备份配置文件
cd /etc/elasticsearch/ cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
8.修改elasticsearch主配置文件
vim /etc/elasticsearch/elasticsearch.yml #第17行,取消注释并修改集群名称 cluster.name: my-elk-cluster #第23行,取消注释修改节点名字 node.name: node1 #第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行,取消注释,放开服务端口 http.port: 9200 #第68行,取消注释修改节点名称 discovery.zen.ping.unicast.hosts: ["node1", "node2"]
9.建立数据库存放路径
mkdir -p /data/elk_data
10.受权数据库存放路径
chown elasticsearch:elasticsearch /data/elk_data/
11.开启elasticsearch服务
systemctl start elasticsearch.service
12.查看端口服务状态
netstat -ntap | grep 9200 tcp6 0 0 :::9200 :::* LISTEN 96970/java
13.安装编译环境
yum install gcc gcc-c++ make -y
14.解压node节点软件包
cd /mnt tar zxvf node-v8.2.1.tar.gz -C /opt
15.配置node
cd /opt/node-v8.2.1/ ./configure
16.编译安装
make && make install
1.解压phantomjs软件包
cd /mnt tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src
2.切换目录查看phantomjs命令
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64//bin ls phantomjs
3.复制目录到系统目录
cp phantomjs /usr/local/bin/
1.解压elasticsearch-head软件包
cd /mnt tar zxvf elasticsearch-head.tar.gz -C /usr/local/src
2.安装elasticsearch-head数据可视化工具
cd /usr/local/src/elasticsearch-head/
npm install
3.修改elasticsearch主配置文件
vim /etc/elasticsearch/elasticsearch.yml #末行添加如下内容 http.cors.enabled: true http.cors.allow-origin: "*"
4.开启elasticsearch服务
systemctl restart elasticsearch.service
5.启动后台运行
npm run start &
6.查看服务端口状态
netstat -ntap | grep 9100 tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 50105/grunt [root@node1 elasticsearch-head]# netstat -ntap | grep 9200 tcp6 0 0 :::9200 :::* LISTEN 96970/java
回到概览便可看到建立好的索引!
#安装Apache服务 yum install -y httpd #远程挂载资源包 mount.cifs //192.168.142.1/elk /mnt #切换到挂载点 cd /mnt #安装logstash rpm -ivh logstash-5.5.1.rpm #开机自启动logstash服务 systemctl enable logstash.service #启动logstash服务 systemctl start logstash.service #创建命令软连接到系统 ln -s /usr/share/logstash/bin/logstash /usr/local/bin #切换日志目录 cd /var/log #授予他人读取权限 chmod o+r messages #查看权限 ll #切入logstash配置目录 cd /etc/logstash/conf.d/ #编辑文件 vim system.conf #写入如下内容,用以收集系统日志 input { file{ path => "/var/log/messages" type => "system" start_position => "beginning" } } output { elasticsearch { #地址指向node1节点 hosts => ["192.168.142.152:9200"] index => "system-%{+YYYY.MM.dd}" } } #重启服务 systemctl restart logstash.service
#切入挂载点 cd /mnt #安装kibana rpm -ivh kibana-5.5.1-x86_64.rpm #切入kibana目录 cd /etc/kibana/ #备份kibana.yml文件 cp kibana.yml kibana.yml.bak #修改kibana.yml文件 vim kibana.yml #取消第2行的注释,放开5601端口 server.port: 5601 #取消第7行的注释并修改地址,放入全部的地址(0.0.0.0表明全部地址) server.host: "0.0.0.0" #取消第21行的注释并指向node1节点的url elasticsearch.url: "http://192.168.142.152:9200" #取消第30行注释,放开kibana首页 kibana.index: ".kibana" #启动kibana服务 systemctl start kibana.service
#编辑Apache日志配置文件 vim 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.142.152:9200"] index => "apache_access-%{+YYYY.MM.dd}" } } if [type] == "error" { elasticsearch { hosts => ["192.168.142.152:9200"] index => "apache_error-%{+YYYY.MM.dd}" } } } #重启服务,稍等片刻! logstash -f apache_log.conf