当前位置: 首页 > news >正文

ELK服务搭建-0-1搭建记录

ELK搭建

需要准备一台linux服务器(最好是CentOS7),内存至少4G以上(三个组件都比较占用内存)

演示基于ElasticSearch采用的是8.5.0版本

1、 Docker安装Elasticsearch

创建一个网络

因为我们还需要部署kibana容器、logstash容器,需要让这些容器互联。

docker network create elk
下载镜像
docker pull elasticsearch:8.5.0
在宿主机建立文件夹
mkdir -p /opt/elk/elasticsearch/{config,plugins,data}
制作配置文件
cat <<EOF> /opt/elk/elasticsearch/config/elasticsearch.yml
xpack.security.enabled: false
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: false  # 不配报错
xpack.security.enrollment.enabled: true
http.host: 0.0.0.0
EOF
修改权限
chmod -R 777 /opt/elk/elasticsearch
创建容器
docker run -d \--name es850 \-e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" \-e "discovery.type=single-node" \-v /opt/elk/elasticsearch/data:/usr/share/elasticsearch/data \-v /opt/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins \-v /opt/elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \--privileged \--network elk \-p 9200:9200 \-p 9300:9300 \
elasticsearch:8.5.0
最终效果

在浏览器中输入:http://39.106.67.195:9200/ (按照自己的ip访问)即可看到elasticsearch的响应结果:

image-20231216000413106

2 、Docker安装Logstash

拉取镜像
docker pull logstash:8.5.0
创建文件
mkdir -p /opt/elk/logstash/{pipeline,config}
进入logstash文件
cd /opt/elk/logstash/pipeline
vim logstash.conf
input {tcp {mode => "server"host => "0.0.0.0"port => 5044codec => json_lines}
}
filter{}
output {elasticsearch {hosts => "es850:9200"index => "tingshu-%{+YYYY.MM.dd}"}
}
进入config文件
cd /opt/elk/logstash/config
vim logstash.yml
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://es850:9200" ] #设置跟es的服务地址
创建容器
docker run -d \
-p 5044:5044 \
-p 9600:9600 \
--name logstash850 \
--network=elk \
-v /opt/elk/logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
-v /opt/elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \
logstash:8.5.0

3、Docker安装Kibana

拉取镜像
docker pull kibana:8.5.0
创建目录
mkdir -p /opt/elk/kibana/{config,data}
进入config文件
cd /opt/elk/kibana/config
vim kibana.yml
server.host: "0.0.0.0"  # 不配报错
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://es850:9200" ]
i18n.locale: "zh-CN"

创建容器

docker run -d \
--name kibana850 \
--network=elk \
-v /opt/elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-p 5601:5601  \
kibana:8.5.0
  • --network elk :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
  • -e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
  • -p 5601:5601:端口映射配置

此时,在浏览器输入地址访问:http://8.140.252.86:5601,即可看到结果

image-20231116220614618

image-20231116212139062

4、 SpringBoot项目对接Logstash

在项目的pom文件中添加新的依赖
<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>6.6</version>
</dependency>

目前,我们采用的logback来采集日志进行上报给logstash,logstash对接es,把数据存入到es中,最终通过kibana展示。

在application.yml文件中设置logback配置的目录
logging:config: classpath:logback-spring.xml
在resources目录中新增一个文件logback-spring.xml(注意命名,不要修改)
<?xml version="1.0" encoding="UTF-8"?>
<configuration><include resource="org/springframework/boot/logging/logback/base.xml" /><springProperty scope="context" name="springAppName" source="spring.application.name"/><springProperty scope="context" name="serverPort" source="server.port"/><appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--logstash的服务地址和端口,可以实际情况设置--><destination>8.140.252.86:5044</destination><!-- 日志输出编码 --><encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"><providers><timestamp><timeZone>UTC</timeZone></timestamp><pattern><pattern>{<!--应用名称 -->"app": "${springAppName}_${serverPort}",<!--打印时间 -->"timestamp": "%d{yyyy-MM-dd HH:mm:ss.SSS}",<!--线程名称 -->"thread": "%thread",<!--日志级别 -->"level": "%level",<!--日志名称 -->"logger_name": "%logger",<!--日志信息 -->"message": "%msg",<!--日志堆栈 -->"stack_trace": "%exception"}</pattern></pattern></providers></encoder></appender><!--定义日志文件的存储地址,使用绝对路径--><property name="LOG_HOME" value="/home/logs"/><!-- 按照每天生成日志文件 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><fileNamePattern>${LOG_HOME}/${springAppName}-${serverPort}-%d{yyyy-MM-dd}.log</fileNamePattern></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="LOGSTASH" /><appender-ref ref="FILE" /><appender-ref ref="CONSOLE" /></root>
</configuration>

