ELK的安装部署与使用

这篇具有很好参考价值的文章主要介绍了ELK的安装部署与使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ELK的安装与使用

安装部署

部署环境:Elasticsearch-7.17.3 Logstash-7.17.3 Kibana-7.17.3

一、安装部署Elasticsearch

  1. 解压目录,进入conf目录下
  2. 编辑elasticsearch.yml文件,输入以下内容并保存
network.host: 127.0.0.1
http.port: 9200
# 跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

3.进入bin目录,点击elasticsearch.bat文件启动项目

二、安装部署Logstash

文件配置

在conf目录下新建logstash.conf

input {
    stdin {
    }
    jdbc {
      # 配置数据库信息
      jdbc_connection_string => "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"
      jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
      jdbc_user => "root"
      jdbc_password => "root"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      jdbc_default_timezone => "Asia/Shanghai"
  	   # mysql驱动所在位置
      jdbc_driver_library => "D:\ELK\mysql-connector-java-8.0.11.jar"
      #sql执行语句
	  statement => "SELECT * FROM user"
      # 定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      schedule => "* * * * *"
      # 是否将 sql 中 column 名称转小写
      lowercase_column_names => false
    }
}
output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "goods"
        # 文档_id,%{goods_id}意思是取查询出来的goods_id的值,并将其映射到shop的_id字段中
        # 文档_id,%{goodsId}如果是别名,意思是取查询出来的goodsId的值,并将其映射到shop的_id字段中
        document_id => "%{goodsId}"
    }
    stdout {
        codec => json_lines
    }
}
遇到问题与解决

①JAVA_HOME环境找不到,不推荐使用JAVA_HOME变量名

系统找不到指定的路径。could not find java; set JAVA_HOME or ensurejava is in PATH D: ELK logstash-?.17.3 bin>

解决方法:

新增JDK环境变量:命名为 LS_JAVA_HOME

将jdk路径复制进去,注意!!!JDK版本必须1.8以上

②报以下错误

安装elk,成长之旅,elk,elasticsearch,数据库

解决办法:

在bin目录下新建文件:logstash.conf

设置logstash.conf的值,或指定路径下的conf文件

input {
	stdin{
	}
}

output {
	stdout{
	}
}

启动logstash,进入bin目录下的cmd,输入以下命令

logstash -f logstash.conf

安装部署Kibana

进入config目录将kibana.yml文件修改

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
kibana.index: ".kibana"

SpringBoot集成Logstash收集日志

1、导入依赖

在pom.xml文件导入以下依赖

<!--集成logstash-->
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>5.3</version>
        </dependency>

2、配置文件

新建"logback-spring.xml"文件,并编写内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--设置指定路径下的发送地址,端口号设置为4560-->
        <destination>localhost:4560</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>
    <!--配置根路径下日志级别-->
    <root level="INFO">
        <appender-ref ref="LOGSTASH" />
    </root>
</configuration>

3、配置application.yml文件

进入application.yml文件配置日志

logging:
  level:
    root: info
  config: classpath:logback-spring.xml

4、配置logstash下的logstash.conf文件

input{
	tcp{
		mode => "server"
		host => "127.0.0.1"
		port => 4560
		codec => json_lines
	}
}
output{
	elasticsearch{
		action => "index"
		hosts => "localhost:9200"
		index => "springboot_log-%{+YYYY.MM.dd}"
	}
}

以上配置完启动可运行成功

5、配置Logstash日志保存到数据库

Linux配置这里就不提了,网上很多。这里讲的是windows系统下的配置,并以MySQL数据库为例。

使用的是jdbc,由于Logstash默认不带jdbc,所以需要下载logstash-output-jdbc,在线下载方式:进入logstash的bin目录下输入以下命令:

logstash-plugin install --no-verify logstash-output-jdbc

若安装失败,则去百度找一个压缩包下载(小编是在百度网盘上面下载的)

下一步是采用不联网的安装方式:进入logstash的bin目录下输入以下命令:

logstash-plugin install file://文件路径+压缩包全名,以'/'分隔

若还是安装失败,则需要更改配置文件

