百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

ELK超详细配置

nanshan 2025-02-09 13:33 8 浏览 0 评论


ELK日志分析系统简介


ELK日志分析系统是Logstash、Elasticsearch、Kibana开源软件的集合,对外是作为一个日志管理系统的开源方案,它可以从任何来源、任何格式进行日志搜索、分析与可视化展示。


ELK日志分析系统组成


  • Elasticsearch(es):通过搭建群集;存储日志数据,索引日志数据
  • Logstash :收集日志,收集到了后给es存储
  • Kibana :视图形式展现日志信息,更加人性化


日志处理步骤


  • 将日志进行集中化管理
  • 将日志格式化(Logstash)并输出到Elasticsearch
  • 对格式化后的数据进行索引和存储(Elasticsearch)
  • 前端数据的展示(Kibana)



三款软件各自概念


Elasticsearch介绍


Elasticsearch的概述


提供了一个分布式多用户能力的全文搜索引擎。


Elasticsearch核心概念


  • 接近实时(NRT),Elasticsearch是一个接近实时的搜索平台,这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)
  • 集群(cluster),一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。其中一个节点为主节点,这个主节点是可以通过选举产生的,并提供跨节点的联合索引和搜索的功能。集群有一个唯一性标示的名字,默认是Elasticsearch,集群名字很重要,每个节点是基于集群名字加入到其集群中的。因此,确保在不同环境中使用不同的集群名字。一个集群可以只有一个节点。强烈建议在配置Elasticsearch时,配置成集群模式。
  • 节点(node),节点就是一台单一的服务器,是集群的一部分,存储数据并参与集群的索引和搜索功能。像集群一样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名。当然,你可以自己定义。该名字也很重要,在集群中用于识别服务器对应的节点。节点可以通过指定集群名字来加入到集群中。默认情况,每个节点被设置成加入到Elasticsearch集群。如果启动了多个节点,假设能自动发现对方,他们将会自动组建一个名为Elasticsearch的集群。
  • 索引(type),在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。


类型相对于关系型数据库的表


索引(库)–》类型(表)–》文档(记录)


分片和副本(shards&replicas)


在实际情况下,索引存储的数据可能超过单个节点的硬件限制。如一个10亿文档需1TB空间可能不适合存储在单个节点的磁盘上,或者从单个节点搜索请求太慢了。为了解决这个问题,Elasticsearch提供将索引分成多个分片的功能。当在创建索引时,可以定义想要分片的数量。每一个分片就是一个全功能的独立的索引,可以位于集群中任何节点上。


每个索引可以被分成多个分片。一个索引也可以被复制0次(意思是没有复制)或多次。一旦复制了,每个索引就有了主分片(作为复制源的原来的分片)和复制分片(主分片的拷贝)之别。分片和副本的数量可以在索引创建的时候指定。


在索引创建之后,你可以在任何时候动态地改变副本的数量,但是你事后不能改变分片的数量。


默认情况下,Elasticsearch中的每个索引被分片5个主分片和1个副本,这意味着,如果你的集群中至少有两个节点,你的索引将会有5个主分片和另外5个副本分片(1个完全拷贝),这样的话每个索引总共就有10个分片。


Logstash介绍


  • 一款强大的数据处理工具
  • 可实现数据传输、格式处理、格式化输出
  • 数据输入(从业务输入)、数据加工(如过滤、改写等)以及数据输出(输出到Elasticsearch群集)
  • Logstash的主要组件:
    • shipper:日志收集者,负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可
    • indexer:日志存储者,负责接收日志并写入到本地文件
    • broker:日志hub,负责连接多个shipper和多个indexer
    • search and storage:允许对事件进行搜索和存储
    • web interface:基于Web的展示界面