5、 ELK基本使用

5.1 查看索引文件

对接项目之后,可以启动项目,产生一些日志数据

然后打开kibana,找到索引管理

image-20231216224729221

可以直接查看已创建的日志索引

image-20231216224931215

5.2 添加索引模式

如果想用kibana方便的查看日志的数据,可以添加索引模式,如下图

image-20231216225030686

点击创建索引模式,输入想要管理的索引名称,保存

image-20231216225130065

5.3 检索日志

打开Discover

image-20231216225223719

检索日志,选择不同的索引,可以按照不同的字段检索,或者在输入框直接输入内容,也是可以的

工作定位线上问题:

image-20231116224253274

image-20231116224229017

6、 设置用户名密码

一、先操作ES容器

修改配置文件
vim /opt/elk/elasticsearch/config/elasticsearch.yml

image-20231221231439766

重启容器

docker restart  123
进入容器
docker exec -it 123  /bin/bash
执行创建密码的命令

为所有用户输入密码(可以为同一个),完事后回到宿主机 ,重启容器elasticsearch

./bin/elasticsearch-setup-passwords interactive

image-20231216234125531

image-20231222001530410

重新启动es镜像
docker restart  123

二、再操作Kibana

修改宿主机配置文件

vim /opt/elk/kibana/config/kibana.yml

追加下面内容

elasticsearch.username: "kibana_system"
elasticsearch.password: "111111"
重启kibana
docker restart 34c

三、再操作logstash

修改宿主机配置文件

vim /opt/elk/logstash/pipeline/logstash.conf

追加下面内容

user   => "elastic"
password => "111111" 

image-20231216234524777

vim /opt/elk/logstash/config/logstash.yml

追加下面内容

image-20231222003751511

xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: "elastic"
xpack.monitoring.elasticsearch.password: "111111"
重启logstash
docker restart 993

相关文章:

  • 茶叶价格网站建设宁波seo公司哪家好
  • wordpress仅显示标题百度ocpc如何优化
  • 深圳最好的营销网站建设公司怎么在百度上做网站
  • 东莞信科做网站2023b站免费推广入口
  • 门户网站需要哪些人网络营销是什么?
  • 国外常用视频网站tenor怎么设置宁德市教育局官网
  • [ACTF新生赛2020]easyre
  • 分词算法BPE详解和CLIP的应用
  • Springboot怎么解决循环依赖
  • 针对vue项目的webpack优化攻略
  • 字节跳动2025年校招笔试手撕真题教程(二)
  • 神经网络学习-Day35
  • C语言指针进阶:通过地址,直接修改变量的值
  • 基于Python的全卷积网络(FCN)实现路径损耗预测
  • 为什么hash函数能减少哈希冲突
  • 内存管理 : 03多级页表和快表
  • 简单血条于小怪攻击模板
  • 开源项目跨平台桌宠 BongoCat,为桌面增添乐趣!
  • Java文件操作:从“Hello World”到“Hello File”
  • 打卡第28天:装饰器
  • 数据结构第2章绪论 (竟成)
  • CVE-2017-5645源码分析与漏洞复现(反序列化)
  • P1104 生日
  • go1.24 通过汇编深入学习map引入swiss table后的源码
  • MySQL | 比特BIT类型的使用指南
  • 深入剖析 RocketMQ:消息保障、事务处理与负载均衡策略