国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Elastic Stack 和 Docker Compose 入門:第 2 部分

這篇具有很好參考價(jià)值的文章主要介紹了Elastic Stack 和 Docker Compose 入門:第 2 部分。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

作者:Eddie Mitchell

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

歡迎閱讀 Elastic? Stack 和 Docker Compose 入門的第二部分。 在第一部分博客中,我們了解了 Docker Compose 的基礎(chǔ)知識(shí)以及如何將單節(jié)點(diǎn)集群建立為本地游樂場(chǎng),其中包括 Elasticsearch?、Kibana?、Logstash?、Metricbeat 和 Filebeat。 如果你還沒有閱讀第一篇博客,你可能需要跳過去閱讀它,然后再繼續(xù)。

在本博客中,我們將在之前的集群之上進(jìn)行構(gòu)建,并實(shí)現(xiàn)額外的功能,例如艦隊(duì)、代理、APM 和演示應(yīng)用程序,讓你享受 POC 樂趣! 請(qǐng)記住,即使集群規(guī)模較大,也不建議將 Docker Compose 用于生產(chǎn)。

當(dāng)然,如果你已經(jīng)熟悉并且只想編寫代碼,請(qǐng)隨時(shí)到 GitHub 存儲(chǔ)庫獲取這些文件。

讓我們開始吧!

Agent、Fleet、APM,天哪!

如果你不熟悉這些術(shù)語和產(chǎn)品,請(qǐng)不要擔(dān)心! 首先,我們花幾分鐘時(shí)間來介紹這些功能是什么以及為什么它們可能對(duì)你有用。

在這個(gè)集群的原始架構(gòu)中,我們專注于一些監(jiān)控和文件攝取的基礎(chǔ)知識(shí)。 在這里你可以看到它的代表。

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

Elastic Agent:快速概述

讓我們從 Elastic Agent 及其附帶的一些附加術(shù)語開始。

Elastic Agent 提供了一種統(tǒng)一的方式來啟用主機(jī)對(duì)日志、指標(biāo)和其他數(shù)據(jù)等各種數(shù)據(jù)類型的監(jiān)控。 此外,它還提供安全威脅、操作系統(tǒng)數(shù)據(jù)查詢、遠(yuǎn)程服務(wù)或硬件數(shù)據(jù)轉(zhuǎn)發(fā)等保護(hù)。 代理簡(jiǎn)化并加速了整個(gè)基礎(chǔ)設(shè)施的監(jiān)控部署。 每個(gè)代理都與策略相關(guān)聯(lián),這些策略可以更新以合并新數(shù)據(jù)源、安全措施和附加功能的集成。

Elastic Integrations 旨在讓你能夠快速、輕松地從外部源收集數(shù)據(jù)以獲得洞察。 這些集成通常使用預(yù)構(gòu)建的設(shè)置、儀表板、可視化和管道來幫助理解指標(biāo)、日志和事件。 集成頁面可以在你的本地 Kibana 實(shí)例中找到,從而可以輕松瀏覽、安裝和配置與 Elastic Agent 及其策略的集成。 你還可以在 Elastic 網(wǎng)站上查看可用集成的列表。

Policies (策略)?是定義 Elastic Agent 如何運(yùn)行的設(shè)置和集成的集合。 可以將多個(gè)集成分配給一個(gè)代理策略,從而允許代理能夠靈活地捕獲數(shù)據(jù)。 將 Elastic 代理策略分配給多個(gè)代理允許你使用 Fleet 更大規(guī)模地管理和配置許多代理。

Fleet 是 Kibana 中的用戶界面,允許集中管理 Elastic Agent 和相關(guān)策略。 此用戶界面使你能夠查看每個(gè)代理的運(yùn)行狀況、安裝的版本、上次簽入或活動(dòng)時(shí)間以及策略信息。 Fleet 通過 Fleet Server 促進(jìn)與每個(gè) Elastic 代理的通信。 這允許在簽入時(shí)遠(yuǎn)程推送新的策略更新以及升級(jí)代理二進(jìn)制文件或集成。

Fleet Server 是 Elastic Agent 的一個(gè)實(shí)例,作為 Fleet 與所有已部署的 Elastic Agent 之間通信的協(xié)調(diào)器運(yùn)行。

*哇*

查看 Elastic 的文檔,了解與 Agent 和 Fleet 相關(guān)的所有主題的更多信息。

我們將集成 Elastic Agent 和 Fleet,以演示如何收集日志和指標(biāo)以及管理策略。 讓我們將其添加到架構(gòu)圖中,看看它會(huì)是什么樣子。

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

Elastic APM 和自定義 Web 應(yīng)用程序

