ELK是什么:

ELK 是一个流行的日志分析和监控套件,包含三个主要组件:

  1. Elasticsearch:一个开源的搜索和分析引擎,用于存储和搜索大量的数据。它可以快速地对海量数据进行搜索和分析操作。
  2. Logstash:一个开源的数据处理管道,能够从不同的数据源收集、处理和转发数据。它支持各种输入源(如日志文件、网络数据流等),可以对数据进行过滤和转换,然后将其发送到 Elasticsearch 或其他存储系统。
  3. Kibana:一个开源的数据可视化平台,用于在 Elasticsearch 中创建和查看数据的图表和仪表盘。它提供了一个用户友好的界面,帮助用户探索和可视化存储在 Elasticsearch 中的数据。

ELK 套件通常用于集中化日志管理、数据分析和监控。通过将日志数据发送到 Logstash 进行处理,再存储到 Elasticsearch 中,并使用 Kibana 可视化数据,用户可以实时监控系统状态,分析日志数据中的趋势和异常。

安装说明:

1、Elasticsearch、Logstash、Kibana、Filebeat安装的版本号必须全部一致,不然会出现kibana无法显示web页面。

2、部署组件的服务器时间必须一致,否则会出现日志无法显示。

安装部署

首先,确保你的系统上已安装 Docker 和 Docker Compose。如果尚未安装,可以使用以下命令进行安装:

# 安装 Docker
sudo dnf install -y docker
sudo systemctl start docker
sudo systemctl enable docker

# 安装 Docker Compose
sudo dnf install -y docker-compose

1.安装elasticsearch

官方网站:https://www.elastic.co/cn

Elasticsearch 介绍:

Elasticsearch 是一个开源的分布式搜索和分析引擎,广泛用于处理和分析大量的数据。它的核心功能包括全文搜索、结构化搜索和分析。

Elasticsearch的应用场景:

  1. 日志和事件数据分析Elasticsearch 被广泛用于日志管理和事件数据分析,特别是与 Logstash 和 Kibana 结合使用时,形成了强大的 ELK Stack(Elasticsearch, Logstash, Kibana)。
  2. 网站搜索功能:许多网站和应用程序使用 Elasticsearch 为用户提供高效的搜索体验。
  3. 数据仓库和分析:Elasticsearch 可以作为数据仓库的一部分,用于存储和分析大规模的数据集,支持实时的数据探索和报告。
  4. 安全信息和事件管理(SIEM):它被用于安全信息和事件管理,帮助组织检测和响应安全事件

elasticsearch的安装方式:

  1. 二进制包(elasticsearch-8.14.2-linux-x86_64.tar.gz)安装:依赖于java,所以首先安装java环境-jdk、
  2. docker方式安装或者docker-compose.yml(elasticsearch:8.14.2)

这里使用docker方式安装

Linux下安装部署Docker二进制版本

1.1创建用于elk的网络

[root@C9146 elk]# docker network create elk
2469c547044d9fb40041ee49e1aa15bc60053261f7984171b341b984bba91ce0

1.2 创建Elasticsearch容器

docker run \
--restart=always \
-d \
--name=elasticsearch \
-v es-data:/usr/share/elasticsearch/data \
-e ES_JAVA_OPTS="-Xms256m -Xmx512m" \
-e discovery.type="single-node" \
-e "xpack.security.enabled=false" \
--net elk \
-p 9200:9200 \
-p 9300:9300 \
10.220.180.145:8081/elk/elasticsearch:8.14.2

