elk在宝塔中的简单部署和使用

ELK是什么?了解elk

“ELK” 是 Elasticsearch、Logstash 和 Kibana 三个开源软件的首字母缩写。这三个软件一起常被称为 “ELK Stack” 或 “Elastic Stack”。它们主要用于日志管理和分析,提供了强大的数据搜索、分析和可视化功能。

  1. Elasticsearch:一个分布式搜索和分析引擎,能够实时处理大数据量,提供强大的全文搜索功能。
  2. Logstash:一个数据收集引擎,可以从各种来源收集数据,进行过滤和转换,然后将数据发送到存储库(如 Elasticsearch)。
  3. Kibana:一个数据可视化平台,允许用户通过图表和图形查看和分析存储在 Elasticsearch 中的数据。

这些工具组合在一起,为用户提供了一个强大的平台,用于实时搜索、分析和可视化日志数据。

每个工具都是单独存在的而不会互相影响,在实际使用中,需要将三者分别运行,并打通整个流程。

名词介绍:

elastic中的索引:是一个逻辑命名空间,包含一组相关的文档,类似于传统关系型数据库中的数据库。

es中的文档:是 Elasticsearch 中存储的基本数据单元,表示一条记录或一项数据,类似于数据库中的一行。

字段(Field):文档由若干字段组成,每个字段有一个字段名和字段值,字段值可以是多种类型,如字符串、数字、日期等。

详细来说:

整个日志的收集流程为:先通过logstash(或其他工具代替收集数据,例如轻量级的filebeat,可以适用于大多数情况,也可根据实际情况可以选择不同的收集工具), 收集多种不同格式的数据,并转换成es可以分辨的格式(如json)存入es中指定的索引中,然后通过kibana就可以查看es中收到的数据。

具体实现(我的配置是linux服务器宝塔操作,项目运行时日志是存放在txt文件中,搭建elk(没有用l而是filebeat)在同一台服务器上对项目日志进行查看):

首先进行软件的安装:

docker pull elasticsearch:7.12.0
docker pull kibana:7.12.0
docker pull logstash:7.12.0

一定要注意,软件版本要统一;(也可以使用wget命令下载我用的是fliebeat)

然后使用docker images查看镜像是否拉取成功;

image-20240708110742044

第三步:创建一个容器网络:(使在不同容器中的应用可以通过容器网络互相通信)

docker network create elk_network

前置工作结束:

elastic

开始启动软件:

启动es

docker run -itd --name elasticsearch --net elk_network -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"  -e ES_JAVA_OPTS="-Xms256m -Xmx512m" elasticsearch:7.12.0

复制容器镜像文件(用于文件映射)

docker cp elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml /home/elasticsearch/config/elasticsearch.yml
docker cp elasticsearch:/usr/share/elasticsearch/plugins /home/elasticsearch/plugins
docker cp elasticsearch:/usr/share/elasticsearch/data /home/elasticsearch/data
docker cp elasticsearch:/usr/share/elasticsearch/logs /home/elasticsearch/logs

不知道docker中文件映射是什么意思的可以去了解一下,不使用而直接去指定镜像中修改配置文件也是可以的(演示中并没有使用)

若使用的是宝塔,可以直接在docker中进入镜像目录对原文件进行修改:

image-20240708112529121

修改elasticsearch.yml的配置:文件中加上:

xpack.security.enabled: true
xpack.security.audit.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

重启es

image-20240708112434759

然后在elasticsearch/bin目录下打开终端,运行:

./elasticsearch-setup-passwords  interactive

会进入初始化密码:请记住自己设置的密码

image-20240708143153499

kibana

首先启动kibana

docker run -d --name kibana --net elk_network -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://[elasticsearch启动ip地址]:9200" kibana:7.12.0

ip地址填写自己服务器的地址。

docker cp kibana:/usr/share/kibana/config/kibana.yml /home/kibana/config/kibana.yml

复制镜像用于文件映射或直接进入配置文件中修改

修改配置文件信息:

elasticsearch.username: "elastic"
elasticsearch.password: [es密码]

重启kibana

image-20240708140622897

下载filebeat

直接使用wget下载:

# 进入文件夹
cd /opt/elk/
# 下载
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.8.1-linux-x86_64.tar.gz
# 解压文件
tar -zxvf filebeat-8.8.1-linux-x86_64.tar.gz 
# 重命名
mv filebeat-8.8.1-linux-x86_64  filebeat

进入到filebeat目录下,创建对应的配置文件

filebeat配置文件默认在etc/filebeat文件夹下:

image-20240708141442409

进入:filebeat.yml修改配置文件:

我的这个项目是将日志存放在项目下文件夹中,所以需要指定文件位置为:

filebeat.inputs:
- type: filestream
  id: my-filestream-id
  enabled: true
  paths:
    - /www/wwwroot/campus_forum/logs/*.log
  index: "campus"

配置filebeat模版的路径和重新加载设置:

filebeat.inputs:
- type: filestream
  id: my-filestream-id
  enabled: true
  paths:
    - /www/wwwroot/campus_forum/logs/*.log
  index: "campus"

配置输出到elastic的设置

output.elasticsearch:
  hosts: ["localhost:9200"]
  username: "elastic"
  password: "123456"

配置处理器:(不能多打空格)

processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~
  - decode_json_fields:
      fields: ["message"]
      target: ""
      overwrite_keys: true

配置完成后保存退出。

启动filebeat:

sudo systemctl start filebeat

检查filebeat状态:

sudo systemctl status filebeat

image-20240708142048335

确保 Filebeat 在系统重启后自动启动:

sudo systemctl enable filebeat

万无一失后启动项目,启动elk的各个软件

查看ip+9200端口和ip+5601端口信息

image-20240708142231511

image-20240708142241735

(默认为非汉化,需要修改配置文件为汉化)

进入后点击右侧最下方进入创建索引并点击索引模式对索引进行修改(默认的会加入很多用不到的字段,需要对其进行隐藏)

image-20240708143225196

点击字段筛选,使用通配符屏蔽

image-20240708143219729

完成后点击左侧discover并选择相应的索引,就可以看到文件中的日志了,

image-20240708143207296

查看和查询都非常方便。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 19:56:01       50 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 19:56:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 19:56:01       43 阅读
  4. Python语言-面向对象

    2024-07-09 19:56:01       54 阅读

热门阅读

  1. PyTorch中matmul函数的矩阵相乘原则和注意事项

    2024-07-09 19:56:01       30 阅读
  2. 使用 Conda 管理 Python 环境的详细指南

    2024-07-09 19:56:01       22 阅读
  3. 从零开始!Jupyter Notebook的安装教程

    2024-07-09 19:56:01       22 阅读
  4. UI 自动化分布式测试 -- Docker Selenium Grid

    2024-07-09 19:56:01       17 阅读
  5. Spring Cloud Gateway报sun.misc.Unsafe.park(Native Method)

    2024-07-09 19:56:01       30 阅读
  6. Spring Cloud Gateway如何匹配某路径并进行路由转发

    2024-07-09 19:56:01       24 阅读