欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker中安裝ElasticSearch+Kibana+Logstash(ELK)實(shí)踐記錄

 更新時(shí)間:2025年03月20日 10:22:32   作者:劉子丙  
文章介紹了如何使用Docker在本地安裝和配置Elasticsearch、Kibana和Logstash(ELK堆棧),本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧

Elasticsearch、Kibana 和 Logstash 通常被統(tǒng)稱為 ELK 堆棧

在軟件項(xiàng)目中一般充當(dāng):數(shù)據(jù)存儲(chǔ)和搜索、日志管理、數(shù)據(jù)可視化等功能角色

成員介紹

ElasticSearch

  • 定義:Elasticsearch是一個(gè)基于Lucene的分布式、RESTful風(fēng)格的搜索和數(shù)據(jù)分析引擎
  • 主要功能:
    • 全文搜索:可以快速地執(zhí)行全文搜索,返回相關(guān)性最高的結(jié)
    • 實(shí)時(shí)索引:支持實(shí)時(shí)索引數(shù)據(jù),意味著數(shù)據(jù)可以幾乎實(shí)時(shí)地被搜索到
    • 分布式架構(gòu):設(shè)計(jì)為分布式系統(tǒng),可以水平擴(kuò)展,處理PB級(jí)的數(shù)據(jù)
    • 數(shù)據(jù)分析:除了搜索,還可以執(zhí)行復(fù)雜的數(shù)據(jù)分析,如聚合、排序和過濾
  • 使用場(chǎng)景:日志分析、實(shí)時(shí)監(jiān)控、搜索引擎、數(shù)據(jù)倉(cāng)庫(kù)等

Kibana 

  • 定義:Kibana是一個(gè)為Elasticsearch設(shè)計(jì)的開源數(shù)據(jù)可視化和分析工具
  • 主要功能:
    • 可視化:提供豐富的可視化選項(xiàng),如柱狀圖、折線圖、餅圖、地圖等,幫助用戶直觀地理解數(shù)據(jù)
    • Dashboard:可以創(chuàng)建和共享交互式的Dashboard,展示多個(gè)可視化結(jié)果
    • 探索數(shù)據(jù):允許用戶通過簡(jiǎn)單的界面探索Elasticsearch中的數(shù)據(jù)
    • 實(shí)時(shí)展示:與Elasticsearch結(jié)合,可以實(shí)時(shí)展示數(shù)據(jù)變化
  • 使用場(chǎng)景:與Elasticsearch配合使用,進(jìn)行數(shù)據(jù)可視化、日志分析、業(yè)務(wù)監(jiān)控等

Logstash

  • 定義:Logstash是一個(gè)開源的服務(wù)器端數(shù)據(jù)處理管道,它能夠同時(shí)從多個(gè)來源采集數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù),然后將數(shù)據(jù)發(fā)送到指定的“stash”(存儲(chǔ)庫(kù))中
  • 主要功能:
    • 數(shù)據(jù)采集:能夠從各種數(shù)據(jù)源(如日志文件、系統(tǒng)事件、網(wǎng)絡(luò)包、社交媒體 feeds 等)中采集數(shù)據(jù)
    • 數(shù)據(jù)轉(zhuǎn)換:可以將非結(jié)構(gòu)化的日志數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)化的JSON格式,便于后續(xù)處理和分析
    • 數(shù)據(jù)輸出:可以將處理后的數(shù)據(jù)發(fā)送到各種目的地,如Elasticsearch、數(shù)據(jù)庫(kù)、消息隊(duì)列等
  • 使用場(chǎng)景:日志管理、數(shù)據(jù)轉(zhuǎn)換、集成各種不同數(shù)據(jù)源

從Docker開始

鏡像準(zhǔn)備

Docker @ Elastic網(wǎng)站中可以看到Elastic的所有項(xiàng)目的Docker鏡像以及更新時(shí)間

從Documentation網(wǎng)站中可以學(xué)習(xí)這些項(xiàng)目的官方文檔

這里我們主要使用ELK三個(gè)項(xiàng)目,在這里我們以8.16.1版本為案例分別拉取三個(gè)鏡像:

docker pull docker.elastic.co/elasticsearch/elasticsearch:8.16.1
docker pull docker.elastic.co/logstash/logstash:8.16.1
docker pull docker.elastic.co/kibana/kibana:8.16.1

創(chuàng)建Network

docker network create elastic

