ELK日志分析系统
ELK日志分析系统简介
日志服务器
收集数据:LogstashAgent
建立索引:ElasticSearchCluster
数据可视乎:KilbanaServer
简单的结果拓扑
ELK日志分析系统
- Elasticsearch
是实时全文搜索和分析引擎 - Logstash
是一个用来搜集、分析、过滤日志的工具 - Kibana
是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据日志处理步骤
- 将日志进行集中化管理
- 将日志格式化( Logstash )并输出到Elasticsearch
- 对格式化后的数据进行索引和存储( Elasticsearch )
- 前端数据的展示( Kibana )
2、Elasticsearch介绍
1、Elasticsearch的概述
- 提供了一个分布式多用户能力的全文搜索引擎
2、Elasticsearch的概念
- 接近实时
- 集群
- 节点
- 索引:
-
- 索引(库)-->类型(表)-->文档(记录)
- 分片和副本
3、Logstash介绍
1、Logstash介绍
- 一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出
- 数据输入、数据加工(如过滤,改写等)以及数据输出
2、LogStash主要组件
- Shipper
- Indexer
- Broker
- Search and Storage
- Web Interface
4、Kibana介绍
1、Kibana介绍
- 一个针对Elasticsearch的开源分析及可视化平台
- 搜索、查看存储在Elasticsearch索引中的数据
- 通过各种图表进行高级数据分析及展示
2、Kibana主要功能
- Elasticsearch无缝之集成
- 整合数据,复杂数据分析
- 让更多团队成员受益
- 接口灵活,分享更容易
- 配置简单,可视化多数据源
- 简单数据导出
5、部署ELK日志分析系统
1、需求描述
- 配置ELK日志分析群集
- 使用Logstash收集日志
- 使用Kibana查看分析日志
2、设备列表
主机 操作系统 主机名/IP地址 主要软件 服务器 CentOS7-x86 node1/192.168.45.128 Elasticsearch、kibana 服务器 CentOS7-x86 node2/192.168.45.129 Elasticsearch 服务器 CentOS7-x86 apache/192.168.45.133 Logstatsh 3、实验拓扑
4、准备安装环境
- 关闭防火墙和Selinux
- Node1、Node2节点内存分配4G,Apache节点分配1G内存
- 通过VMware虛拟网络Vmnet8连接
第一步:配置ES节点1服务器
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
第二步:安装phantomjs前端框架
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/
第三步:安装elasticsearch-head数据可视化工具
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
第四步:ES节点2服务器 与节点1的配置一样,重复执行上述操作即可!!!
第五步:使用浏览器输入192.168.142.152:9100网址,并连接另一节点的地址,检查群集健康状态
第六步:创建索引
第七步:配置Apache服务器,安装 logstash 搜集日志搜集
#安装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
第八步:查看收集到的日志信息
第九步:回到node1节点安装kibana
#切入挂载点
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
第十步:测试kibana展现日志数据,使用浏览器访问192.168.142.152:5601
第十一步:对接Apache主机的所有Apache日志文件(在Apache服务器上操作)
#编辑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