winxcoder 2019-12-19
ELK是Elasticsearch、Logstash、Kibana的简称 Elasticsearch是实时全文搜索和分析引擎 Logstash是一个用来搜集、分析、过滤日志的工具 Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据
提高安全性 集中存放日志 缺陷:对日志的分析困难

收集数据:LogstashAgent 建立索引:ElasticSearchCluster 数据可视化:KilbanaServer
1.将日志进行集中化管理 2.将日志格式化( Logstash )并输出到Elasticsearch 3.对格式化后的数据进行索引和存储( Elasticsearch ) 4.前端数据的展示( Kibana )
Elasticsearch的概述
提供了一个分布式多用户能力的全文搜索引擎
Elasticsearch的概念
接近实时 集群 节点 索引:索引(库)-->类型(表)-->文档(记录) 分片和副本
Logstash介绍
一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出 数据输入、数据加工(如过滤,改写等)以及数据输出
LogStash主要组件
Shipper Indexer Broker Search and Storage Web Interface
Kibana介绍
一个针对Elasticsearch的开源分析及可视化平台 搜索、查看存储在Elasticsearch索引中的数据 通过各种图表进行高级数据分析及展示
Kibana主要功能
Elasticsearch无缝之集成 整合数据,复杂数据分析 让更多团队成员受益 接口灵活,分享更容易 配置简单,可视化多数据源 简单数据导出
配置ELK日志分析群集 使用Logstash收集日志 使用Kibana查看分析日志
全部关闭防火墙 Node1、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.关闭防火墙及安全功能
systemctl stop firewalld.service setenforce 0
2.修改主机名配置文件
vim /etc/hosts 192.168.142.152 node1 192.168.142.153 node2
3.远程挂载资源包
mount.cifs //192.168.142.1/elk /mnt
4.安装软件包
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 [ 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



另外一部分,则需要先做聚类、分类处理,将聚合出的分类结果存入ES集群的聚类索引中。数据处理层的聚合结果存入ES中的指定索引,同时将每个聚合主题相关的数据存入每个document下面的某个field下。