搭建ElasticSearch

啟動(dòng)命令

docker run --name es01 --net elastic -p 9200:9200 -it \
-e "ELASTIC_PASSWORD=elastic" \
-v /docker/elasticsearch/data:/usr/share/elasticsearch/data \
-d docker.elastic.co/elasticsearch/elasticsearch:8.16.1

內(nèi)容說明

--name es01:容器的名字可以自定義隨便改

--net elastic:指定容器連接到名為 elastic 的 Docker 網(wǎng)絡(luò)。這使得該容器能夠與同一網(wǎng)絡(luò)中的其他容器進(jìn)行通信。

-p 9200:9200:這個(gè)選項(xiàng)將宿主機(jī)的 9200 端口映射到容器的 9200 端口,允許從外部訪問 Elasticsearch 的 HTTP API。訪問 http://localhost:9200 將會(huì)鏈接到容器中的 Elasticsearch 服務(wù)。

-it: 這個(gè)組合選項(xiàng)使容器以交互模式運(yùn)行,并分配一個(gè)偽終端。雖然這個(gè)選項(xiàng)在后臺(tái)運(yùn)行的容器中不總是必要,但在調(diào)試時(shí)很有用。

-e "ELASTIC_PASSWORD=elastic": 這個(gè)選項(xiàng)設(shè)置環(huán)境變量 ELASTIC_PASSWORD,用于配置 Elasticsearch 的默認(rèn)用戶(elastic)的密碼為 elastic。這對(duì)安全性非常重要。

如果不打算在環(huán)境變量里指定固定的密碼,后續(xù)可以通過此命令獲取一個(gè)重置后的新密碼

docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

注意: -it 后面是es容器的自定義名稱

通過執(zhí)行命令之后會(huì)得到一個(gè)new value ,里面就是 用戶名 elastic 的密碼

-v /docker/elasticsearch/data:/usr/share/elasticsearch/data: 這個(gè)選項(xiàng)將宿主機(jī)的 /docker/elasticsearch/data 目錄掛載到容器的 /usr/share/elasticsearch/data 目錄。這使得 Elasticsearch 的數(shù)據(jù)可以持久化存儲(chǔ),即使容器被刪除或重新啟動(dòng),數(shù)據(jù)也不會(huì)丟失。

-v 后面 是兩個(gè)路徑 用冒號(hào)(:)分開,其中左側(cè)是宿主機(jī)本地的路徑,后面是容器內(nèi)部的路徑,即使不自己手動(dòng)去創(chuàng)建這個(gè)文件夾,在執(zhí)行命令之后,也會(huì)自動(dòng)創(chuàng)建,所以確定好位置之后,把自定義的位置設(shè)置在冒號(hào)左側(cè)即可

-d: 這個(gè)選項(xiàng)讓容器在后臺(tái)運(yùn)行(即“分離模式”)。這樣你可以繼續(xù)在終端中執(zhí)行其他命令,而不必保持容器的終端打開。

docker.elastic.co/elasticsearch/elasticsearch:8.16.1: 這是要運(yùn)行的 Docker 鏡像。

啟動(dòng)成功之后:查看控制臺(tái):

ES的最新鏡像在容器內(nèi)部創(chuàng)建了證書以及生成了一段Kibana的token,這個(gè)token可以先保存下來,或者后續(xù)自己手動(dòng)生成都可以

驗(yàn)證

訪問9200

容器啟動(dòng)成功之后,通過:https://localhost:9200/ (注意,這里是https)

  • 從 Elasticsearch 7.x 版本開始,默認(rèn)啟用了安全功能,包括對(duì) REST API 的 HTTPS 訪問。這意味著默認(rèn)情況下,Elasticsearch 會(huì)要求通過安全連接進(jìn)行訪問。
  • 如果你在啟動(dòng) Elasticsearch 時(shí)配置了安全設(shè)置(如設(shè)置了用戶密碼),Elasticsearch 會(huì)要求使用 HTTPS 進(jìn)行訪問。

成功訪問后的內(nèi)容大概長(zhǎng)這樣,也就意味著ES已經(jīng)成功啟動(dòng):

關(guān)閉https(可選)

如果需要關(guān)閉https,那么通過命令行進(jìn)入容器內(nèi)部

docker exec -it es01 /bin/bash

或者通過docker desktop,或者portainer 訪問,最后編輯elasticsearch的配置文件

