ELK日志分析平台的几种常见形式及搭建

文章目录

  • 前言
  • 一、基础环境
    • 1、主机名
    • 2、防火墙
    • 3、文件数
  • 二、组件获取
  • 三、Elasticsearch
    • 1、Java环境
    • 2、安装Elasticsearch
    • 3、启动Elasticsearch
    • 4、ik插件
    • 5、配置文件
    • 6、目录创建
    • 7、重启Elasticsearch
  • 四、Kibana
    • 1、安装Kibana
    • 2、配置文件
    • 3、目录及文件创建
    • 4、启动Kibana
    • 5、访问Kibana
  • 五、方案一(Logstash + Elasticsearch + Kibana)
    • 1、Java环境
    • 2、安装Logstash
    • 3、配置文件
    • 4、目录创建
    • 5、修改 rsyslog 配置
    • 6、重启 rsyslog
    • 7、增加Logstash配置文件
    • 8、验证配置文件有效性
    • 9、启动Logstash
    • 10、查看ES集群
    • 11、Kibana配置
  • 六、方案二(Filebeat + Elasticsearch + Kibana)
    • 1、安装Filebeat
    • 2、filebeat.yml
    • 3、启动Filebeat
    • 4、查看ES集群
    • 5、Kibana配置
  • 七、方案三(Filebeat + Logstash + Elasticsearch + Kibana)
    • 1、Java环境
    • 2、安装Logstash
    • 3、配置文件
    • 4、目录创建
    • 5、增加Logstash配置文件
    • 6、验证配置文件有效性
    • 7、启动Logstash
    • 8、安装Filebeat
    • 9、filebeat.yml
    • 10、启动Filebeat
    • 11、查看ES集群
    • 12、Kibana配置

机器 IP 组件 版本
elk1 10.10.0.1 Elasticsearch/Kibana 6.3.2
elk2 10.10.0.2 Elasticsearch 6.3.2
elk3 10.10.0.3 Elasticsearch 6.3.2

前言

日志主要包括系统日志和应用程序日志,运维和开发人员可以通过日志了解服务器中软硬件的信息,检查应用程序或系统的故障,了解故障出现的原因,以便解决问题。分析日志可以更清楚的了解服务器的状态和系统安全状况,从而可以维护服务器稳定运行。

但是日志通常都是存储在各自的服务器中。如果管理数十台服务器, 查阅日志需要依次登陆不同的服务器,查看过程就会很繁琐从而导致工作效率低下。虽然可以使用 rsyslog 服务将日志汇总。但是统计一些日志中的数据或者检索也是很麻烦的,一般使用grep、awk、wc、sort等Linux命令来统计和检索。如果对数量巨大的日志进行统计检索,人工的效率还是十分低下。

通过我们对日志进行收集、汇总到一起,完整的日志数据具有非常重要的作用:

  • 信息查找。通过检索日志信息,查找相应的报错,可以快速的解决BUG。
  • 数据分析。如果是截断整理格式化后的日志信息,可以进一步对日志进行数据分析和统计,可以选出头条,热点,或者爆款。
  • 维护。对日志信息分析可以了解服务器的负荷和运行状态。可以针对性的对服务器进行优化。

ELK简介

ELK实时日志收集分析系统可以完美的解决以上问题。ELK作为一款开源软件可以免费使用,也有强大的团队和社区对它实时更新。

ELK主要由ElasticSearch、Logstash和Kibana三个开源工具组成,还有其他专门由于收集数据的轻量型数据采集器Beats。

Elasticsearch :分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 是用Java 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。

在elasticsearch中,所有节点的数据是均等的。

Logstash :数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。

Kibana :可视化化平台。它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。

Filebeat:轻量级数据收集引擎。相对于Logstash所占用的系统资源来说,Filebeat 所占用的系统资源几乎是微乎及微。它是基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 Agent 的第一选择。

版本说明

Elasticsearch、Logstash、Kibana、Filebeat安装的版本号必须全部一致,不然会出现kibana无法显示web页面。