在logstash根目录下的Gemfile文件修改以下配置

source "https://gems.ruby-china.com"

重新进入logstash的bin目录下输入以下命令

logstash-plugin install file://文件路径+压缩包全名,以'/'分隔

网上下载mysql驱动,譬如mysql-connector-java-8.0.11.jar

下载后在logstash下的vendor目录下新建jar目录,再进入jar目录新建jdbc目录

将mysql驱动包放到jdbc目录下,全局路径如下:logstash-7.17.3目录为安装模块

logstash-7.17.3\vendor\jar\jdbc\mysql-connector-java-8.0.11.jar          

譬如springboot下的日志内容为

log.info(“|”+“version内容”+“|”+“taskId内容”+“|”+“taskType内容”+“|”+“data内容”+“|”+“time内容”)

重新进入logstash.conf文件,编辑以下内容

input{
	tcp{
		mode => "server"
		host => "127.0.0.1"
		port => 4560
		codec => json_lines
	}
}
filter{
	mutate{
		split => ["message","|"]
	}
	if[message][2]{
			mutate{
				add_field =>{
					"version" => "%{[message][2]}"
				}
			}
		}
		if[message][3]{
			mutate{
				add_field =>{
					"taskId" => "%{[message][3]}"
				}
			}
		}
		if[message][4]{
			mutate{
				add_field =>{
					"taskType" => "%{[message][4]}"
				}
			}
		}
		if[message][5]{
			mutate{
				add_field =>{
					"data" => "%{[message][5]}"
				}
			}
		}
		if[message][6]{
			mutate{
				add_field =>{
					"time" => "%{[message][6]}"
				}
			}
		}
		mutate{
			convert => {
				"version" => "string"
				"taskId" => "string"
				"taskType" => "string"
				"data" => "string"
				"time" => "string"
			}
		}
}
output{
	driver_class => "com.mysql.cj.jdbc.Driver"
					connection_string => "jdbc:mysql://127.0.0.1:3306/student?user=用户名&password=密码&serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=false&autoReconnect=true"
					statement => ["insert into 表名 (version,taskId,taskType,data,time) VALUES (?,?,?,?,?)","version","taskId","taskType","data","time"]
}

6、区分业务日志和错误日志存储

add_tag 属性,在input添加,用于区分输出

具体内容就不详细介绍了,看下面小编写的内容

input {
	tcp {
		mode => "server"
		host => "127.0.0.1"
		port => 4560
		codec => json_lines
	}
}
filter{
	mutate{
		split => ["message","|"]
	}
	if[message][1] == "business_log"{
		mutate{
			add_tag =>["business_log"]
		}
	}
	if[message][1]== "error_log"{
		mutate{
			add_tag => ["error_log"]
		}
	}
	if[message][2]=="ElasticSearch"{
		mutate{
			add_tag => ["ElasticSearch"]
		}
	}
	if[message][2]=="MYSQL"{
		mutate{
			add_tag => ["MySQL"]
		}
	}
	if[message][2]=="PgSQL"{
		mutate{
			add_tag => ["PgSQL"]
		}
	}
	if[message][2]=="ElasticSearchMySQL"{
		mutate{
			add_tag => ["ElasticSearchAndMySQL"]
		}
	}
	if[message][2]=="ElasticSearchPgSQL"{
		mutate{
			add_tag => ["ElasticSearchAndPgSQL"]
		}
	}
	if [level] == "INFO"{
		if[message][3]{
			mutate{
				add_field =>{
					"version" => "%{[message][3]}"
				}
			}
		}
		if[message][4]{
			mutate{
				add_field =>{
					"taskId" => "%{[message][4]}"
				}
			}
		}
		if[message][5]{
			mutate{
				add_field =>{
					"taskType" => "%{[message][5]}"
				}
			}
		}
		if[message][6]{
			mutate{
				add_field =>{
					"data" => "%{[message][6]}"
				}
			}
		}
		if[message][7]{
			mutate{
				add_field =>{
					"time" => "%{[message][7]}"
				}
			}
		}
		mutate{
			convert => {
				"version" => "string"
				"taskId" => "string"
				"taskType" => "string"
				"data" => "string"
				"time" => "string"
			}
		}
	}
}
output {
	if [level] == "INFO"{
		if "business_log" in [tags]{
			if "ElasticSearch" in [tags]{
				elasticsearch {
					action => "index"
					hosts => "localhost:9200"
					index => "business_log-%{+YYYY.MM.dd}"
				}
			}
			else if "MySQL" in [tags]{
				jdbc{
					driver_class => "com.mysql.cj.jdbc.Driver"
					connection_string => "jdbc:mysql://127.0.0.1:3306/student?user=root&password=root&serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=false&autoReconnect=true"
					statement => ["insert into business_log (version,taskId,taskType,data,time) VALUES (?,?,?,?,?)","version","taskId","taskType","data","time"]
				}
			}
		}
		else if "error_log" in [tags]{
			if "ElasticSearch" in [tags]{
				elasticsearch {
					action => "index"
					hosts => "localhost:9200"
					index => "business_error_log-%{+YYYY.MM.dd}"
				}
			}
		}
	} 
	else if [level] == "ERROR"{
		elasticsearch {
			action => "index"
			hosts => "localhost:9200"
			index => "sys_error_log-%{+YYYY.MM.dd}"
		}
	}
}