Elastic APM 是基于 Elastic Stack 構(gòu)建的應(yīng)用程序性能監(jiān)視器。 使用 Elastic APM 代理來檢測(cè)你的代碼可以通過收集指標(biāo)、跟蹤、日志、錯(cuò)誤和異常并將其傳送到 Elasticsearch 以便在 APM 用戶界面中查看來幫助簡(jiǎn)化故障排除和性能問題。

Elastic APM 可以在云端設(shè)置,也可以在本地自行管理。 管理 APM 的本地實(shí)例時(shí),你可以選擇管理獨(dú)立的 APM Server 二進(jìn)制文件或通過 Elastic Agent 將 APM 用作集成。

對(duì)于我們本地的 POC,我們將實(shí)施由 Elastic Agent 和 Fleet 服務(wù)管理的 Elastic APM。

如果你沒有要監(jiān)控的應(yīng)用程序,那么監(jiān)控應(yīng)用程序性能的能力并沒有多大用處。 理想情況下,你已經(jīng)擁有一些想要使用我們的 APM 代理之一進(jìn)行檢測(cè)的代碼。 如果沒有,GitHub 存儲(chǔ)庫有一個(gè)小型 Python 應(yīng)用程序,我們將對(duì)其進(jìn)行一些基本測(cè)試。

新架構(gòu)

讓我們?cè)俅慰匆幌挛覀兊募軜?gòu)圖,看看一切是如何組合到位的。

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

在這里你可以看到我們有新的 Fleet-Server 容器,它正在運(yùn)行 Elastic Agent,充當(dāng)所有代理與 Elastic 集群通信的中央通信點(diǎn)。 Elastic Agent 正在運(yùn)行 Elastic APM 集成,以便從我們的自定義 Web 應(yīng)用程序和 Kibana 收集遙測(cè)信息。

通訊和訪問

一般來說,開始使用 Docker 時(shí)出現(xiàn)的許多常見挑戰(zhàn)是了解通信的工作原理。 有了前面提到的所有容器、端口、證書和 URL,讓我們退后一步,看看當(dāng)不同部分需要相互通信時(shí),這種新架構(gòu)會(huì)是什么樣子。

在我們的 docker-compose.yml 文件中,你已經(jīng)看到了我們用來為不同容器生成證書的代碼。 它看起來像這樣:

echo "Creating certs";
echo -ne \
"instances:\n"\
"  - name: es01\n"\
"    dns:\n"\
"       - es01\n"\
"       - localhost\n"\
"    ip:\n"\
"      - 127.0.0.1\n"\
"  - name: kibana\n"\
"    dns:\n"\
"      - kibana\n"\
"      - localhost\n"\
"    ip:\n"\
"      - 127.0.0.1\n"\
"  - name: fleet-server\n"\
"    dns:\n"\
"      - fleet-server\n"\
"      - localhost\n"\
"    ip:\n"\
"      - 127.0.0.1\n"\
> config/certs/instances.yml;

該代碼塊正在創(chuàng)建一個(gè)名為 instances.yml 的文件,該文件駐留在 “setup” 容器中,該文件是所有容器名稱及其 DNS 條目的列表,因?yàn)樗鼈冊(cè)?Docker 引擎中相互關(guān)聯(lián)。 我們將此文件與 elasticsearch-certutil 實(shí)用程序結(jié)合使用,為每個(gè)容器創(chuàng)建一個(gè)證書,以便在容器通信時(shí)以及你與容器通信時(shí)確保容器之間的通信安全。

我們所有的容器都使用我們?cè)?docker-compose.yml 中設(shè)置的默認(rèn)網(wǎng)絡(luò)相互通信,如下所示:

networks:
  default:
    name: elastic

該網(wǎng)絡(luò)位于 Docker 引擎內(nèi)部,允許所有容器相互通信并解析其他容器的名稱。 為了允許來自瀏覽器的流量到達(dá)容器,我們?cè)诿總€(gè)服務(wù)中公開必要的端口。 例如:

es01:
  depends_on:
    setup:
      condition: service_healthy
  image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
  labels:
    co.elastic.logs/module: elasticsearch
  volumes:
    - certs:/usr/share/elasticsearch/config/certs
    - esdata01:/usr/share/elasticsearch/data
  ports:
    - ${ES_PORT}:9200
  environment:
    - node.name=es01
    - cluster.name=${CLUSTER_NAME}
    - discovery.type=single-node
  ...

具體來說,我們正在查看 “ports:” 部分。 這告訴 Docker Compose 映射以 “host:container” 格式指定的端口。 在此示例中,“${ES_PORT}” 將替換為 .env 文件中的 9200,并且該文件將在你的計(jì)算機(jī)(主機(jī))上打開。 第二個(gè) 9200 代表我們將主機(jī)映射到的容器上的端口。 這樣,當(dāng)你從瀏覽器訪問 https://localhost:9200 時(shí),你的流量將被發(fā)送到 es01 容器。

默認(rèn)情況下,Elasticsearch 也會(huì)打開端口 9300 用于節(jié)點(diǎn)間通信。 雖然 Docker 引擎中的其他容器將能夠在必要時(shí)訪問該端口,但你將無法從主機(jī)訪問該端口,因?yàn)槲覀兩形垂_該端口。

如果我們嘗試使用新架構(gòu)來可視化這些概念,它可能如下所示:

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

在此圖中,容器 “metricbeat01” 能夠解析我們?yōu)?“es01” 和 “l(fā)ogstash01” 指定的名稱,甚至可以訪問 “l(fā)ogstash01” 上未公開的監(jiān)控端口 9600,因?yàn)樗鼈凂v留在同一 Docker 網(wǎng)絡(luò)中。

但是,我們可以看到,為了讓你訪問 9200 上的 Elasticsearch 和 5601 上的 Kibana,你需要訪問 “l(fā)ocalhost”,以便你的計(jì)算機(jī)可以將流量路由到 Docker 網(wǎng)絡(luò)和正確的容器。

最后,在引用這些服務(wù)之一時(shí)決定使用哪個(gè)地址可能很棘手。 要記住的關(guān)鍵是,當(dāng)你的一個(gè)容器正在訪問已配置 Elastic 網(wǎng)絡(luò)的另一個(gè)容器時(shí),請(qǐng)使用正確的服務(wù)/容器名稱。 但是,如果來自主機(jī)的流量正在訪問其中一個(gè)容器,那么你將需要驗(yàn)證 docker-compose.yml 中是否公開了正確的端口,并通過 localhost 訪問該端口。

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

另請(qǐng)注意,這些配置是本地開發(fā)入門的方法,但不建議在生產(chǎn)環(huán)境中使用。

實(shí)施

那么,我們?nèi)绾螌?shí)現(xiàn)這一切呢?

首先,我們將快速回顧一下我們的基礎(chǔ)堆棧,并突出顯示一些更改,從我們的文件結(jié)構(gòu)、.env 文件和 docker-compose.yml 開始

文件結(jié)構(gòu)

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

對(duì)于我們的文件結(jié)構(gòu),我們添加了 “app” 文件夾來保存自定義 Web 應(yīng)用程序的所有代碼和配置以及新的 kibana.yml,因?yàn)槲覀儗⑻砑优c Elastic Agent 和 APM 相關(guān)的更多具體設(shè)置。

.env

我們的 .env 文件(GitHub 鏈接)基本保持不變,除了 Fleet、APM 服務(wù)器和 APM 秘密令牌的新端口之外,如下所示。

稍后在我們的實(shí)施中將使用 secret token 來授權(quán)對(duì) APM 服務(wù)器的請(qǐng)求。 你可以在文檔中閱讀有關(guān)它們的更多信息。

# Port to expose Fleet to the host
FLEET_PORT=8220


# Port to expose APM to the host
APMSERVER_PORT=8200


# APM Secret Token for POC environments only
ELASTIC_APM_SECRET_TOKEN=supersecrettoken

請(qǐng)記住,本博客中列出的任何密碼或密鑰均用于演示目的,應(yīng)立即在你的環(huán)境中進(jìn)行更改。

docker-compose.yml

對(duì)于我們的 docker-compose.yml 文件,我們?cè)诨A(chǔ)堆棧中添加了一些內(nèi)容 - 即 “Fleet Server” 和 “webapp” 的容器,包括添加額外的卷以及將艦隊(duì)服務(wù)器添加到我們的服務(wù)器列表中以生成如上所述的證書 。

你可以在 GitHub 上找到整個(gè)文件,但我們將僅介紹其中的一些編輯內(nèi)容。

關(guān)于環(huán)境變量的說明

現(xiàn)有服務(wù)中有許多環(huán)境變量,其中已指定證書并將其傳遞到容器或其相應(yīng)的配置文件。

與我們的 .env 文件非常相似,docker-compose.yml 中的環(huán)境變量允許我們將變量傳遞給容器。 通過這種方式,我們將變量 “CA_CERT” 設(shè)置為容器上的證書路徑一次,然后在 metricbeat.yml 文件中,我們現(xiàn)在可以在需要的地方使用該變量。 例如,如果我們需要更新 CA_CERT,我們只需要在 docker-compose.yml 中更新一次路徑,然后重新部署 metricbeat 容器。

metricbeat01 容器和 metricbeat.yml 文件是傳遞 “CA_CERT” 環(huán)境變量并在 yml 文件中多次使用它的好示例。

閱讀有關(guān)設(shè)置和使用環(huán)境變量的更多信息。

docker-compose.yml(‘fleet-server’?容器)

將 “fleet-server” 容器添加到 docker-compose.yml 文件(GitHub 鏈接)中會(huì)產(chǎn)生一個(gè)額外的容器來拉取 Elastic Agent 映像。 代理映像用于邊緣數(shù)據(jù)收集,以及用于配置 fleet 管理服務(wù)器的基礎(chǔ)映像。

請(qǐng)記住,我們正在使用一些額外的標(biāo)志來減輕證書檢查的嚴(yán)格程度,因?yàn)檫@是本地 POC。 在生產(chǎn)環(huán)境中,你需要正確頒發(fā)和驗(yàn)證所有證書。

如上所述,我們公開兩個(gè)端口用于通信。

ports:
  - ${FLEET_PORT}:8220
  - ${APMSERVER_PORT}:8200
  • “8220” 處理所有發(fā)往代理/艦隊(duì)通信的流量。
  • “8200” 處理 APM 服務(wù)器將使用的所有流量,因?yàn)槲覀兊拇戆?APM 集成。

這里有幾個(gè)關(guān)鍵的環(huán)境配置:

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

注意:如果你還想配置和運(yùn)行綜合測(cè)試,則需要使用 Docker 鏡像 “docker.elastic.co/beats/elastic-agent-complete:${STACK_VERSION}”。 我們不會(huì)討論這一部分,但你可以在我們的文檔中閱讀更多相關(guān)信息。

docker-compose.yml(‘kibana’ 容器)

“kibana” 容器需要進(jìn)行兩處更改(GitHub 鏈接)。 第一個(gè)是 “volumes” 部分中 docker-compose.yml 和 kibana.yml 文件之間非常重要的連接。 此行告訴 Docker 將本地 kibana.yml 文件 “bind mount” 到容器中以供使用。

- ./kibana.yml:/usr/share/kibana/config/kibana.yml:ro

接下來,在環(huán)境變量的底部添加了一個(gè)簡(jiǎn)單的更改,這允許我們傳遞我們最初在 .env 文件中設(shè)置的 APM 秘密令牌。

- ELASTIC_APM_SECRET_TOKEN=${ELASTIC_APM_SECRET_TOKEN}

kibana.yml

我們添加了一個(gè)新的 yml 文件來配置 Kibana,以便合并 Fleet 和 Agent(GitHub 鏈接)。

值得注意的是,xpack.fleet.packages 允許我們指定包將自動(dòng)提取其資產(chǎn):

xpack.fleet.packages:
  - name: fleet_server
    version: latest
  - name: system
...

而 xpack.fleet.agentPolicies 允許定義用于初始 fleet 和代理的基本策略:

xpack.fleet.agentPolicies:
  - name: Fleet-Server-Policy
    id: fleet-server-policy
    namespace: default
    monitoring_enabled: 
      - logs
      - metrics
...

你可以在我們的文檔中閱讀有關(guān)在沒有 UI 的情況下配置策略的更多信息。

我們還添加了一項(xiàng)政策來支持 Elastic APM 以及相關(guān)的 APM 包資產(chǎn):

- name: apm-1
        package:
          name: apm
        inputs:
        - type: apm
          enabled: true
          vars:
          - name: host
            value: 0.0.0.0:8200
          - name: secret_token
            value: ${ELASTIC_APM_SECRET_TOKEN}

我們?cè)O(shè)置服務(wù)器 URL 和 Secret_token 以確保我們的應(yīng)用程序可以正常通信。

一個(gè)好處是 telemetry.enabled: "true",它允許我們針對(duì)我們自己的 Kibana 實(shí)例運(yùn)行 Elastic APM,以查看 APM 工作方式的其他用法。

docker-compose.yml(‘webapp’容器)

 webapp:
    build:
      context: app
    volumes:
      - "/var/lib/docker/containers:/var/lib/docker/containers:ro"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "/sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro"
      - "/proc:/hostfs/proc:ro"
      - "/:/hostfs:ro"
    ports:
      - 8000:8000

對(duì)于我們的示例 Web 應(yīng)用程序,我們使用 dockerfile 來幫助我們構(gòu)建應(yīng)用程序并在 Docker 中部署。

此容器配置嚴(yán)重依賴于 “context: app” 構(gòu)建命令。 Docker 假設(shè) “app” 是一個(gè)文件夾,該文件夾內(nèi)是我們的 Dockerfile。 這些屬性可以更具體,但就我們的目的而言,默認(rèn)假設(shè)完全沒問題。

當(dāng) Docker Compose 構(gòu)建此容器時(shí),它將讀入 “app” 文件夾并獲取 dockerfile 以獲取有關(guān)如何構(gòu)建要在容器中使用的映像的說明。

我們還指定要公開端口 8000,并傳遞一些類似于 Metribeat 可用的 “volumes” 以監(jiān)控資源。

app/dockerfile

# syntax=docker/dockerfile:1


FROM python:3.9-slim-buster


WORKDIR /app


COPY requirements.txt requirements.txt


RUN pip3 install -r requirements.txt


COPY main.py main.py


CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--log-level", "info", "--workers", "1"]

我們的 dockerfile 現(xiàn)在將使用 “python:3.9-slim-buster” 圖像作為拉取的基礎(chǔ)。 從那里,它將創(chuàng)建 /app 文件夾,從我們的位置復(fù)制 requests.txt 文件,然后通過 pip3 安裝需求。

之后,它將復(fù)制我們的 main.py 應(yīng)用程序,然后嘗試運(yùn)行在 main.py 中構(gòu)建的 Uvicorn 應(yīng)用程序。

注意:出于緩存目的,操作順序在 dockerfile 中很重要。 如果更改 docker 文件中調(diào)用的任何文件,則緩存將被丟棄,并且將發(fā)生新的文件拉取。 通常,你希望將最頻繁更改的文件稍后放置在 dockerfile 中,以便較慢或未更改的文件可以在構(gòu)建過程中保留緩存。

app/main.py

main.py 應(yīng)用程序 (GitHub) 是一個(gè)非常簡(jiǎn)單的應(yīng)用程序,結(jié)合了 FastAPI 和 NiceGUI。 主應(yīng)用程序已使用 Starlette Elastic APM 代理進(jìn)行檢測(cè),并且有幾個(gè)按鈕允許進(jìn)行調(diào)用,從而有目的地在我們的 APM 環(huán)境中拋出錯(cuò)誤和消息。

Python:

from elasticapm.contrib.starlette import ElasticAPM, make_apm_client

apm = make_apm_client({
      'SERVICE_NAME': 'my_python_service',
      'SECRET_TOKEN': 'supersecrettoken',
      'SERVER_URL': 'http://fleet-server:8200',
      'ENVIRONMENT': 'development'
  })

app = FastAPI()
app.add_middleware(ElasticAPM, client=apm)

apm.capture_message(f"Custom Message: {message}")

@app.get("/error")
async def throw_error():
    try:
        1 / 0
    except Exception as e:
        apm.capture_exception()
    return {"message": "Failed Successfully :)"}

上面是代碼片段,我們可以看到我們正在導(dǎo)入 APM 庫,創(chuàng)建 APM 客戶端,并將中間件添加到 FastAPI 應(yīng)用程序中。

此應(yīng)用程序僅作為如何與 Elastic APM 交互的示例。

Docker Compose up

現(xiàn)在我們已經(jīng)配置好了一切,讓我們啟動(dòng)集群吧!

運(yùn)行命令 docker compose up 將啟動(dòng)所有容器,并允許你通過 https://localhost:5601 登錄 Kibana。 請(qǐng)記住,由于我們現(xiàn)在已經(jīng)為 Kibana 準(zhǔn)備了證書,因此我們必須使用 HTTPS,因此你可能必須單擊瀏覽器向你提供的任何證書警告。登錄后,你可以通過漢堡菜單 -> Management -> Fleet.。

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

到達(dá)那里后,你將在 “Agents”?菜單下看到一個(gè)主機(jī)。 你可以在此 “Fleet” 頁面中查看已注冊(cè)到集群中的所有代理。 你還可以創(chuàng)建或更改策略、注冊(cè)新代理以及更新任何全局隊(duì)列配置。

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

但是,你可能會(huì)注意到 CPU 和內(nèi)存使用情況字段并未更新。 同樣,如果你單擊 “Host” 鏈接,日志看起來也沒有被填充。 經(jīng)過進(jìn)一步調(diào)查,我們?cè)?fleet 服務(wù)器容器日志中看到類似于以下內(nèi)容的錯(cuò)誤:

{"log.level":"info","message":"Attempting to reconnect to backoff(elasticsearch(http://localhost:9200)) with 17 reconnect attempt(s)","component":{"binary":"metricbeat","dataset":"elastic_agent.metricbeat","id":"http/metrics-monitoring","type":"http/metrics"},"log":{"source":"http/metrics-monitoring"},"log.origin":{"file.line":139,"file.name":"pipeline/client_worker.go"},"service.name":"metricbeat","ecs.version":"1.6.0","log.logger":"publisher_pipeline_output","ecs.version":"1.6.0"}
{"log.level":"error","message":"Error dialing dial tcp 127.0.0.1:9200: connect: connection refused","component":{"binary":"metricbeat","dataset":"elastic_agent.metricbeat","id":"http/metrics-monitoring","type":"http/metrics"},"log":{"source":"http/metrics-monitoring"},"service.name":"metricbeat","ecs.version":"1.6.0","log.logger":"esclientleg","log.origin":{"file.line":38,"file.name":"transport/logging.go"},"network":"tcp","address":"localhost:9200","ecs.version":"1.6.0"}

這是因?yàn)?,默認(rèn)情況下,我們的 Elastic Agent 會(huì)嘗試將數(shù)據(jù)記錄到本地 Elasticsearch 實(shí)例,這對(duì)于我們的 Docker 環(huán)境來說是不正確的。

我們需要在 “Fleet” -> “Settings”?UI 中執(zhí)行一些更新才能解決此問題。

讓我們來看看。

重新配置輸出,添加證書

導(dǎo)航到 “fleet” -> “Settings”后,我們要查看 “Output”部分,然后單擊 “Actions” 標(biāo)題下的 “Edit” 按鈕:

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

這將為我們提供從界面右側(cè)滑出的功能,以便修改默認(rèn)輸出。

我們需要更改 “Hosts” 字段以及 “Elasticsearch CA trusted fingerprint” 字段,以及對(duì) “Advanced YAML configuration” 部分的更改。

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

但是,我們還沒有所有這些信息。 因此,讓我們跳入終端并獲取它。

首先,我們需要從集群中提取 CA 證書。 這與我們?cè)诘谝徊糠种惺褂玫拿钕嗤?/p>

docker cp es-cluster-es01-1:/usr/share/elasticsearch/config/certs/ca/ca.crt /tmp/.

注意:此命令將根據(jù)運(yùn)行 docker-compose.yml 文件的目錄或 .env 文件中指定的 COMPOSE_PROJECT_NAME 變量而有所不同。

接下來,我們需要獲取證書的指紋。 為此,我們可以使用 OpenSSL 命令:

openssl x509 -fingerprint -sha256 -noout -in /tmp/ca.crt | awk -F"=" {' print $2 '} | sed s/://g

這將產(chǎn)生類似于以下的值:

5A7464CEABC54FA60CAD3BDF16395E69243B827898F5CCC93E5A38B8F78D5E72

最后,我們需要將整個(gè)證書轉(zhuǎn)換為 yml 格式。 我們可以使用 “cat” 命令或僅通過在文本編輯器中打開證書來完成此操作:

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

獲得證書文本后,我們會(huì)將其添加為 yml 格式,并將所有這些信息輸入到之前的 “Fleet Setings” 屏幕中。

對(duì)于 “Hosts”,我們將使用 “https://es01:9200”。 這是因?yàn)橥泄?Fleet 服務(wù)器的容器了解如何與 es01 容器通信以發(fā)送數(shù)據(jù)。

輸入為 “Elasticsearch CA trusted fingerprint.” 字段生成的指紋。

最后,將證書文本添加到 “Advanced YAML configuration.”。 由于這是一個(gè) yml 配置,如果間隔不正確,它將拋出錯(cuò)誤。

從如下位置開始:

ssl:
certificate_authorities:
- |

然后粘貼證書文本,確??s進(jìn)正確。

例子:

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

不要忘記單擊 “Save and Apply Settings” -> “Save and Deploy.”。

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

查看 Elastic Agent 數(shù)據(jù)

保存和部署完成后,返回代理選項(xiàng)卡,單擊代理名稱,你應(yīng)該會(huì)看到 CPU 和內(nèi)存利用率正確顯示,以及正在填充的日志。

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

從這里,你還可以單擊 “View more agent metrics” 以前往代理儀表板并查看其他數(shù)據(jù)。

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

查看文檔以獲取有關(guān)監(jiān)控代理的更多信息。

查看 Elastic APM 數(shù)據(jù)

導(dǎo)航至漢堡菜單 -> Observability -> Overview,你將能夠開始看到一些流入的 Elastic APM 指標(biāo)。

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

具體來說,導(dǎo)航到 APM -> Services,你將能夠看到 Kibana 和我們的演示應(yīng)用程序。

Elastic Stack 和 Docker Compose 入門:第 2 部分,Observability,Elastic,docker,容器,運(yùn)維,elasticsearch,搜索引擎,python

這將使你能夠深入了解服務(wù)并熟悉 Elastic APM 正在捕獲的信息類型。

使用 Elastic Stack 進(jìn)行故障排除和無縫擴(kuò)展

我們的 Elastic Stack 和 Docker Compose 入門系列的第二部分重點(diǎn)介紹了其他安全性和功能,例如 Elastic Agent、Fleet 和 Elastic APM。 通過 Dockerfile 添加自定義應(yīng)用程序也有助于說明 Elastic APM 的實(shí)現(xiàn)。

這提供了一個(gè)很棒的本地學(xué)習(xí)平臺(tái)來開發(fā)和測(cè)試功能。

使用 Elastic APM 代理來檢測(cè)你的應(yīng)用程序以監(jiān)控你的應(yīng)用程序?qū)O大地提高你增強(qiáng)應(yīng)用程序并排除應(yīng)用程序故障的能力。 利用 Elastic Agent 和 Fleet 服務(wù)將允許你輕松擴(kuò)展你的檢測(cè)。

請(qǐng)記住,雖然我們演示了 Elastic Agents 和 APM,但此設(shè)置還允許測(cè)試 OTel 配置!

當(dāng)你準(zhǔn)備好遷移到更適合生產(chǎn)的集群時(shí),請(qǐng)查看 Elastic Cloud,將你在本地學(xué)到的知識(shí)無縫過渡到具有許多集成的生產(chǎn)就緒環(huán)境。

這里討論的所有文件都可以在 GitHub 上找到。 歡迎提出問題和請(qǐng)求!

本文中描述的任何特性或功能的發(fā)布和時(shí)間安排均由 Elastic 自行決定。 當(dāng)前不可用的任何特性或功能可能無法按時(shí)交付或根本無法交付。文章來源地址http://www.zghlxwxcb.cn/news/detail-724512.html

到了這里,關(guān)于Elastic Stack 和 Docker Compose 入門:第 2 部分的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 探索Conduktor的Kafka Stack Docker Compose:一款強(qiáng)大的Apache Kafka管理工具

    項(xiàng)目地址:https://gitcode.com/conduktor/kafka-stack-docker-compose Conduktor的Kafka Stack Docker Compose 是一個(gè)便捷的開源解決方案,它提供了一種快速部署和管理Apache Kafka集群的方法,通過Docker容器化技術(shù)實(shí)現(xiàn)了輕量級(jí)的本地環(huán)境搭建。該項(xiàng)目旨在簡(jiǎn)化開發(fā)者和數(shù)據(jù)工程師的工作流程,使他們能

    2024年04月13日
    瀏覽(22)
  • 【Docker實(shí)用篇】一文入門Docker(4)Docker-Compose

    【Docker實(shí)用篇】一文入門Docker(4)Docker-Compose

    目錄 1.Docker-Compose 1.1.初識(shí)DockerCompose 1.2.安裝DockerCompose 1.2.1 修改文件權(quán)限 1.2.2 Base自動(dòng)補(bǔ)全命令: 1.3部署微服務(wù)集群 1.3.1.compose文件 1.3.2.修改微服務(wù)配置 1.3.3.打包 1.3.4.拷貝jar包到部署目錄 1.3.5.部署 Docker Compose可以基于Compose文件幫我們快速的部署分布式應(yīng)用,而無需手動(dòng)一個(gè)

    2024年01月18日
    瀏覽(15)
  • 10Docker Compose快速入門

    本節(jié)我們來探討Compose使用的基本步驟,并編寫一個(gè)簡(jiǎn)單示例快速入門。 使用Compose大致有三個(gè)步驟: 使用Dockerfile(或其他方式)定義應(yīng)用程序環(huán)境,以便在任何地方重現(xiàn)該環(huán)境。 在docker-compose.yml文件中定義組成應(yīng)用程序的服務(wù),以便各個(gè)服務(wù)在一個(gè)隔離的環(huán)境中一起運(yùn)行。

    2024年01月25日
    瀏覽(13)
  • Docker Compose的入門與使用

    Docker Compose的入門與使用

    Docker Compose的概念在上一篇Docker的介紹中有講解,現(xiàn)在說一下怎么使用 從官網(wǎng)上下載,速度會(huì)比較慢 執(zhí)行 授權(quán) 驗(yàn)證 運(yùn)行一個(gè)Tomcat 流程: 需要定義一個(gè)docker-compose.yml 文件----可以在idea里面創(chuàng)建 需要在docker-compose文件配置依賴服務(wù) docker-compose up 執(zhí)行該文件 上傳yml文件到linu

    2024年02月12日
    瀏覽(14)
  • Observability: Elastic RUM (真實(shí)用戶監(jiān)控)演示

    Observability: Elastic RUM (真實(shí)用戶監(jiān)控)演示

    在之前的文章 “Elastic RUM(真實(shí)用戶監(jiān)測(cè))淺談”,我們?cè)敿?xì)描述了 Elastic RUM (Real User Monitor)。在今天的文章中,我將詳細(xì)一步一步地對(duì)該文章進(jìn)行演示以便大家也能和我一樣進(jìn)行展示。在今天的展示中,我將使用如下的架構(gòu): APM 集成架構(gòu) Elastic APM 集成由四個(gè)組件組成:

    2023年04月08日
    瀏覽(18)
  • Docker與Docker Compose入門:釋放你的應(yīng)用部署的威力

    Docker與Docker Compose入門:釋放你的應(yīng)用部署的威力

    嘿,大家好!今天給大家介紹一項(xiàng)強(qiáng)大而有趣的技能,那就是使用 Docker 和 Docker Compose 來釋放你的應(yīng)用部署的威力!無論你是一名開發(fā)人員還是系統(tǒng)管理員,掌握這個(gè)技能都將為你的工作帶來巨大的好處。 本文大綱如下, 這里給大家分享我的 Docker 一鍵安裝腳本,在大部分基

    2024年01月20日
    瀏覽(14)
  • docker-compose部署6.8.23版本elasticsearch+es-head+kibana多節(jié)點(diǎn)集群及部分排錯(cuò)處理

    docker-compose部署6.8.23版本elasticsearch+es-head+kibana多節(jié)點(diǎn)集群及部分排錯(cuò)處理

    現(xiàn)階段很多elasticsearch部署都是7版本之上的,但部分要求是6.8版本,倆者很多配置參數(shù)存在差異問題,elasticsearch有狀態(tài)服務(wù),kubernetes和docker啟動(dòng)有點(diǎn)麻煩,最好用docker-compose啟動(dòng),可以保證數(shù)據(jù)穩(wěn)定。 節(jié)點(diǎn)信息 hosts信息 192.168.121.137 es-master 192.168.121.138 es-node1 master執(zhí)行,node改

    2024年02月14日
    瀏覽(28)
  • 【Docker從入門到入土 5】 使用Docker-compose一鍵部署Wordpress平臺(tái)

    【Docker從入門到入土 5】 使用Docker-compose一鍵部署Wordpress平臺(tái)

    YAML 是一種標(biāo)記語言,它可以很直觀的展示數(shù)據(jù)序列化格式,可讀性高。 類似于 json 數(shù)據(jù)描述語言,語法比 json 簡(jiǎn)單的很多。 YAML 數(shù)據(jù)結(jié)構(gòu)通過縮進(jìn)來表示,連續(xù)的項(xiàng)目通過減號(hào)來表示,鍵值對(duì)用冒號(hào)分隔,數(shù)組用中括號(hào) [] 括起來, hash 用花括號(hào) {} 括起來。 語法特點(diǎn) 區(qū)分大

    2024年02月03日
    瀏覽(25)
  • Observability:為 Logstash 輸出配置 SSL/TLS - Elastic Agent

    Observability:為 Logstash 輸出配置 SSL/TLS - Elastic Agent

    在我之前的文章 “Observability:如何把 Elastic Agent 采集的數(shù)據(jù)輸入到 Logstash 并最終寫入到 Elasticsearch”,我詳細(xì)介紹了如何使用 Elastic Agents 采集數(shù)據(jù)并把數(shù)據(jù)通過 Logstash 發(fā)送至 Elasticsearch。細(xì)心的開發(fā)者可能注意到從 Elastic Agents 到 Logstash 直接的鏈接它不是加密的。這個(gè)在實(shí)

    2024年02月11日
    瀏覽(19)
  • Observability:如何使用 Elastic Agents 把定制的日志攝入到 Elasticsearch 中

    Observability:如何使用 Elastic Agents 把定制的日志攝入到 Elasticsearch 中

    在我之前的文章 “Observability:使用 Elastic Agent 來攝入日志及指標(biāo) - Elastic Stack 8.0”,我詳細(xì)地描述了如何安裝 Elasticsearch,Stack 及 Elastic Agents 來采集系統(tǒng)日志及指標(biāo)。很多開發(fā)者可能會(huì)有疑問,在我們的實(shí)際使用中,我們更多的可能是需要采集定制的應(yīng)用日志,而不是系統(tǒng)日

    2024年02月02日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包