首页 > 其他分享 >ELK日志管理平台的搭建

ELK日志管理平台的搭建

时间:2022-08-29 10:04:26浏览次数:85  
标签:ELK 31 kibana elasticsearch nfs 日志 root logstash 搭建

ELK 日志管理平台

1>Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,可用来存储各类日志,采用 Java 开发,可通过 RESTful Web 接口,通过浏览器来与 Elasticsearch 通信。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等;负责存储最终数据、建立索引、提供搜索功能。

2>Logstash 主要是用来日志的搜集、分析、过滤日志的工具,负责采集日志,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

另外,它使用JRuby 语言编写,运行在Java虚拟机(JVM)上,是一款强大的数据处理工具,可以实现=数据传输、格式处理、格式化输出。 Logstash 还具有强大的插件功能,常用于日志处理。

3>Kibana 也是一个开源和免费的工具,它基于Node.js开发,负责提供可视化界面,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

4>Filebeat隶属于Beats,其作为原logstash-forwarder的替代来完成。Filebeat轻量级的日志传输工具, ,也可称为:是一个轻量级的日志采集器。它可以读取系统、nignx、apache等logs文件,监控日志文件,传输数据到Elasticsearch或者Logstash,最后在Kibana中实现可视化。目前Beats包含四种工具:

Packetbeat(搜集网络流量数据)
Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
Filebeat(搜集文件数据):FileBeat采集数据时是Json化的,这个日志采集工具相当轻量级,对系统资源的消耗很少。而LogStash的优点则是有丰富的Filter插件,用于对数据作粗处理,占用资源高。一般,我们使用FileBeat采集数据之后会传输给Kafka消息队列,然后LogStash采集消息队列中的数据,作过滤处理,最后将数据传输给ES。
Winlogbeat(搜集 Windows 事件日志数据)

Elastic Stack的优点

Elastic Stack 目前已成为机器数据分析,或者说实时日志处理领域,开源界的第一选择,和传统的日志处理方案相比,Elastic Stack 具有如下几个优点:
1)处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用;
2)配置简易上手。Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL 设计,都是目前业界最通用的配置语法设计;
3)检索性能高效。虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到全天数据查询的秒级响应;
4)集群线性扩展。不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;
5)前端操作炫丽。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。

一、介绍

1、组成

ELK由Elasticsearch、Logstash和Kibana三部分组件组成;
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用
kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

2、四大组件
Logstash: logstash server端用来搜集日志;
Elasticsearch: 存储各类日志;
Kibana: web化接口用作查寻和可视化日志;
Logstash Forwarder: logstash client端用来通过lumberjack 网络协议发送日志到logstash server;

3、工作流程

在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。

下面是在两台节点上都安装一下环境。

nfs-31 
rsync-41

二、安装JDk(两个节点都要安装)

配置阿里源:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
Logstash的运行依赖于Java运行环境,Elasticsearch 要求至少 Java 7。
[root@controller ~]# yum install java-1.8.0-openjdk -y
[root@controller ~]# java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
1、关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
2、关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

三、安装Elasticsearch

基础环境安装(两个节点都要安装,配置文件不一样)

1)下载并安装GPG Key
[root@elk-node1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
 
2)添加yum仓库
[root@elk-node1 ~]# vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
 
3)安装elasticsearch
[root@elk-node1 ~]# yum install -y elasticsearch
4)添加自启动
chkconfig --add elasticsearch
5)启动命令
systemctl daemon-reload
systemctl enable elasticsearch.service

6)修改配置
[root@nfs-31 ~]#cd /etc/elasticsearch/
[root@nfs-31 /etc/elasticsearch]#ls
elasticsearch.yml  logging.yml  scripts
[root@nfs-31 /etc/elasticsearch]#cp elasticsearch.yml{,.bak}
[root@nfs-31 /etc/elasticsearch]#mkdir -p /data/es-data
[root@nfs-31 /etc/elasticsearch]#vim elasticsearch.yml

[root@nfs-31 /etc/elasticsearch]# grep '^[a-z]' elasticsearch.yml
cluster.name: hejianlai               //集群名称
node.name: elk-node1                  //节点名称
path.data: /data/es-data              //数据存放目录
path.logs: /var/log/elasticsearch/    //日志存放目录
bootstrap.memory_lock: true           //打开内存
network.host: 0.0.0.0                 //监听网络
http.port: 9200                       //端口
discovery.zen.ping.multicast.enabled: false                    //改为单播
discovery.zen.ping.unicast.hosts: ["10.0.0.31", "10.0.0.41"]

#注意
#data/es-data没权限,赋权限即可
 chown -R elasticsearch:elasticsearch /data/es-data/
 
#启动
systemctl start elasticsearch