配置30天删除日志记录

需求;每天都记录日志,但是考虑到日志文件存储占用内容,所以将30天前的日志文件删除掉

通过以上的配置已经配置好每天都会创建新的日志文件

思考:

①使用Kibana配置删除策略,对日志单独配置处理

②配置创建日志同时配置日志的删除策略

http://127.0.0.1:5601 命令进入Kibana

安装elk,成长之旅,elk,elasticsearch,数据库

手动选择策略

若需要自定义策略,可以创建策略,如以下操作
安装elk,成长之旅,elk,elasticsearch,数据库

进入索引管理,添加策略
安装elk,成长之旅,elk,elasticsearch,数据库
安装elk,成长之旅,elk,elasticsearch,数据库

以上步骤后,实现了指定的索引选择对应是策略

配置自动创建策略

安装elk,成长之旅,elk,elasticsearch,数据库
安装elk,成长之旅,elk,elasticsearch,数据库
安装elk,成长之旅,elk,elasticsearch,数据库

配置内容如下

{
  "index": {
    "lifecycle": {
      "name": "30-days-default",
      "rollover_alias": ""
    },
    "routing": {
      "allocation": {
        "include": {
          "_tier_preference": "data_content"
        }
      }
    },
    "number_of_shards": "1",
    "auto_expand_replicas": "0-1",
    "number_of_replicas": "1"
  }
}

配置完点击"Next"

选择Dynamic templates,根据自定义动态添加字段

安装elk,成长之旅,elk,elasticsearch,数据库

然后点击"Next",逐个点击下一步,最后创建成功。。成功实现了以上的功能

若报错内容如下:

illegal_argument_exception: setting [index.lifecycle.rollover_alias] for index [sys_error_log-2023.05.16] is empty or not defined

更改 策略配置信息
安装elk,成长之旅,elk,elasticsearch,数据库
安装elk,成长之旅,elk,elasticsearch,数据库安装elk,成长之旅,elk,elasticsearch,数据库

问题解决文章来源地址https://www.toymoban.com/news/detail-718114.html