ELK工作演示图:

  • Filebeat在APP Server端收集日志
  • Logstash处理过滤Filebeat收集过来的日志
  • Elasticsearch存储Logstash提供的处理之后的日志,用以检索、统计
  • Kibana提供web页面,将Elasticsearch的数据可视化的展示出来

常见的三种架构

  • Logstash 日志数据采集,Elasticsearch 存储,Kibana 展示
  • Filebeat 日志数据采集,Elasticsearch 存储,Kibana 展示
  • Filebeat 日志数据采集,Logstash 过滤,Elasticsearch 存储,Kibana 展示

第三种方案的架构图:

ELK日志分析平台的几种常见形式及搭建_第1张图片

一、基础环境

1、主机名

hostnamectl set-hostname elk1
hostnamectl set-hostname elk2
hostnamectl set-hostname elk3
...
cat >> /etc/hosts <

2、防火墙

systemctl stop firewalld && systemctl disable firewalld

setenforce 0

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

3、文件数

echo "*   soft    nofile  655350" >> /etc/security/limits.conf
echo "*   hard    nofile  655350" >> /etc/security/limits.conf

二、组件获取

各组件版本最好一致,本文以6.3.2版本为例

https://www.elastic.co/cn/downloads/past-releases
ELK日志分析平台的几种常见形式及搭建_第2张图片

三、Elasticsearch

1、Java环境

rpm -ivh jdk-8u202-linux-x64.rpm
cat >> /etc/profile <
source /etc/profile

2、安装Elasticsearch

rpm -ivh elasticsearch-6.3.2.rpm

3、启动Elasticsearch

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service

4、ik插件

unzip ik.zip && rm -rf ik.zip && mv ik/ /usr/share/elasticsearch/plugins/

5、配置文件

分别修改各节点配置文件

vim /etc/elasticsearch/elasticsearch.yml
node.master: true
node.data: true
cluster.name: ELK
node.name: node-1
path.data: /data1/es/data
path.logs: /data1/es/logs
path.repo: ["/data1/es/backups"]
network.host: 10.10.0.1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.10.0.1", "10.10.0.2", "10.10.0.3"]
cluster.routing.allocation.disk.watermark.low: "90%"
http.enabled: true
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.minimum_master_nodes: 1
xpack.security.enabled: false
  • path.data 可配置多个,用英文逗号隔开
vim /etc/elasticsearch/jvm.options

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms1g  #设置为内存的一半,最大32
-Xmx1g  #设置为内存的一半,最大32
vim /etc/sysctl.conf

vm.max_map_count=262144 #添加

sysctl -p #生效

6、目录创建

