目录
Linux ELK日志分析系统
一、ELK
ELK=elasticsearch+logstash+kibana
Elasticsearch
是一个开源分布式搜索引擎,特点有:分布式、零配置、自动发现
索引自动分片、索引副本机制,restful风格接口,多数据,自动搜索负载等
通常作为具有复杂搜索场景情况下的核心发动机
Logstash
是一个完全开源的工具,它可以对日志进行收集、过滤,并将其存储,供以后使用
Kibana
是一个开源免费的工具,kibana可以为Logstash和Elasticsearch提供友好的日志分析web页面
完整日志系统基本特征
收集∶能够采集多种来源的日志数据
传输∶能够稳定的把日志数据解析过滤并传输到存储系统
存储∶存储日志数据
分析∶支持 UI分析
警告∶能够提供错误报告,监控机制
ELK 中日志处理步骤
第一步:将日志进行集中化管理(beats)
第二步:将日志格式化(Logstash),然后将格式化后的数据输出到Elasticsearch
第三步:对格式化后的数据进行索引和存储(Elasticsearch)
第四步:前端数据的展示(Kibana)
Elasticsearch
实时搜索、实时分析
分布式架构、实时文件存储
文档导向,所有对象都是文档
高可用,易扩展,支持集群,分片与复制
接口友好,支持json
Logstash
一款强大的数据处理工具
可实现数据传输、格式处理、格式化输出
数据输入、数据加工(如过滤,改写等)以及数据输出
常用插件:Input、Filter Plugin、Output
Input:收集源数据(访问日志、错误日志等)
Filter Plugin:用于过滤日志和格式处理
Output:输出日志6.kibana
LogStash主要组件
Shipper
Indexer
Broker
Search and Storage
Web Interface
Kibana
一个针对Elasticsearch的开源分析及可视化平台
搜索、查看存储在Elasticsearch索引中的数据
通过各种图表进行高级数据分析及展示
Kibana主要功能
Elasticsearch无缝之集成
整合数据,复杂数据分析
让更多团队成员收益
接口灵活,分享更容易
配置简单、可视化多数据源
简单数据导出
二、实际部署
环境准备
node1:192.168.118.140
node2:192.168.118.150
apache:192.168.118.160
关闭防火墙,修改主机名
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname apache
检查 java 软件安装
java -version
切换到 /opt 目录安装 elasticsearch-5.5.0.rpm
rpm -ivh elasticsearch-5.5.0.rpm
添加解析
echo "
192.168.118.140 node1
192.168.118.150 node2
192.168.118.160 apache">>/etc/hosts
测试连通性
ping node1
ping node2
ping apache
修改配置文件
cd /etc/elasticsearch/
cp elasticsearch.yml{,.bak}
vim 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 network.host: 0.0.0.0
#监听地址
59 http.port: 9200
#端口
68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]
#自动集群发现,加入主机名
grep -v "^#" elasticsearch.yml
#查看配置
mkdir -p /data/elk_data
#创建目录
chown elasticsearch.elasticsearch /data/elk_data/
#授权
systemctl enable --now elasticsearch.service
#开启服务
netstat -ntap|grep 9200
#查看
192.168.118.140:9200
#网页中测试
node 1
查看配置
创建目录,授权
开启服务
在网页上测试
node2
安装Elasticsearch-head插件 更友好的显示
yum install gcc gcc-c++ make -y
#安装依赖包
cd /opt
tar xf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make -j2 && make install
#编译安装软件
安装依赖包
node1
解压安装包并安装
安装安装phantomjs
安装elasticsearch-head
修改配置文件
重启服务
切换目录,启动elasticsearch-head 服务
在网页中测试
插入索引
node2
安装phantomjs
安装elasticsearch-head
切换目录,启动elasticsearch-head 服务
在网页中测试
apache
[root@apache ~]# yum install httpd -y
[root@apache ~]# systemctl start httpd
##将logstash-5.5.1.rpm 传到/opt目录下
[root@apache opt]# rz -E
rz waiting to receive.
[root@apache opt]# rpm -ivh logstash-5.5.1.rpm
[root@apache opt]# systemctl start logstash.service
[root@apache opt]# systemctl enable logstash.service
[root@apache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
##建立logstash软连接
安装 httpd 服务
安装 logstash
测试安装是否成功
-f 通过这个选项可以指定logstash的配置文件,根据配置文件配置logstash
-e 后面跟着字符串 该字符串可以被当做logstash的配置(如果是” ”,则默认使用stdin做为输入、stdout作为输出)
-t 测试配置文件是否正确,然后退出
定义输入和输出流:
输入采用标准输入,输出采用标准输出(类似管道)
logstash -e 'input { stdin{} } output { stdout{} }'
使用rubydebug显示详细输出,codec为一种编解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
使用 Logstash 将信息写入 Elasticsearch 中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.68.30:9200"] } }'
标准输出
logstash -e 'input { stdin{} } output { stdout{} }'
详细输出
rubydebug显示详细输出,codec为一种编码器,将我输入的内容,解码后进行详细的输出
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
修改配置文件 ,在Apache 主机上做对接配置
Logstash配置文件主要由三部分组成:input、output、filter
[root@apache ~]# chmod o+r /var/log/messages
[root@apache ~]# ll -d /var/log/messages
-rw----r--. 1 root root 656287 12月 18 00:50 /var/log/messages
[root@apache ~]# vim /etc/logstash/conf.d/system.conf
input {
file{
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.68.30:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
[root@apache ~]# systemctl restart logstash.service
重启服务
测试网页
http://192.168.118.140:9100
http://192.168.118.150:9100
可以显示出刚刚添加的系统日志了
node 1
node 2
node 1
安装kibana(192.168.118.140)
[root@node1 ~]# cd /usr/local/src/
[root@node1 src]# rz -E
rz waiting to receive.
[root@node1 src]# ls
elasticsearch-head kibana-5.5.1-x86_64.rpm phantomjs-2.1.1-linux-x86_64
[root@node1 src]# rpm -ivh kibana-5.5.1-x86_64.rpm
[root@node1 src]# cd /etc/kibana/
[root@node1 kibana]# ls
kibana.yml
[root@node1 kibana]# cp kibana.yml kibana.yml.bak
[root@node1 kibana]# vim kibana.yml
2 server.port: 5601
##取消注释;kibana打开的端口(默认5601)
7 server.host: "0.0.0.0"
##取消注释,修改;kibana侦听的地址
21 elasticsearch.url: "http://192.168.118.140:9200"
##取消注释,修改;和elasticsearch建立联系
30 kibana.index: ".kibana"
##取消注释;在elasticsearch中添加.kibana索引
[root@node1 kibana]# systemctl start kibana.service
[root@node1 kibana]# systemctl enable kibana.service
[root@node1 kibana]# vim kibana.yml
测试
在apache主机192.168.118.160上访问192.168.118.140:5601
首次登录创建一个索引 名字:system-* (这是对接系统日志文件)
然后点最下面的出面的create 按钮创建
对接Apache主机的Apache 日志文件(访问日志、错误日志)
[root@apache ~]#cd /etc/logstash/conf.d/
[root@apache conf.d]#touch apache_log.conf
[root@apache conf.d]# 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.118.140:9200"]
index => "apache_access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" {
elasticsearch {
hosts => ["192.168.118.140:9200"]
index => "apache_error-%{+YYYY.MM.dd}"
}
}
}
[root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf
[root@apache conf.d]# vim apache_log.conf
测试(192.168.118.140)
node 1
在主机192.168.118.140上访问
打开输入http://192.168.118.160,制造点访问记录
打开浏览器 输入http://192.168.118.140:9100/ 查看索引信息
能发现apache_error-2021.12.17和apache_access-2021.12.17
打开浏览器 输入http://192.168.118.140:5601
点击左下角有个management选项—index patterns—create index pattern
分别创建apache_error-* 和 apache_access-* 的索引
192.168.118.140
打开浏览器 输入http://192.168.118.140:5601
点击左下角有个management选项---index patterns---create index pattern
----分别创建apache_error-* 和 apache_access-* 的索引