vi /usr/share/elasticsearch/config/elasticsearch.yml

將https禁用掉(不推薦)

xpack.security.enabled: false

搭建kibana

剛才在啟動(dòng)ES的時(shí)候,控制臺(tái)日志中,ES自動(dòng)為用戶創(chuàng)建了一個(gè)token,用于和kibana的綁定,沒有保存下來也無所謂,通過下面這個(gè)命令可以從ES里再拿到一個(gè)新的

docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

啟動(dòng)命令

docker run --name kibana01 --net elastic -p 5601:5601 -d docker.elastic.co/kibana/kibana:8.16.1

配置

啟動(dòng)成功之后通過http://localhost:5601/訪問到kibana頁面可以看到一個(gè)標(biāo)題是Configure Elastic to get started 的 輸入框,在這里將token輸入進(jìn)去

這里一定要將kibana和es設(shè)置在一個(gè)network中,可以看到上方,由于kibana和es在一個(gè)network里,所以kibana已經(jīng)匹配到es的位置

如果點(diǎn)擊提交配置,提示錯(cuò)誤

Couldn't configure Elastic

Generate a new enrollment token or configure manually.

那么就需要再使用命令去拿一個(gè)新的

docker exec -it es01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

點(diǎn)擊配置Elastic之后彈出一個(gè)框要求輸入驗(yàn)證碼

這個(gè)驗(yàn)證碼其實(shí)在Kibana啟動(dòng)的時(shí)候,控制臺(tái)日志中會(huì)輸入一個(gè)驗(yàn)證碼尅有拿來直接用,如果沒有拿到這個(gè)驗(yàn)證碼,根據(jù)上面的提示,進(jìn)到kibana容器內(nèi)部,通過bin目錄下面的,kibana-verification-code再拿一個(gè)

驗(yàn)證

配置成功后彈出用戶名密碼登錄,這里輸入安裝ES時(shí)設(shè)置的用戶名密碼,如果按照上文中的命令啟動(dòng)的es,那么用戶名密碼都是elastic

設(shè)置中文環(huán)境

按照上文的方式進(jìn)入kibana之后,kibana默認(rèn)的配置中是沒有國(guó)際化支持的,這個(gè)需要自己去配置,只需要加一行配置即可

命令行輸入命令進(jìn)入容器:

使用一下命令將容器 kibana01中的kibana.yml配置文件復(fù)制到命令行當(dāng)前文件夾

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

打開kibana.yml文件之后在文件最下方加一行

i18n.locale: "zh-CN"

保存之后再通過命令把當(dāng)前文件夾下的kibana.yml文件復(fù)制到kibana01容器中去:

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

然后重啟容器:

docker restart kibana01

重新輸入用戶名密碼進(jìn)入界面,發(fā)現(xiàn)已經(jīng)都變成中文了

搭建Logstash

概念

logstash最主要的功能是從input獲取數(shù)據(jù),通過filter處理,再輸出到指定的地方 ,官網(wǎng)給出的示例圖是,從DataSource中拿到數(shù)據(jù),然后經(jīng)過Logstash的處理,先是將數(shù)據(jù)input進(jìn)來,然后經(jīng)過各種filters過濾,然后輸出到某個(gè)地方。

Logstash管道有兩個(gè)必需的元素,輸入輸出,過濾器是可選內(nèi)容。

關(guān)于輸入

Logstash的輸入插件非常豐富,不單單是數(shù)據(jù)庫(kù),控制臺(tái),它幾乎可以處理任何類型的數(shù)據(jù)輸入需求。隨著技術(shù)的不斷發(fā)展,Logstash支持的輸入源也在不斷增加。

例如:用戶可以直接從命令行輸入數(shù)據(jù)、文件、syslog、TCP/UDP、Beats、JDBC、ES、Kafka、Redis、HTTP/HTTPS等,更多可以參閱:Input plugins | Logstash Reference [8.16] | Elastic

關(guān)于輸出

Logstash 提供了多種輸出插件,用于將處理后的數(shù)據(jù)發(fā)送到不同的目的地,比如ES、Redis、文件、Kafka、Email、TCP/UDP等,更多可以參閱:Output plugins | Logstash Reference [8.16] | Elastic

關(guān)于過濾器

Logstash也提供了很多輸出插件,最常用的就是 Grok(用于解析和結(jié)構(gòu)化非結(jié)構(gòu)化日志數(shù)據(jù)),其他還有很多具體可以參閱:Filter plugins | Logstash Reference [8.16] | Elastic