mkdir -p /data1/es/{data,logs,backups}
chmod 777 -R /data1/es/*

7、重启Elasticsearch

配置文件修改完毕,重启ES使配置生效

systemctl restart elasticsearch

四、Kibana

集群中任意节点安装,生产环境建议独立机器安装,此处安装在elk1机器

1、安装Kibana

rpm -ivh kibana-6.3.2-x86_64.rpm

2、配置文件

官方配置参数详解:https://www.elastic.co/guide/cn/kibana/current/settings.html

vim /etc/kibana/kibana.yml
server.port: 5601
server.host: "10.10.0.1"
elasticsearch.url: "http://10.10.0.1:9200"
kibana.index: ".kibana"
logging.dest: /data1/kibana/logs/kibana.log
  • ES地址填写集群任意master节点地址即可

3、目录及文件创建

  • 创建日志目录及日志文件,与配置文件设置的一致
mkdir -p /data1/kibana/logs

touch /data1/kibana/logs/kibana.log

chmod o+rw /data1/kibana/logs/kibana.log

4、启动Kibana

systemctl start kibana && systemctl enable kibana && systemctl status kibana

5、访问Kibana

浏览器访问Kibana,http://10.10.0.1:5601
ELK日志分析平台的几种常见形式及搭建_第3张图片

五、方案一(Logstash + Elasticsearch + Kibana)

适用于要使用Logstash对日志进行过滤的场景或组件,以系统日志(/var/log/messages)为例说明,这里收集elk2机器上的系统日志,所以Logstash安装在elk2机器,其他大体相同

机器 IP 组件 版本
elk1 10.10.0.1 Elasticsearch/Kibana 6.3.2
elk2 10.10.0.2 Elasticsearch/Logstash 6.3.2
elk3 10.10.0.3 Elasticsearch 6.3.2

1、Java环境

这里因为是与ES机器(elk2)放在一起,前面已经安装过了所以跳过,生产环境如果Logstash跟别的组件在一起或者单独一台机器则需要先安装java

rpm -ivh jdk-8u202-linux-x64.rpm
cat >> /etc/profile <
source /etc/profile

2、安装Logstash

rpm -ivh logstash-6.3.2.rpm

ELK日志分析平台的几种常见形式及搭建_第4张图片

3、配置文件

  • jvm.options
vim /etc/logstash/jvm.options
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms1g  #设置为内存的一半,最大32
-Xmx1g  #设置为内存的一半,最大32
  • logstash.yml
vim /etc/logstash/logstash.yml
node.name: logstash
path.data: /data1/logstash/data
http.host: "10.10.0.2"
http.port: 9600
path.logs: /data1/logstash/logs

4、目录创建

  • 创建数据及日志目录
mkdir -p /data1/logstash/{data,logs}
chmod 777 -R /data1/logstash/*

chown -R logstash:logstash /data1/logstash/

5、修改 rsyslog 配置

安装完Logstash + Elasticsearch + Kibana之后,不急启动Logstash,采集日志数据,需要有数据源,这里以rsyslog 为例说明,其他组件大体相似

vim /etc/rsyslog.conf

*.* @@10.10.0.2:10514

6、重启 rsyslog

systemctl restart rsyslog

7、增加Logstash配置文件

用于接收rsyslog的日志

vim /etc/logstash/conf.d/syslog.conf
input {
  syslog {
    type => "system-syslog"
    port => 10514
  }
}
output {
  elasticsearch {
    hosts => ["10.10.0.1:9200","10.10.0.2:9200","10.10.0.3:9200"]
    index => "system-syslog-%{+YYYY.MM}"
  }
}

8、验证配置文件有效性

/usr/share/logstash/bin/logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf --config.test_and_exit

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nypvrbD2-1588129990261)(52E94C0054E94EC6A413AFF522AB537D)]

9、启动Logstash

systemctl start logstash && systemctl enable logstash && systemctl status logstash

10、查看ES集群

等待一会等系统有日志产生时,可以在ES集群中看到生成了system-syslog-*类型的日志数据

ELK日志分析平台的几种常见形式及搭建_第5张图片

11、Kibana配置

打开Kibana web页面,http:10.10.0.1:5601

  • “Management”-“Index Patterns”
    ELK日志分析平台的几种常见形式及搭建_第6张图片
  • “system-syslog-*”
    ELK日志分析平台的几种常见形式及搭建_第7张图片
  • “@timestamp”
    ELK日志分析平台的几种常见形式及搭建_第8张图片
    创建好之后,切换到“Discover”页面就可以看到整个日志数据了
    ELK日志分析平台的几种常见形式及搭建_第9张图片

六、方案二(Filebeat + Elasticsearch + Kibana)

适用于不需要使用Logstash对日志进行过滤的场景或组件,还是以系统日志(/var/log/messages)为例说明,这里收集elk3机器上的系统日志,所以filebeat安装在elk3机器,其他大体相同

机器 IP 组件 版本
elk1 10.10.0.1 Elasticsearch/Kibana 6.3.2
elk2 10.10.0.2 Elasticsearch 6.3.2
elk3 10.10.0.3 Elasticsearch/Filebeat 6.3.2

1、安装Filebeat

rpm -ivh filebeat-6.3.2-x86_64.rpm

2、filebeat.yml

vim /etc/filebeat/filebeat.yml

ELK日志分析平台的几种常见形式及搭建_第10张图片
不使用logstash时直接配置ES地址即可,logstash配置注释掉
ELK日志分析平台的几种常见形式及搭建_第11张图片

3、启动Filebeat

systemctl start filebeat && systemctl enable filebeat && systemctl status filebeat

4、查看ES集群

等待一会等系统有日志产生时,可以在ES集群中看到生成了filebeat-*类型的日志数据
ELK日志分析平台的几种常见形式及搭建_第12张图片

5、Kibana配置

打开Kibana web页面,http:10.10.0.1:5601

  • “Management”-“Index Patterns”
    ELK日志分析平台的几种常见形式及搭建_第13张图片
  • “filebeat-*”
    ELK日志分析平台的几种常见形式及搭建_第14张图片
  • “@timestamp”
    ELK日志分析平台的几种常见形式及搭建_第15张图片
    创建好之后,切换到“Discover”页面就可以看到整个日志数据了
    ELK日志分析平台的几种常见形式及搭建_第16张图片

七、方案三(Filebeat + Logstash + Elasticsearch + Kibana)

filebeat采集日志,Logstash对日志进行过滤,还是以系统日志(/var/log/messages)为例说明,filebeat需要安装在被采集的机器上,Logstash任意即可,生产环境建议选择一台ES节点放到一起,这里以和filebeat安装在一起为例

机器 IP 组件 版本
elk1 10.10.0.1 Elasticsearch/Kibana 6.3.2
elk2 10.10.0.2 Elasticsearch 6.3.2
elk3 10.10.0.3 Elasticsearch 6.3.2
采集机器 10.10.0.4 Logstash/Filebeat 6.3.2

1、Java环境

rpm -ivh jdk-8u202-linux-x64.rpm
cat >> /etc/profile <
source /etc/profile

2、安装Logstash

rpm -ivh logstash-6.3.2.rpm

ELK日志分析平台的几种常见形式及搭建_第17张图片

3、配置文件

  • jvm.options
vim /etc/logstash/jvm.options
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms1g  #设置为内存的一半,最大32
-Xmx1g  #设置为内存的一半,最大32
  • logstash.yml
vim /etc/logstash/logstash.yml
node.name: logstash
path.data: /data1/logstash/data
http.host: "10.10.0.4"
http.port: 9600
path.logs: /data1/logstash/logs

4、目录创建

  • 创建数据及日志目录
mkdir -p /data1/logstash/{data,logs}
chmod 777 -R /data1/logstash/*

chown -R logstash:logstash /data1/logstash/

5、增加Logstash配置文件

vim /etc/logstash/conf.d/logstash-filebeat-syslog.conf
input {
 beats {
   port => 5044
  }
}
filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}
output {
 elasticsearch {
  hosts => [ "10.10.0.1:9200","10.10.0.2:9200","10.10.0.3:9200" ]
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
  }
}

6、验证配置文件有效性

/usr/share/logstash/bin/logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/logstash-filebeat-syslog.conf --config.test_and_exit

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kGdumOED-1588129990274)(49D1491337F345F1B95000873F8738F1)]

7、启动Logstash

systemctl start logstash && systemctl enable logstash && systemctl status logstash

8、安装Filebeat

rpm -ivh filebeat-6.3.2-x86_64.rpm

9、filebeat.yml

vim /etc/filebeat/filebeat.yml

ELK日志分析平台的几种常见形式及搭建_第18张图片
使用logstash时将ES配置注释,打开logstash配置并修改
ELK日志分析平台的几种常见形式及搭建_第19张图片

10、启动Filebeat

systemctl start filebeat && systemctl enable filebeat && systemctl status filebeat

11、查看ES集群

等待一会等系统有日志产生时,可以在ES集群中看到生成了filebeat-*类型的日志数据
ELK日志分析平台的几种常见形式及搭建_第20张图片

12、Kibana配置

打开Kibana web页面,http:10.10.0.1:5601

  • “Management”-“Index Patterns”
    ELK日志分析平台的几种常见形式及搭建_第21张图片
  • “filebeat-*”
    ELK日志分析平台的几种常见形式及搭建_第22张图片
  • “@timestamp”
    ELK日志分析平台的几种常见形式及搭建_第23张图片
    创建好之后,切换到“Discover”页面就可以看到整个日志数据了
    ELK日志分析平台的几种常见形式及搭建_第24张图片

你可能感兴趣的:(Linux)