简易ELK搭建

ELK搭建

  • [1. elasticsearch](#1. elasticsearch)
    • [1.1 下载](#1.1 下载)
    • [1.2 ES配置](#1.2 ES配置)
    • [1.3 启动ES](#1.3 启动ES)
    • [1.4 开启权限认证](#1.4 开启权限认证)
    • [1.5 IK分词器配置(非必须)](#1.5 IK分词器配置(非必须))
  • [2. kibana](#2. kibana)
    • [2.1 下载](#2.1 下载)
    • [2.2 配置](#2.2 配置)
    • [2.3 启动kibana](#2.3 启动kibana)
  • [3. logstash](#3. logstash)
    • [3.1 下载](#3.1 下载)
    • [3.2 配置](#3.2 配置)
    • [3.3 启动logstash](#3.3 启动logstash)
  • [4. springboot推送数据](#4. springboot推送数据)

ELK包括elasticsearch、logstash、kibana,是用于数据抽取(Logstash)、搜索分析(Elasticsearch)、数据展现(Kibana)的一整套解决方案,本文搭建的为7.8版本,均为单节点部署(JDK要求1.8.0_73以上)

  • 本文为ELK简易版本部署

1. elasticsearch

Elasticsearch 是使用java开发,基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

1.1 下载

  • 地址: https://www.elastic.co/cn/downloads/past-releases#elasticsearch
    ES目录:
  • elasticsearch-7.8.0
    • bin 脚本目录,包括:启动、停止等可执行脚本
    • config 配置文件目录
    • data 索引目录,存放索引文件的地方
    • logs 日志目录
    • modules 模块目录,包括了es的功能模块
    • plugins 插件目录,es支持插件机制

1.2 ES配置

  • config 下的elasticsearch.yml末尾加上以下配置
yml 复制代码
#设置访问端口
network.host: 0.0.0.0
#设置对外访问端口
http.port: 9200
#开启认证
xpack.security.enabled: true
xpack.security.audit.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

1.3 启动ES

Linux下不能直接使用root账户启动,需创建es账号,并把es所在目录权限开放给es账户

  • 创建用户用户组
sh 复制代码
groupadd es
useradd -r -g es es
  • 开放目录权限
sh 复制代码
chown -R [elk所在目录]
  • 切换至es账户,在bin目录下后台启动es
sh 复制代码
./elasticsearch -d 

通过浏览器能够访问到如下页面即表示启动成功

1.4 开启权限认证

  • es账户在bin目录下运行
sh 复制代码
./elasticsearch-setup-passwords interactive

根据提示后输入Y,随后根据提示设置密码,设置完之后重启es即可

1.5 IK分词器配置(非必须)

2. kibana

kibana是es数据的前端展现,数据分析时,可以方便地看到数据。作为开发人员,可以方便访问es。

2.1 下载

2.2 配置

  • config 下的kibana.yml末尾加上以下配置
yml 复制代码
# 默认端口
server.port: 5601
# ES 服务器的地址
elasticsearch.hosts: ["http://127.0.0.1:9200"]
# 索引名
kibana.index: ".kibana"
# 支持中文
i18n.locale: "zh-CN"
# es账户
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
# 显示登陆页面
xpack.monitoring.ui.container.elasticsearch.enabled: true

2.3 启动kibana

同es一样,Linux下不能直接使用root账户启动,需创非root账号,并把kibana所在目录权限开放给新增账户

- 切换至非root账户,在`bin`目录下后台启动kibana
```sh
./kibana

通过浏览器能够访问到如下页面即表示启动成功

3. logstash

logstash是一个数据抽取工具,将数据从一个地方转移到另一个地方。如hadoop生态圈的sqoop等。

3.1 下载

下载地址:https://www.elastic.co/cn/downloads/logstash

目录结构类似es

3.2 配置

  • config 下的kibana.yml末尾加上以下配置
yml 复制代码
http.host: "0.0.0.0"
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: logstash_system
xpack.monitoring.elasticsearch.password: "123456"
xpack.monitoring.elasticsearch.hosts: ["http://127.0.0.1:9200"]
  • 修改config 下的logstash-sample.conf为以下配置
sh 复制代码
input {
  tcp {
    port => 8899
  }
}

output {
	elasticsearch {
		hosts => ["http://127.0.0.1:9200"]
		index => "saas_log"
		user => "elastic"
		password => "123456"
	}
}

3.3 启动logstash

同es一样,Linux下不能直接使用root账户启动,需创非root账号,并把logstash所在目录权限开放给新增账户

  • 切换至非root账户,在bin目录下后台启动logstash
sh 复制代码
./logstash -f ../config/logstash-sample.conf

4. springboot推送数据

  • 基于logback,除日志相关依赖外,额外加入logstash依赖
pom 复制代码
<dependency>
	<groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.11</version>
</dependency>
  • 设置logback配置
xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false">
	<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
	<property name="log.path" value="logs/${spring.application.name}"/>
	<property name="logstash.destination" value="${spring.logstash.destination}"/>
	<!-- 彩色日志格式 -->
	<property name="CONSOLE_LOG_PATTERN"
			  value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
	<!-- 彩色日志依赖的渲染类 -->
	<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
	<conversionRule conversionWord="wex"
					converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
	<conversionRule conversionWord="wEx"
					converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
	<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
		<!--可以访问的Logstash日志收集端口-->
		<destination>127.0.0.1:8899</destination>
		<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
			<providers>
				<timestamp>
					<timeZone>UTC</timeZone>
				</timestamp>
<!--				<pattern>-->
<!--					<pattern>-->
<!--						{-->
<!--						"severity": "%level",-->
<!--						"service": "${springAppName:-}",-->
<!--						"trace": "%X{X-B3-TraceId:-}",-->
<!--						"span": "%X{X-B3-SpanId:-}",-->
<!--						"exportable": "%X{X-Span-Export:-}",-->
<!--						"pid": "${PID:-}",-->
<!--						"thread": "%thread",-->
<!--						"class": "%logger{40}",-->
<!--						"message": "%message"-->
<!--						}-->
<!--					</pattern>-->
<!--				</pattern>-->
			</providers>
		</encoder>
	</appender>

	<!-- Level: FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 -->
	<root level="info">
		<appender-ref ref="LOGSTASH"/>
	</root>
</configuration>
相关推荐
ygqygq22 天前
ElK 8 收集 Nginx 日志
nginx·elk
纪佰伦5 天前
ELK在Linux服务器下使用docker快速部署(超详细)
linux·服务器·elk
写....写个大西瓜5 天前
【Docker部署ELK】(7.15)
elk·docker
丢爸7 天前
Linux学习-ELK(一)
linux·学习·elk
王一横不要停止努力吖11 天前
ELK学习笔记(三)——使用Filebeat8.15.0收集日志
笔记·学习·elk
王一横不要停止努力吖11 天前
ELK学习笔记(二)——使用K8S部署Kibana8.15.0
笔记·学习·elk·k8s
数云界12 天前
使用 ELK Stack 进行云原生日志记录和监控:AWS 中的开发运营方法
elk·云原生·aws
智汇探长12 天前
ELK日志服务收集SpringBoot日志案例
spring boot·elk·jenkins
echola_mendes13 天前
ELK在Linux上部署教程
运维·elk·jenkins