啟動(dòng)準(zhǔn)備

Logstash配置

Logstash有兩個(gè)部分值得掛載到宿主機(jī)本地配置,一個(gè)是Config一個(gè)是pipeline,關(guān)于config部分,如果直接啟動(dòng)一個(gè)logstash8.x鏡像,可以進(jìn)入鏡像看到一個(gè)默認(rèn)的配置文件:/usr/share/logstash/config/logstash.yml,內(nèi)容是

http.host: "0.0.0.0"xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]

http.host: “0.0.0.0” :代表所有可用的 IPv4 地址。當(dāng)你設(shè)置 Logstash 監(jiān)聽在這個(gè)地址上時(shí),它可以從任何網(wǎng)絡(luò)接口接收連接,包括局域網(wǎng)、公網(wǎng)接口等

xpack.monitoring.elasticsearch.hosts:這個(gè)配置項(xiàng)指定了 Logstash 應(yīng)該將監(jiān)控?cái)?shù)據(jù)發(fā)送到哪個(gè) Elasticsearch 實(shí)例,這里默認(rèn)是寫了一個(gè)elasticsearch:9200,但要與我們?cè)赿ocker中配置的es連接,其實(shí)要把它更改成我們自定義的容器名。

如果ES設(shè)置的有用戶名密碼,以及登錄校驗(yàn)的配置,那么需要再在這個(gè)配置文件中,加上自己的用戶名密碼:

xpack.monitoring.elasticsearch.username: "elastic"xpack.monitoring.elasticsearch.password: "elastic"

流水線配置

Logstash的默認(rèn)流水線配置如下,可以看到一個(gè)input和一個(gè)output,這是一個(gè)簡(jiǎn)單的輸入輸出,但是這是結(jié)合Filebeat的一個(gè)默認(rèn)配置

在學(xué)習(xí)使用Logstash之前先弄一個(gè)簡(jiǎn)單的流水線配置跑起來即可:

input {
    generator {
        count => 10
        message => '{"title":"helloworld","content":["red","blud","yellow"]}'
        codec => json
    }
}
output {
    stdout {
        codec => rubydebug
    }
}
  • input { }:這是 Logstash 配置文件中定義輸入插件的區(qū)域。在這個(gè)大括號(hào)內(nèi),你可以指定一個(gè)或多個(gè)輸入源。
  • generator:這是一個(gè)內(nèi)置的輸入插件,用于生成測(cè)試數(shù)據(jù)。它不會(huì)從外部源讀取數(shù)據(jù),而是根據(jù)配置生成指定數(shù)量的數(shù)據(jù)。
  • count => 10:這指定了 Logstash 應(yīng)該生成多少個(gè)事件。在這個(gè)例子中,它會(huì)生成 10 個(gè)事件。
  • message => '{"title":"helloworld","content":["red","blud","yellow"]}':這是生成的事件的內(nèi)容。每個(gè)事件都將包含這個(gè) JSON 字符串。
  • codec => json:這告訴 Logstash 使用 JSON 編解碼器來解析消息字段。這意味著 Logstash 會(huì)將 message 字段中的 JSON 字符串解析為一個(gè) Logstash 事件。
  • output { }:這是 Logstash 配置文件中定義輸出插件的區(qū)域。在這個(gè)大括號(hào)內(nèi),你可以指定一個(gè)或多個(gè)輸出目標(biāo)。
  • stdout { }:這里指定了 stdout 輸出插件。這個(gè)插件允許 Logstash 將處理后的數(shù)據(jù)發(fā)送到標(biāo)準(zhǔn)輸出(通常是命令行界面)。
  • codec => rubydebug:這是對(duì) stdout 插件的一個(gè)配置,指定了使用 rubydebug 編解碼器。rubydebug 編解碼器以人類可讀的格式(通常是 JSON)輸出事件數(shù)據(jù)。這意味著當(dāng)你輸入數(shù)據(jù)時(shí),Logstash 不僅會(huì)輸出數(shù)據(jù),還會(huì)以格式化的 JSON 形式展示事件的所有字段,包括一些內(nèi)置的字段(如 @timestamp、@version 和 message)以及可選的 host 字段。

將兩個(gè)文件保存好位置之后,便可以開始啟動(dòng)了

啟動(dòng)命令