Kibana介绍


  • 一个针对Elasticsearch的开源分析及可视化平台
  • 搜索、查看存储在Elasticsearch索引中的数据
  • 通过各种图表进行高级数据分析及展示
  • 主要功能:
    • Elasticsearch无缝之集成
    • 整合数据,复杂数据分析
    • 让更多团队成员收益
    • 接口灵活,分享更容易
    • 配置简单,可视化多数据源
    • 简单数据导出


ELK日志分析系统部署


实验环境及准备


[root@localhost ~]# hostnamectl set-hostname elk-1
[root@localhost ~]# bash
[root@elk-1 ~]# vim /etc/hosts   ###添加本地解析,识别集群主机名
192.168.73.40 elk-1
192.168.73.50 elk-2


实验步骤


elk-1和elk-2中部署Elasticsearch


1、上传密钥,部署yum源,安装Elasticsearch及Java(两台节点)

[root@elk-1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

[root@elk-1 ~]# 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
enable=1

[root@elk-1 ~]# yum install -y elasticsearch java

[root@elk-1 ~]# java -version  ###查看Java版本
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)


2、修改Elasticsearch主配置文件

[root@elk-1 ~]# vim /etc/elasticsearch/elasticsearch.yml
17行 集群名称 ###两个节点一致
cluster.name: abner

23行 节点名称 ###两个节点不同
node.name: elk-1

33行 工作目录
path.data: /data/es-data
path.logs: /var/log/elasticsearch/

43行 防止交换swap分区
bootstrap.memory_lock: true

54行 监听网络
network.host: 0.0.0.0

58行 端口
http.port: 9200

68行:discovery.zen.ping.unicast.hosts: ["elk-1", "elk-2"]    #集群发现通过单播实现,单播的主机名为"elk-1","elk-2"


3、创建工作目录并更改属主及属组,开启服务

[root@elk-1 ~]# mkdir -p /data/es-data
[root@elk-1 ~]# chown -R elasticsearch.elasticsearch /data/es-data
[root@elk-1 ~]# systemctl start elasticsearch.service
[root@elk-1 ~]# netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      46814/java


4、测试




5、两种方法和ES进行交互


  • 第一种:Java API
  • 第二种:RESTful API (通过json格式交互)


[root@elk-1 ~]# curl -i -XGET 'http://192.168.73.40: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
  }
}


6、两个节点安装elasticsearch-head插件(安装插件可以更加人性化的管理集群)

[root@elk-1 ~]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
……省略内容
Installed head into /usr/share/elasticsearch/plugins/head ###安装位置


7、测试——输入
192.168.73.40:9200/_plugin/head/



8、复合查询




9、删除



10、node-01和node-02日志提示不让锁内存


[root@elk-1 ~]# less /var/log/elasticsearch/abner.log
# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited


[root@elk-1 ~]# vim /etc/security/limits.conf  ###末尾插入
[root@elk-1 ~]# systemctl stop elasticsearch.service
[root@elk-1 ~]# systemctl start elasticsearch.service


11、安装监控组件

[root@elk-1 ~]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
……省略内容
Installed kopf into /usr/share/elasticsearch/plugins/kopf  ###安装路径



Apache主机中安装Logstash并做日志搜集


1、修改主机名

[root@localhost ~]# hostnamectl set-hostname apache
[root@localhost ~]# bash


2、安装apache服务

[root@apache ~]# yum install -y httpd
[root@apache ~]# systemctl start httpd


3、安装Java环境,没有自带安装使用yum -y install java安装

[root@apache ~]# yum install -y java
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 1:java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@apache ~]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)


4、上传密钥,部署yum源,安装Logstash

[root@apache ~]# vi /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
enable=1

[root@apache ~]# yum install -y logstash
[root@apache ~]# ln -s /opt/logstash/bin/* /usr/local/bin ###优化执行路径


5、Logstash(apache)与Elasticsearch(node)功能是否正常,做对接测试

Logstash命令选项解释:
-f:指定logstash的配置文件,根据配置文件配置logstash
-e:后面跟着字符串,该字符串可以被当做logstash的配置(如果是“ ”,则默认使用stdin做输入,stdout为输出)
-t:测试配置文件是否正确,然后退出
#输入采用标准输入,输出采用标准输出