1.2.1 命令介绍:

  • docker run:运行一个新的容器实例。
  • –restart=always:设置容器在 Docker 启动时自动重启,以及容器退出时自动重启。
  • -d:在后台运行容器。
  • –name=elasticsearch:指定容器的名称为 elasticsearch。
  • -v es-data:/usr/share/elasticsearch/data:将宿主机的 es-data 卷挂载到容器内的 /usr/share/elasticsearch/data 目录,用于持久化存储 Elasticsearch 数据。
  • -e ES_JAVA_OPTS=”-Xms256m -Xmx512m”:设置 JVM 内存选项,-Xms 和 -Xmx 分别指定初始和最大堆内存大小。
  • -e discovery.type=”single-node”:将 Elasticsearch 配置为单节点模式,这适用于开发和测试环境。
  • -e “xpack.security.enabled=false”:禁用 X-Pack 安全功能,这样可以在没有认证的情况下访问 Elasticsearch。注意,禁用安全功能可能不适合生产环境。
  • –net elk:将容器连接到名为 elk 的 Docker 网络,确保容器能够与其他在同一网络中的服务(如 Logstash 和 Kibana)通信。
  • -p 9200:9200:将宿主机的 9200 端口映射到容器的 9200 端口,用于 HTTP 请求。
  • -p 9300:9300:将宿主机的 9300 端口映射到容器的 9300 端口,用于集群内部的节点间通信。
  • 10.220.180.145:8081/elk/elasticsearch:8.14.2:指定 Elasticsearch 镜像的地址和标签。(特别说明:这个地址是我自己部署的harbor仓库的地址,镜像是先下载然后上传到harbor仓库的)

1.3 查看运行的容器

docker ps

1.4 测试elasticsearch

curl http://127.0.0.1:9200/_cat/health
curl http://localhost:9200/_cat/health

2. 安装kibana

2.1创建kibana容器

docker run \
--restart=always \
-d \
--name=kibana \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
-e I18N_LOCALE=zh-CN \
--net elk \
-p 5601:5601 \
10.220.180.145:8081/elk/kibana:8.14.2

命令介绍:

  • –restart=always:设置容器在 Docker 启动时自动重启,以及容器退出时自动重启。
  • -d:在后台运行容器。
  • –name=kibana:指定容器的名称为 kibana。
  • -e ELASTICSEARCH_HOSTS=http://elasticsearch:9200:设置 Kibana 连接的 Elasticsearch 实例的地址。
  • -e I18N_LOCALE=zh-CN:设置 Kibana 的国际化语言环境为中文。
  • –net elk:将容器连接到名为 elk 的 Docker 网络。
  • -p 5601:5601:将宿主机的 5601 端口映射到容器的 5601 端口,用于 Kibana 的 Web 界面访问。
  • 10.220.180.145:8081/elk/kibana:8.14.2:指定 Kibana 镜像的地址和标签。

2.2 查看创建的容器

docker ps

2.3 前端 ip:5601 访问测试

3.安装Filebeat(部署在被采集的日志服务器上)

下载地址:https://www.elastic.co/cn/downloads/past-releases

3.1 解压部署

rpm -ivh filebeat-8.14.2-x86_64.rpm
systemctl enable --now filebeat.service
systemctl status filebeat.service

3.2 修改filebeat配置文件 /etc/filebeat/filebeat.yml ,使用filebeat采集日志

 vim /etc/filebeat/filebeat.yml

 15 filebeat.inputs:
 16 
 17 # Each - is an input. Most options can be set at the input level, so
 18 # you can use different inputs for various configurations.
 19 # Below are the input-specific configurations.
 20 
 21 # filestream is an input for collecting log messages from files.
 22 - type: log
 23 
 24   # Unique ID among all inputs, an ID is required.
 25   id: my-filestream-id
 26 
 27   # Change to true to enable this input configuration.
 28   enabled: true
 29 
 30   # Paths that should be crawled and fetched. Glob based paths.
 31   paths:
 32     - /var/log/*.log
 33     - /var/log/messages
 34   setup.ilm.enabled: false
 35   setup.template.name: "syslog"
 36   setup.template.pattern: "syslog-*"
 37   output.elasticsearch:
 38   hosts: ["http://10.220.180.146:9200"]
 39   index: "syslog-%{+yyyy.MM.dd}"
 40     #- c:\programdata\elasticsearch\logs\*

3.3 检测配置文件是否正确,重启服务使之生效

filebeat test config    #检查配置文件是否正确
systemctl restart filebeat     #重启服务

4. 前端配置查看数据

4.1登陆前端,点击Stack Management

4.2 点击数据视图,4.1.2 点击数据视图,

4.3 再点击Discover,就可以看见数据了

 


云野 » Docker安装部署ELK Stack

发表回复