[root@nfs-31 /etc/elasticsearch]#systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2022-08-20 20:46:06 CST; 5s ago
     Docs: http://www.elastic.co
  Process: 2912 ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec (code=exited, status=0/SUCCESS)
 Main PID: 2913 (java)
   CGroup: /system.slice/elasticsearch.service
           └─2913 /bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+...

访问地址10.0.0.31:9200

安装ES插件

#统计索引数
[root@nfs-31 /etc/elasticsearch]#curl -i -XGET 'http://10.0.0.31:9200/_count?pretty' -d '
> "query":{
>     "match_all":{}
> }'
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 95

{
  "count" : 0,
  "_shards" : {
    "total" : 0,
    "successful" : 0,
    "failed" : 0
  }
}

#es插件,收费的不建议使用(这个不安装)
[root@nfs-31 ~]#/usr/share/elasticsearch/bin/plugin install marvel-agent

#安装开源的elasticsearch-head插件
[root@nfs-31 ~]#/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
-> Installing mobz/elasticsearch-head...
Trying https://github.com/mobz/elasticsearch-head/archive/master.zip ...
Downloading ..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................DONE
Verifying https://github.com/mobz/elasticsearch-head/archive/master.zip checksums if available ...
NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)
Installed head into /usr/share/elasticsearch/plugins/head

访问:10.0.0.31:9200/_plugin/head/

使用POST方法创建查询

使用GET方法查询数据

基本查询

41机器配置

[root@rsync-41 /etc/elasticsearch]#cat elasticsearch.yml
cluster.name: hejianlai
node.name: elk-node2
path.data: /data/es-data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["10.0.0.31", "10.0.0.41"]

#data/es-data没权限,赋权限即可
 chown -R elasticsearch:elasticsearch /data/es-data/

在构建Elasticsearch(ES)多节点集群的时候,通常情况下只需要将elasticsearch.yml中的cluster.name设置成相同即可,ES会自动匹配并构成集群。但是很多时候可能由于不同的节点在不同的网段下,导致无法自动获取集群。此时可以将启用单播,显式指定节点的发现。具体做法是在elasticsearch.yml文件中设置如下两个参数:

重启31机器 开启41机器

[root@nfs-31 ~]#systemctl restart elasticsearch
[root@rsync-41 /etc/elasticsearch]#systemctl start elasticsearch

访问 10.0.0.31:9200/_plugin/head/

安装监控kopf

[root@nfs-31 ~]#/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
-> Installing lmenezes/elasticsearch-kopf...
Trying https://github.com/lmenezes/elasticsearch-kopf/archive/master.zip ...
Downloading ......................................................................................................................................................................................................................................................................................................................................................................................................................................................DONE
Verifying https://github.com/lmenezes/elasticsearch-kopf/archive/master.zip checksums if available ...
NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)
Installed kopf into /usr/share/elasticsearch/plugins/kopf

访问 10.0.0.31:9200/_plugin/kopf/#!/cluster

四、安装Logstash(客户端即需要收集日志的机子,ES节点上都要安装)

官方文档地址:https://www.elastic.co/guide/en/logstash/current/index.html

31机器

#1、下载安装GPG Key
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