docker run -it --name logstash \
--network elastic \
-v /docker/logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
-v /docker/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml docker.elastic.co/logstash/logstash:8.16.1

啟動(dòng)之后可以看到,控制臺(tái)打印了10次 在pipeline中配置的message 

 后續(xù)根據(jù)自己的業(yè)務(wù)需要去配置流水線,然后重啟容器即可

到此這篇關(guān)于Docker中安裝ElasticSearch+Kibana+Logstash(ELK)實(shí)踐的文章就介紹到這了,更多相關(guān)docker 安裝ElasticSearch Kibana Logstash內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker創(chuàng)建鏡像兩種方法詳解

    Docker創(chuàng)建鏡像兩種方法詳解

    這篇文章主要介紹了 Docker創(chuàng)建鏡像兩種方法詳解的相關(guān)資料,Docker創(chuàng)建鏡像:一是使用docker commit命令,二是使用docker build命令和Dockerfile文件,需要的朋友可以參考下
    2016-12-12
  • CentOS7安裝使用Docker的步驟

    CentOS7安裝使用Docker的步驟

    本篇文章主要介紹了詳解CentOS7安裝使用Docker的步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • Mysql 在 Docker 中的時(shí)區(qū)問題記錄

    Mysql 在 Docker 中的時(shí)區(qū)問題記錄

    Mysql 時(shí)區(qū)一般是跟著系統(tǒng)走的,而在 Docker 中安裝 Mysql 默認(rèn)時(shí)區(qū)是 UTC,下面介紹,創(chuàng)建Docker容器前、后,分別如何設(shè)置 Mysql 時(shí)區(qū),感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • 關(guān)于docker?cgroups資源限制的問題

    關(guān)于docker?cgroups資源限制的問題

    cgroups是一個(gè)非常強(qiáng)大的linux內(nèi)核工具,他不僅可以限制被namespace隔離起來的資源,還可以為資源設(shè)置權(quán)重、計(jì)算使用量,這篇文章主要介紹了docker?cgroups資源限制,需要的朋友可以參考下
    2022-09-09
  • Docker掛載/etc/timezone報(bào)錯(cuò)問題

    Docker掛載/etc/timezone報(bào)錯(cuò)問題

    這篇文章主要介紹了Docker掛載/etc/timezone報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • windows下Docker部署Flask的詳細(xì)教程

    windows下Docker部署Flask的詳細(xì)教程

    這篇文章主要介紹了windows下Docker部署Flask的教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • Navicat 連接服務(wù)器端中的docker數(shù)據(jù)庫(kù)的方法

    Navicat 連接服務(wù)器端中的docker數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了Navicat 連接服務(wù)器端中的docker數(shù)據(jù)庫(kù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Docker運(yùn)行hello-world鏡像失敗或超時(shí)的問題

    Docker運(yùn)行hello-world鏡像失敗或超時(shí)的問題

    在安裝Docker并嘗試運(yùn)行hello-world時(shí),可能會(huì)遇到超時(shí)問題,這通常是由于默認(rèn)的鏡像源訪問速度慢造成的,解決這個(gè)問題的辦法是更換鏡像源,雖然許多人推薦使用阿里云的鏡像源,對(duì)Docker hello-world超時(shí)問題感興趣的朋友一起看看吧
    2024-09-09
  • 在?OpenKylin?上安裝?Docker的詳細(xì)過程

    在?OpenKylin?上安裝?Docker的詳細(xì)過程

    在?OpenKylin?上安裝?Docker可能會(huì)遇到與?Ubuntu?略有不同的包管理問題,這篇文章主要介紹了在?OpenKylin上安裝?Docker的過程,需要的朋友可以參考下
    2024-05-05
  • docker容器狀態(tài)轉(zhuǎn)換管理命令實(shí)例詳解

    docker容器狀態(tài)轉(zhuǎn)換管理命令實(shí)例詳解

    Docker容器只是一個(gè)運(yùn)行于宿主操作系統(tǒng)host?OS上的應(yīng)用進(jìn)程,所以你需要一個(gè)鏡像來運(yùn)行它,Docker鏡像以進(jìn)程的方式運(yùn)行時(shí)就叫做Docker容器,這篇文章主要給大家介紹了關(guān)于docker容器狀態(tài)轉(zhuǎn)換管理命令的相關(guān)資料,需要的朋友可以參考下
    2022-05-05

最新評(píng)論