Bootstrap

Linux ELK日志分析系统

目录

Linux ELK日志分析系统

一、ELK 

 ​​​Elasticsearch

Logstash

Kibana

 完整日志系统基本特征

ELK 中日志处理步骤

Elasticsearch

Logstash

LogStash主要组件

Kibana

Kibana主要功能

二、实际部署


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 按钮创建

http://192.168.68.30:5601/

 对接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-* 的索引

 http://192.168.68.200/

http://192.168.118.140:9100/

http://192.168.118.140:9200/

192.168.118.140

打开浏览器 输入http://192.168.118.140:5601
点击左下角有个management选项---index  patterns---create index pattern
----分别创建apache_error-*   和     apache_access-* 的索引   

;