#2、添加yum仓库
vim /etc/yum.repos.d/logstash.repo
[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

#3、安装logstash
yum install -y logstash
#4、测试数据
#简单的输入输出
[root@nfs-31 ~]# /opt/logstash/bin/logstash -e 'input { stdin{} } output { stdout{} }'
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Settings: Default filter workers: 1
Logstash startup completed
hello world
2022-08-20T13:35:44.716Z nfs-31 hello world
hi afei 
2022-08-20T13:35:57.028Z nfs-31 hi afei
你好啊 渣渣辉  
Received an event that has a different character encoding than you configured. {:text=>"你好啊 渣渣\\xE7辉", :expected_charset=>"UTF-8", :level=>:warn}
2022-08-20T13:36:14.242Z nfs-31 你好啊 渣渣\xE7辉

2022-08-20T13:36:19.675Z nfs-31 
logstash shutdown completed
#可以使用rubydebug详细输出
[root@nfs-31 ~]#/opt/logstash/bin/logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug } }'
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Settings: Default filter workers: 1
Logstash startup completed

{
       "message" => "",
      "@version" => "1",
    "@timestamp" => "2022-08-20T13:37:34.060Z",
          "host" => "nfs-31"
}
mimi
{
       "message" => "mimi",
      "@version" => "1",
    "@timestamp" => "2022-08-20T13:37:40.516Z",
          "host" => "nfs-31"
}


#内容写进elasticsearch中
[root@nfs-31 ~]#/opt/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch{hosts=>["10.0.0.31"]} }'
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Settings: Default filter workers: 1
Logstash startup completed
hello afei
你好帅
啦啦啦啦
dasda 

[root@nfs-31 ~]#/opt/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["10.0.0.31:9200"]} stdout{ codec => rubydebug}}'
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Settings: Default filter workers: 1
Logstash startup completed
北京
{
       "message" => "北京",
      "@version" => "1",
    "@timestamp" => "2022-08-20T13:41:44.333Z",
          "host" => "nfs-31"
}
afei
{
       "message" => "afei",
      "@version" => "1",
    "@timestamp" => "2022-08-20T13:42:05.132Z",
          "host" => "nfs-31"
}

Logstash shutdown completed

logstash日志收集配置文件编写

#1、交换式输入信息
[root@nfs-31 ~]#vim /etc/logstash/conf.d/logstash-01.conf
[root@nfs-31 ~]#cat /etc/logstash/conf.d/logstash-01.conf
input { stdin { } }
output {
        elasticsearch { hosts => ["10.0.0.31:9200"]}
        stdout { codec => rubydebug }
}

#执行命令
[root@nfs-31 ~]#/opt/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-01.conf
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Settings: Default filter workers: 1
Logstash startup completed
wuhan
{
       "message" => "wuhan",
      "@version" => "1",
    "@timestamp" => "2022-08-20T13:50:19.731Z",
          "host" => "nfs-31"
}
小阿飞  
Received an event that has a different character encoding than you configured. {:text=>"\\xE9\\x98小阿飞", :expected_charset=>"UTF-8", :level=>:warn}
{
       "message" => "\\xE9\\x98小阿飞",
      "@version" => "1",
    "@timestamp" => "2022-08-20T13:50:34.473Z",
          "host" => "nfs-31"
}

#收集系统日志
[root@nfs-31 ~]#vim /etc/logstash/conf.d/systemlog.conf
[root@nfs-31 ~]#cat /etc/logstash/conf.d/systemlog.conf
input{
    file {
    path => "/var/log/messages"
    type => "sysstem"
    start_position => "beginning"
    }
}
output{
    elasticsearch{
    hosts => ["10.0.0.31:9200"]
    index => "systemlog-%{+YYYY.MM.dd}"
    }
}

#放在后台执行
[root@nfs-31 ~]#/opt/logstash/bin/logstash -f /etc/logstash/conf.d/systemlog.conf &
[1] 4471
[root@nfs-31 ~]#OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N


收集elk错误日志配置文件编写

[root@nfs-31 ~]#vim /etc/logstash/conf.d/elk_log.conf
[root@nfs-31 ~]#cat /etc/logstash/conf.d/elk_log.conf
input {
    file {
      path => "/var/log/messages"
      type => "system"
      start_position => "beginning"
    }
}
input {
    file {
       path => "/var/log/elasticsearch/hejianlai.log"
       type => "es-error"
       start_position => "beginning"
       codec => multiline {
          pattern => "^\["                                 //正则匹配[开头的为一个事件
          negate => true
          what => "previous"
        }
    }
}
output {
  
    if [type] == "system"{
        elasticsearch {
           hosts => ["10.0.0.31:9200"]
           index => "systemlog-%{+YYYY.MM.dd}"
        }
    }
  
    if [type] == "es-error"{
        elasticsearch {
           hosts => ["10.0.0.31:9200"]
           index => "es-error-%{+YYYY.MM.dd}"
        }
    }
}

#放入后台运行
[root@nfs-31 ~]#/opt/logstash/bin/logstash -f /etc/logstash/conf.d/elk_log.conf &
[2] 4523

五、安装Kibana

官方下载地址:https://www.elastic.co/downloads/kibana

官方最新的版本出来了6.3.1太新了,下载后出现很多坑后来就下了4.3.1的·先用着吧

#1、kibana的安装:
[root@nfs-31 ~]#cd /usr/local/
[root@nfs-31 /usr/local]#wget https://download.elastic.co/kibana/kibana/kibana-4.6.3-linux-x86_64.tar.gz
[root@nfs-31 /usr/local]# tar -xf kibana-4.6.3-linux-x86_64.tar.gz 
[root@nfs-31 /usr/local]#ln -s /usr/local/kibana-4.6.3-linux-x86_64 /usr/local/kibana
[root@nfs-31 /usr/local]#cd kibana
[root@nfs-31 /usr/local/kibana]#ls
bin     data              LICENSE.txt  node_modules  package.json  src
config  installedPlugins  node         optimize      README.txt    webpackShims

#2、修改配置文件
[root@nfs-31 /usr/local/kibana]#cd config/
[root@nfs-31 /usr/local/kibana/config]#pwd
/usr/local/kibana/config
[root@nfs-31 /usr/local/kibana/config]#cp kibana.yml kibana.yml.bb 
[root@nfs-31 /usr/local/kibana/config]#vim kibana.yml
[root@nfs-31 /usr/local/kibana/config]#grep -Ev "^#|^$" kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://10.0.0.31:9200"
kibana.index: ".kibana"

#3、screen是一个全屏窗口管理器,它在几个进程(通常是交互式shell)之间复用物理终端。每个虚拟终端提供DEC VT100的功能。
yum install -y screen

#4、启动screen命令后运行kibana最后按ctrl+a+d组合键让其在单独的窗口里运行。
[root@nfs-31 /usr/local/kibana/config]#/usr/local/kibana/bin/kibana
  log   [22:21:42.921] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
  log   [22:21:42.940] [info][status][plugin:[email protected]] Status changed from uninitialized to yellow - Waiting for Elasticsearch
[root@nfs-31 /usr/local/kibana/config]#screen -ls
There is a screen on:
        4834.pts-0.nfs-31       (Attached)
1 Socket in /var/run/screen/S-root.

[root@nfs-31 /usr/local/kibana/config]#/usr/local/kibana/bin/kibana
  log   [22:22:27.423] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
  log   [22:22:27.440] [info][status][plugin:[email protected]] Status changed from uninitialized to yellow - Waiting for Elasticsearch
  log   [22:22:27.448] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
  log   [22:22:27.456] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
  log   [22:22:27.459] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
  log   [22:22:27.463] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
  log   [22:22:27.465] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
  log   [22:22:27.466] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
  log   [22:22:27.469] [info][listening] Server running at http://0.0.0.0:5601
  log   [22:22:27.480] [info][status][plugin:[email protected]] Status changed from yellow to green - Kibana index ready

六、kibana简单使用

访问kibana地址:10.0.0.31:5601

第一次登录我们创建一个elk的es-error索引

添加之前写的systemlog索引

*为正则匹配

添加message和path字段

运用搜索栏功能,我们搜soft关键字

ELK日志平台搭建基本搞掂

标签:ELK,31,kibana,elasticsearch,nfs,日志,root,logstash,搭建
From: https://www.cnblogs.com/Xafei/p/16634895.html

相关文章

  • php简单实现 接口请求日志
    先看使用效果 执行代码:publicfunctionmainLogic(){logs();//在接口开始时调用,可以放到父类的构造方法里面//接口逻辑....}请求参数:日志: 封装......
  • MPP集群的搭建
    1.端口规划服务器ip实例名PORT_NUMMAL_PORTMAL_DR_PORTGROUP主1192.168.44.171GRP1_MPP_EP01523653375253GRP1备1192.168.44.167GRP1_MPP_EP11......
  • 个人网盘搭建——搭建Cloudreve并对接onedrive
    前言搭建这个主要是为了方便自己备份,顺便可以水一下文章(bushi)其次是自己有好几个微软的全局账号吃灰,还是想稍微利用一下的,如果有人要子号可以来联系哦,好心的我应该会给你......
  • Java入门-编程环境搭建和IDEA软件安装
    JDK8下载安装若之前下载过JDK,则卸载JDK:删除java的安装目录、删除JAVA_HOME、删除path下关于java的目录、cmdjava_version安装JDK:百度JDK8、找到下载地址、同意协议、下......
  • 读写分离集群搭建
    1部署规划读写分离集群适合读多写少的应用环境。Ip规划主机名服务ip数据库名实例名DM_1192.168.44.172DMSERVERrw_1DM_2192.168.44.167DMSERVERrw_......
  • 5-主机侧日志抓取方法
    1.     optionRom日志抓取方法        UEFI是在主机侧运行,排查UEFI的问题,尤其是驱动的问题,不仅需要会获取ioc侧的日志,也需要获取主机侧的日志,也就是UEFI程......
  • 快速搭建 SpringCloud Alibaba Nacos 配置中心!
    SpringCloudAlibaba是阿里巴巴提供的一站式微服务开发解决方案,目前已被SpringCloud官方收录。而Nacos作为SpringCloudAlibaba的核心组件之一,提供了两个非常重......
  • logging 日志设置后不显示
    问题描述之前logging可以正常显示info层级信息,现在只有一条包升级的warning,日志文件也无法创建问题定位当第一次logging记录之后,logging的basicconfig就无法生效了(较......
  • Apache日志 LogFormat参数说明
    Apache日志LogFormat参数说明第2页_服务器应用_Linux公社-Linux系统门户网站 https://www.linuxidc.com/Linux/2013-09/89741p2.htm在Apache的配置文件httpd.conf里默......
  • Apache中按天分割日志(Windows)
    Apache中按天分割日志(Windows)-/折磨-博客园 https://www.cnblogs.com/lh460795/p/6709395.html网上很多资料都有对Apache的access.log按天生成的方法,但在Windows......