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)在同一台服务器上对项目日志进行查看):

首先进行软件的安装:

shell 复制代码
docker pull elasticsearch:7.12.0
docker pull kibana:7.12.0
docker pull logstash:7.12.0

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

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

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

shell 复制代码
docker network create elk_network

前置工作结束:

elastic

开始启动软件:

启动es

shell 复制代码
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

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

shell 复制代码
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中进入镜像目录对原文件进行修改:

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

yml 复制代码
xpack.security.enabled: true
xpack.security.audit.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

重启es

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

shell 复制代码
./elasticsearch-setup-passwords  interactive

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

kibana

首先启动kibana

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

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

shell 复制代码
docker cp kibana:/usr/share/kibana/config/kibana.yml /home/kibana/config/kibana.yml

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

修改配置文件信息:

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

重启kibana

下载filebeat

直接使用wget下载:

shell 复制代码
# 进入文件夹
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文件夹下:

进入: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:

sh 复制代码
sudo systemctl start filebeat

检查filebeat状态:

sh 复制代码
sudo systemctl status filebeat

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

sh 复制代码
sudo systemctl enable filebeat

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

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

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

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

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

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

查看和查询都非常方便。

相关推荐
运维&陈同学6 小时前
【Kibana01】企业级日志分析系统ELK之Kibana的安装与介绍
运维·后端·elk·elasticsearch·云原生·自动化·kibana·日志收集
运维&陈同学2 天前
【Beats01】企业级日志分析系统ELK之Metricbeat与Heartbeat 监控
运维·elk·elasticsearch·云原生·kibana·heartbeat·metricbeat
幽弥千月5 天前
【ELK】ES单节点升级为集群并开启https【亲测可用】
elk·elasticsearch·https
IT猿手5 天前
基于PWLCM混沌映射的麋鹿群优化算法(Elk herd optimizer,EHO)的多无人机协同路径规划,MATLAB代码
算法·elk·机器学习·matlab·无人机·聚类·强化学习
流穿6 天前
ELK系列-(六)Redis也能作为消息队列?(下)
数据库·redis·ubuntu·elk·docker·容器
流穿6 天前
ELK系列-(五)指标收集-MetricBeat(下)
linux·运维·ubuntu·elk·docker·容器
流穿7 天前
ELK系列-(五)指标收集-MetricBeat(上)
ubuntu·elk·elasticsearch·docker
高hongyuan8 天前
Linux环境下 搭建ELk项目 -单机版练习
大数据·运维·服务器·elk·elasticsearch·搜索引擎
运维&陈同学9 天前
【Elasticsearch04】企业级日志分析系统ELK之Elasticsearch 插件
大数据·运维·后端·elk·elasticsearch·搜索引擎·全文检索·哈希算法
幽弥千月9 天前
【ELK】Filebeat采集Docker容器日志
elk·docker·容器