到了这里,关于ELK的安装部署与使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker部署ELK 8.8.2(2)-Kibana部署&连接Elasticsearch

    下载镜像 [root@kylin ~]# docker pull docker.elastic.co/kibana/kibana:8.8.2 创建容器,容器名称为kibana,映射端口5601,加入网络elastic [root@kylin ~]# docker run -itd --name kibana --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.8.2 查看创建的容器 [root@kylin ~]# docker ps | grep kibana 在elastic容器执行elastics

    2024年01月25日
    浏览(46)
  • ElasticSearch漫游 (1.安装ELK)

    前期准备: 请搭建好linux环境 推荐使用centos7系统 请关闭linux防火墙 请安装好docker 创建网络 我们需要部署kibana容器,因此需要让es和kibana互联,这里先创建一个网络。 加载es镜像 运行docker命令 部署单点es 命令解释: -e \\\"cluster.name=es-docker-cluster\\\" :设置集群名称 -e \\\"http.host=0.

    2024年02月09日
    浏览(46)
  • 使用Docker安装ELK(Elasticsearch+Logstash+Kibana)+filebeat____基于CentOS7.9

    目录 一、安装JDK 二、部署Elasticsearch 三、部署kibana 四、部署Logstash 五、部署filebeat 六、filebeat采集数据,logstash过滤,在kibana中显示 七、kibana增加索引 1、更新系统 2、安装Java 下面是安装OpenJDK的命令: 3、验证安装 1、查看是否安装docker 安装最新版的docker可能导致部分系统不

    2024年02月04日
    浏览(50)
  • Linux centOS 7部署ELK(elasticSearch、logstash、kibana)

    Linux centOS 7部署ELK(elasticSearch、logstash、kibana) 目录 1【yum模式安装】 1.1【安装ElasticSearch】 1.2【安装Kibana】 1.3【安装Logstash】 1.4【安装Filebeat】 2【压缩包方式安装elk】 原文链接: How To Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on Ubuntu 16.04 | DigitalOcean 十分钟搞定CentOS

    2024年02月07日
    浏览(50)
  • 【ELK企业级日志分析系统】安装与部署ELK详解

    ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash和kibana三个开源工具配合使用 , 完成更强大的,用户对日志的查询、排序、统计需求。 ElasticSearch ElasticSearch:是基于Lucene(一个 全文检索引擎的架构 )开发的分布式存储检索引擎,用来存储各类日志。 El

    2024年02月16日
    浏览(43)
  • centos7.6部署ELK集群(一)之elasticsearch7.7.0集群部署

    32.3. 部署es7.7.0 32.3.1. 下载es(各节点都做) wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.0-linux-x86_64.tar.gz 32.3.2. 解压至安装目录(各节点都做) tar -xvf elasticsearch-7.7.0-linux-x86_64.tar.gz -C /vmdata/ 32.3.3. 创建es用户并设置密码(各节点都做) ES 7.x 开始不再允许以任何方

    2023年04月17日
    浏览(45)
  • Elastic(ELK) Stack 架构师成长路径

    Elastic Stack(ELK Stack)是一个开源的日志分析平台,由 Elasticsearch、Logstash 和 Kibana 三个组件组成,主要用于数据搜索、分析和可视化。要成为一名 ELK Stack 架构师,需要遵循一定的成长路径,以便逐步掌握相关知识和技能。 基本了解:在这个阶段,您需要学习基本的ELK Stack概

    2023年04月21日
    浏览(49)
  • 安装部署ELK

    安装部署ELK,并收集nginx日志 需要三台CentOS7.9且内存大于等于≧3G的机器 关闭防火墙和SELinux,装好常用指令 1.设置主机名和hosts解析 ,并配置时间同步 2.部署jdk,三台机器都部署 1.安装Elasticsearch,三台机器都部署 2 配置Elasticsearch集群 在elk-node1里做

    2023年04月08日
    浏览(28)
  • ELK部署安装

    目录 一、环境准备 1.准备三台服务器(带图形化的linuxCentOS7,最小化缺少很多环境) 2.修改主机名 3.关闭防火墙 4.elk-node1、elk-node2 用系统自带的java 5.上传软件包到node1和node2  二、部署elasticsearch 1、node1、node2操作  2.node1 安装elasticsearch-head插件 3.安装npm  三、安装logstash 1、

    2024年02月13日
    浏览(32)
  • docker安装elk(Elasticsearch+logstash+kibana)

    1. 安装Docker 如果您还没有安装Docker,请先安装Docker。您可以按照官方文档进行安装:https://docs.docker.com/engine/installation/ 安装 docker-ce [root@k8s-master ~]# yum install docker-ce -y [root@k8s-master ~]# systemctl start docker systemctl enable docker.service   配置 docker 镜像加速器和驱动 [root@k8s-master ~]#vi

    2024年01月20日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包