定义输入和输出流,类似管道
[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{} }'


6、使用rubydebug显示详细输出,codec为一种编解码器

[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{ codec => rubydeb


7、使用Logstash将信息输出给Elasticsearch

[root@apache ~]# logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["192.168.73.40:9200"] } }'
Settings: Default filter workers: 1
Logstash startup completed

abc123
tom456
123jerry


8、打开浏览器输入
http://192.168.73.40:9100/,查看索引信息,显示新的数据信息说明输出到Elasticsearch成功



9、在Apache主机中做对接配置

[root@apache ~]# chmod o+r /var/log/messages  ###允许其他用户访问
[root@apache ~]# ll /var/log/messages
-rw----r--. 1 root root 439103 11月 18 15:20 /var/log/messages

[root@apache ~]# vim /etc/logstash/conf.d/system.conf
input {                       ###Logstash输入:从/var/log/messages输入,类型为system,起始位
        file {
          path => "/var/log/messages"
          type => "system"
          start_position => "beginning"
        }
      }

output {                      ###Logstash输出:输出给Elasticsearch(以IP地址指定位置)
        elasticsearch {
        hosts => ["192.168.73.40:9200"]
        index => "system-%{+YYY.MM.dd}"
        }
      }
     
[root@apache ~]# systemctl restart logstash


10、打开浏览器输入
http://192.168.73.40:9100/,查看索引信息,显示新的索引信息代表Logstash搜集到的日志信息成功输出给Elasticsearch



在node1主机安装Kibana


1、在node1主机安装Kibana

[root@elk-1 ~]# tar zxf kibana-4.3.1-linux-x64.tar.gz
[root@elk-1 ~]# vim kibana-4.3.1-linux-x64/config/kibana.yml
//2行 
server.port: 5601

//5行
server.host: "0.0.0.0"


//12行 ES地址
elasticsearch.url: "http://192.168.73.40:9200"

//20行
kibana.index: ".kibana"

yum install screen -y


[root@elk-1 ~]# kibana-4.3.1-linux-x64/bin/kibana  ###启动监听
  log   [15:43:45.084] [info][status][plugin:kibana] Status changed from uninitialized to green - Ready
  log   [15:43:45.105] [info][status][plugin:elasticsearch] Status changed from uninitialized to yellow - Waiting for Elasticsearch
  log   [15:43:45.113] [info][status][plugin:kbn_vislib_vis_types] Status changed from uninitialized to green - Ready
  log   [15:43:45.119] [info][status][plugin:markdown_vis] Status changed from uninitialized to green - Ready
  log   [15:43:45.123] [info][status][plugin:metric_vis] Status changed from uninitialized to green - Ready
  log   [15:43:45.125] [info][status][plugin:spyModes] Status changed from uninitialized to green - Ready
  log   [15:43:45.132] [info][status][plugin:statusPage] Status changed from uninitialized to green - Ready
  log   [15:43:45.135] [info][status][plugin:table_vis] Status changed from uninitialized to green - Ready
  log   [15:43:45.136] [info][status][plugin:elasticsearch] Status changed from yellow to green - Kibana index ready
  log   [15:43:45.146] [info][listening] Server running at http://0.0.0.0:5601


2、浏览器中登录http://192.168.73.40:5601,首次登录提示创建一个索引名字:填入system-*,即对接系统日志文件名。




原文链接:https://blog.csdn.net/weixin_47403060/article/details/109758406

相关推荐

三种自建KMS激活系统自动激活windows方法

第一种:在windows服务器上搭建主要针对vol版本(win7、win10、win20xx、win2012等等)平台:我自己搭建的windows虚拟机,windows2016的操作系统软件:...

重装系统被收98元?避开Windows付费陷阱的实用指南

重装系统被收98元?避开Windows付费陷阱的实用指南有网友反映,在重装Windows系统后,屏幕突然弹出“激活系统需支付98元服务费”的提示,疑惑自己是不是遭遇了付费陷阱。事实上,微软官方的Wi...

Windows Server2012远程桌面服务配置和授权激活

安装:注意:安装完毕之后需手动重启一下计算机配置终端服务管理工具---远程桌面服务---RD授权诊断程序,查看当前服务器有没有授权授权:运行—>gpedit.msc->计算机配置---管理...

新书速览|Windows Server 2022 系统与网站配置实战

讲述桌面体验、ServerCore/NanoServer,容器与云系统的配置1本书内容《WindowsServer2022系统与网站配置实战》秉持作者一贯理论兼具实践的写作风格,以新版的Wi...

Windows激活全攻略:KMS神钥与专业工具的完美结合!

对于许多Windows用户来说,系统的激活是一个必经的过程。虽然Windows操作系统在未经激活的状态下也可以使用一段时间,但长期来看,未激活的系统会限制某些功能并频繁提示用户激活。以下是两种流行的激...

微软Win9全新激活技术曝光(微软系统激活有什么用)

2014-07-0905:46:00作者:徐日俄罗斯Wzor日前披露了更多关于Windows9的最新消息,据悉,Windows9将会在今年秋季亮相,其宣传口号是“想要开始按钮和开始菜单?如你所...

快速激活Windows 10/11:CMD命令详细教程

#记录我的2024#激活Windows操作系统是确保系统功能和安全更新正常运行的重要步骤。本文将为您分享如何使用命令提示符(CMD)在Windows10和Windows11上进行激活的详细步骤。...

Wndows 2019 RDS应用发布部署(rds的安装和应用程序的发布)

安装前的准备1、需要提供服务器作为应用中心,应用中心的推荐配置如下表所示。规格建议1-10人11-20人21-50人51-100人100+人CPU4核8核16核内存8GB16GB32GB64GB系统盘...

解决 Windows 系统激活难题(如何解决windows激活问题)

今天,一位朋友给我说,他手头有三台电脑,均同时弹出系统未激活的提示。他对此毫无头绪,便急忙将电脑上出现的激活提示信息一股脑发给了我。我看到其中一台显示的是“Windows10企业版LTSC尚...

自建KMS激活服务器(自建kms激活服务器的风险)

自建KMS激活服务器Win10和office安装后,都需要激活才可以使用,一般可以输入购买的MAK激活码进行在线激活,也可以通过KMS激活,网上也有很多激活工具,但这些工具一般都含有病毒或木马程序,容...

30秒免费激活windows和office亲测有效!

“第三方工具有病毒?”“KMS服务器激活总失效?”今天给大家分享一个开源激活工具——MicrosoftActivationScripts(MAS),无需密钥、不装软件,30秒永久激活Window...

「操作系统」Windows 10 LTSC 2019 企业版C大集成更新版

Windows10LTSC企业版CHIANNET集成更新优化整合多镜像版,CHIANNET,是USBOS超级PE维护盘工具箱作者,长久以来一直默默的更新着,USBOSPE软件,电脑城装机及...

一文看懂Windows激活:自查方法+授权类型科普(Win7/Win10通用)

一、如何判断Windows是否永久激活?无论是Win7还是Win10,均可通过以下方法快速验证:命令提示符法(通用):按下Win+R,输入slmgr.vbs/xpr并按回车键运行即可查看是否...

部分Windows Server 2019/2022用户反馈无法运行微软Teams应用

IT之家7月2日消息,科技媒体borncity今天(7月2日)发布博文,报道称在多个WindowsServer版本上,MicrosoftTeams应用近期出现了运行故障。用...

这种Windows激活方式已有20年...(windows现在激活)

2006年微软正式发布WindowsVista,随之而来引入了一项新的激活机制「OEM激活」,这项机制在Vista和Win7上最为流行。其实WindowsServer自2008开始至2025版本一...

取消回复欢迎 发表评论: