# local-elk **Repository Path**: dev-linhu/local-elk ## Basic Information - **Project Name**: local-elk - **Description**: 提供了一个完整的 ELK Stack(Elasticsearch, Logstash, Kibana)环境,适用于日志收集、存储、搜索和可视化。通过 Docker Compose 构建和启动该栈,配置包括 Elasticsearch、Logstash 和 Kibana 服务。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-06 - **Last Updated**: 2024-11-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: Docker, ELK ## README # ELK Stack - Elasticsearch, Logstash, Kibana ## 简介 这个项目提供了一个完整的 ELK Stack(Elasticsearch, Logstash, Kibana)环境,适用于日志收集、存储、搜索和可视化。通过 Docker Compose 构建和启动该栈,配置包括 Elasticsearch、Logstash 和 Kibana 服务。 ## 环境要求 * Docker >= 20.10 * Docker Compose >= 1.27.0 * 操作系统:Linux、macOS 或 Windows ## 配置环境变量 在开始之前,确保设置以下环境变量: 1. `.env` 文件(或在终端中设置): * `ELASTICSEARCH_VERSION`: 设置 Elasticsearch 的版本(例如 `7.10.0`) * `KIBANA_VERSION`: 设置 Kibana 的版本(例如 `7.10.0`) * `LOGSTASH_VERSION`: 设置 Logstash 的版本(例如 `7.10.0`) * `DATA_DIR`: 设置数据存储目录路径 * `ELASTICSEARCH_HOST_PORT_C`: 设置 Elasticsearch HTTP 端口(例如 `9200`) * `ELASTICSEARCH_HOST_PORT_S`: 设置 Elasticsearch 传输端口(例如 `9300`) * `KIBANA_HOST`: 设置 Kibana 访问端口(例如 `5601`) * `LOGSTASH_HOST_PORT_C`: 设置 Logstash HTTP 端口(例如 `9600`) * `LOGSTASH_HOST_PORT_S`: 设置 Logstash Beats 端口(例如 `5044`) * `TZ`: 设置时区(例如 `Asia/Shanghai`) * `ELASTICSEARCH_CONF_FILE`: 设置 Elasticsearch 配置文件路径(例如 `./config/elasticsearch.yml`) * `LOGSTASH`: 设置 Logstash 配置目录路径(例如 `./config/logstash`) ## 启动 ELK Stack 1. 确保已安装 Docker 和 Docker Compose。 2. 克隆或下载此项目,并进入项目目录。 3. 配置环境变量(如 `.env` 文件或直接在终端设置)。 4. 启动服务: ```shell sudo docker-compose up -d ``` 这将启动 Elasticsearch、Kibana 和 Logstash 服务。`-d` 参数将容器在后台启动。 ## 服务概述 ### 1. **Elasticsearch** * **端口**: * `9200`: 用于 HTTP 请求(如搜索和查询) * `9300`: 用于节点间通信(传输协议) * **配置文件**: * `service/elasticsearch/elasticsearch.yml`: Elasticsearch 配置文件。 * `service/elasticsearch/data.esdata`: 数据存储文件夹。 * **用户配置**: * 启动容器后,执行以下命令 `./bin/elasticsearch-setup-passwords interactive`来重置 ES 用户名和密码 后重启容器 * 密码若设置为 ``123456789`` 则无需修改kibana配置 * ```shell ./bin/elasticsearch-setup-passwords interactive * 内置用户包括: * `elastic`: 超级用户。 * `kibana_system`: 仅可用于 Kibana 与 Elasticsearch 的通信,不能用于 Kibana 登录。 * `logstash_system`: 用于 Logstash 存储监控信息。 ``` ### 2. **Logstash** * **端口**: * `9600`: Logstash 管理 API。 * `5044`: Beats 协议监听端口,通常用于 Filebeat 或其他数据源与 Logstash 之间的数据传输。 * **配置文件**: * `service/logstash/config/logstash.yml`: Logstash 配置文件。 * `service/logstash/config/pipelines.yml`: 管道配置文件。 * `service/logstash/pipeline/*.conf`: 每个管道的配置文件。 * `service/logstash/pipeline/mysql.conf`: 配置将 MySQL 数据推送到 Elasticsearch。 * `service/logstash/pipeline/tmp_file.conf`: 配置读取日志文件。 * **启动配置**: * 更改以下文件: * `logstash.yml`: 设置 Logstash 配置。 * `logstash.conf`: 配置数据处理管道。 * `mysql.conf`: 配置从 MySQL 查询数据并推送到 Elasticsearch。 * `tmp_file.conf`: 配置从日志文件读取数据。 复制必要的配置文件到 `pipeline` 文件夹中,并启动容器。 ### 3. **Kibana** * **端口**: * `5601`: 用于访问 Kibana UI。 * **配置文件**: * `service/kibana/config/kibana.yml`: Kibana 配置文件,连接 Elasticsearch。 ## 网络配置 * **Docker 网络**: 使用自定义网络 `rd_inner`,并为每个服务分配固定的 IP 地址: * Elasticsearch: `172.20.0.11` * Kibana: `172.20.0.12` * Logstash: `172.20.0.13` ## 数据持久化 数据存储在以下目录中: * Elasticsearch 数据: `${DATA_DIR}/esdata` * Kibana 数据: `${DATA_DIR}/kibana/data` * Logstash 数据: `${DATA_DIR}/logstash/data` 可以根据需要修改数据存储目录,以便持久化数据。 ## Es 操作文档接口文档(持续补充) 关于如何在 Elasticsearch 中创建索引、创建快照和存储操作的详细文档,可以参考 [Es 创建索引和快照接口文档](https://doc.apipost.net/docs/detail/3740a99c68f3000?target_id=33f25bc0772000&locale=zh-cn)。 通过该文档,您可以了解如何执行以下操作: * 创建索引 * 创建和管理快照 * 配置存储路径等 ## 访问 Kibana 完成启动后,你可以在浏览器中访问 Kibana UI: [http://localhost:5601](http://localhost:5601) 在 Kibana 中,你可以使用 Elasticsearch 存储的数据,进行可视化、分析等操作。