<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ElasticSearch 如何配置Uptime 監(jiān)控組件可用性

          共 3897字,需瀏覽 8分鐘

           ·

          2021-06-03 06:10

          點(diǎn)擊上方"程序員歷小冰",選擇“置頂或者星標(biāo)”

             你的關(guān)注意義重大!

          本文收錄至《Elastic Stack 實(shí)戰(zhàn)手冊》,歡迎和我一起解鎖開發(fā)者共創(chuàng)書籍,系統(tǒng)學(xué)習(xí) Elasticsearch,地址詳見文末。

          現(xiàn)在互聯(lián)網(wǎng)架構(gòu)隨著用戶的增加,而越來越復(fù)雜,可能要有成千上萬個(gè)不同的組件和不同的實(shí)例,對這些組件可用性的監(jiān)控是提供高可用服務(wù)的關(guān)鍵之一,Elastic 為此推出了 Uptime App。

          Elasticsearch 使用 Heartbeat 進(jìn)行組件的監(jiān)控。

          Heartbeat 也就是我們通常所說的心跳,通過 Hearteat 我們可以判斷一個(gè)網(wǎng)絡(luò)組件,當(dāng)前是否存活,是否可以對外正常提供服務(wù)。

          Heartbeat 是一個(gè)輕量級的數(shù)據(jù)收集器。它用來幫我們進(jìn)行 Uptime 的健康監(jiān)控。它可以定期通過 HTTP、TCP 或 ICMP 等方式驗(yàn)證組件是否處于運(yùn)行狀態(tài),然后將收集到的狀態(tài)和信息上報(bào)給 Elasticsearch。

          而 Kibana 中的 Uptime app 則為我們提供了查看可用性數(shù)據(jù)的儀表板,以監(jiān)控服務(wù)器或服務(wù)的正常運(yùn)行,并提供了報(bào)警功能支持。

          Elasticsearch 使用 Heartbeat 來進(jìn)行 Uptime 的監(jiān)控的架構(gòu)可以表述如下:

          下面,我們將依次講解 Uptime App 的安裝,Heartbeat 的配置和各類監(jiān)控組件的配置。

          安裝 Uptime App

          如果我們打開我們的 Kibana 并點(diǎn)擊 Uptime 應(yīng)用,那么第一次打開的時(shí)候,我們可以看到,如下的界面。

          點(diǎn)擊 Install Heartbeat,就會跳轉(zhuǎn)到配置 Uptime Monitors 的文檔界面,你可以按照這個(gè)界面上的步驟進(jìn)行 Heartbeat 的安裝,配置,啟動和測試 Kibana 是否接收到 Heartbeat 上傳的數(shù)據(jù)。

          Heartbeat 在不同平臺有多種安裝方式,比如說 macOS、DEB、RPM 和 Windows 等,我們這里介紹最為常用的 Docker 安裝方式,其后續(xù)部署和啟動步驟則大同小異,讀者可以自行根據(jù)需要進(jìn)行實(shí)踐。

          需要注意的是,安裝的 Heartbeat 必須和 Elasticsearch 或 Kibana 版本相同,所以我們這里選取 heartbeat:7.10.0 版本的鏡像。

          docker pull docker.elastic.co/beats/heartbeat:7.10.0

          接著,我們可以使用如下命令啟動 Heartbeat 容器。

          docker run -d   --name=heartbeat   --user=heartbeat   
          --volume="/tmp/heartbeat.docker.yml:/usr/share/heartbeat/heartbeat.yml:ro"
          docker.elastic.co/beats/heartbeat:7.10.0 --strict.perms=false

          這里使用了 docker 的 --volume 參數(shù),掛載了宿主機(jī)文件系統(tǒng)路徑下的 heartbeat.docker.yml 文件到容器的對應(yīng)路徑下,這是在為 Heartbeat 提供配置文件。具體配置文件內(nèi)容后續(xù)繼續(xù)講解,我們這里先演示完整個(gè) Uptime 安裝流程。

          啟動 Heartbeat 容器后,通過 docker ps 和 docker exec 命令可以進(jìn)入到相應(yīng)的容器內(nèi)部。

          docker ps
          docker exec -it 5b3785357c26(要替換為自己ps命令輸出的CONTAINER ID) bash

          然后,通過 ls 命令,我們可以看到 Heartbeat 的整體文件結(jié)構(gòu)。

          bash-4.2$ ls
          LICENSE.txt NOTICE.txt README.md data fields.yml heartbeat
          heartbeat.reference.yml heartbeat.yml kibana logs monitors.d

          在目錄中,有一個(gè)叫做 heartbeat.yml 的配置文件,這個(gè)文件就是上邊通過 --volume 參數(shù)掛載進(jìn)來的。同時(shí)在 monitor.d 目錄中,有一些不同監(jiān)控器配置的配置文件案例可供大家參考,heartbeat.reference.yaml 中則是最全的配置案例。

          接著,我們要使用如下命令來啟動 Heartbeat,讓它開始收集數(shù)據(jù)并向配置文件中指定的 Elasticsearch 中上報(bào)數(shù)據(jù)。

          ./heartbeat setup
          ./heartbeat -e

          查看上述命令的輸出日志沒有什么異常后,可以再次來到 Uptime Monitors 界面,點(diǎn)擊其 Check data 按鈕檢查是否接收到了數(shù)據(jù),如果接受到了數(shù)據(jù),則可以點(diǎn)擊 Uptime App 按鈕,前往 Uptime App 界面查看詳細(xì)數(shù)據(jù)。

          運(yùn)行過一段時(shí)間的 Uptime App 界面如下圖所示。

          我們可以看到界面分為兩大部分,上半部分是統(tǒng)計(jì)區(qū),通過餅圖和柱狀圖展示了當(dāng)前監(jiān)控器 Monitor 的狀態(tài)和過去一段時(shí)間中 Monitor 的狀態(tài)。而下半部分是具體的 Monitor 列表,一共有兩個(gè) Monitors,分別是監(jiān)聽 taobao 網(wǎng)和 aliyun 網(wǎng)站,目前兩個(gè)都是 Up 狀態(tài)。

          配置 Heartbeat

          上邊講解了安裝 Heartbeat 和 Uptime 的整體流程,本小節(jié)詳細(xì)解決一下 Heartbeat 的配置,也就是 heartbeat.yml 文件的配置。

          heartbeat.yml 文件一般有兩部分組成:

          ?監(jiān)控器配置 heartbeat.monitors,配置要監(jiān)控的目標(biāo)和監(jiān)控的方式;?輸出配置 output.elasticsearch,配置數(shù)據(jù)上報(bào)的 Elasticsearch 的地址,用戶名和密碼。

          比如說,上一小節(jié)我們啟動 docker 時(shí)指定的 heartbeat.yaml 文件如下所示:

          heartbeat.monitors:
          - type: http # 使用http方式監(jiān)控,還可以使用 TCP 和 ICMP
          schedule: '@every 5s' # 每 5s 抓取一次
          urls: # 需要監(jiān)控的 url 地址
          - https://cn.aliyun.com/
          - https://www.taobao.com/

          output.elasticsearch:
          hosts: '${ELASTICSEARCH_HOSTS:http://es-cn-n6w24fib900797tgz.public.elasticsearch.aliyuncs.com:9200}'
          username: '${ELASTICSEARCH_USERNAME:111}'
          password: '${ELASTICSEARCH_PASSWORD:111}'

          為了使 Heartbeat 知道要檢查的服務(wù),它需要一個(gè) URL 列表。

          heartbeat.yaml 中的 heartbeat.monitors 中指定了此配置。如上的 heartbeat.yaml 配置文件,對 cn.aliyun.com 和 www.taobao.com 兩個(gè)網(wǎng)址每隔 5s 進(jìn)行一次 HTTP 檢查。

          除了 HTTP 監(jiān)視器,Heartbeat 還可以進(jìn)行 TCP 和 ICMP 類型的檢查。

          heartbeat.monitors:
          - type: icmp
          schedule: '@every 5s'
          hosts:
          - http://cn.aliyun.com/
          - http://www.taobao.com/
          - type: tcp
          schedule: '@every 5s'
          hosts:
          - 127.0.0.1:8080

          此外,它還支持定義不同的檢查語句,例如,使用 HTTP 監(jiān)視器,可以檢查響應(yīng)代碼(code)、正文(body)和標(biāo)頭(header)。使用 TCP 監(jiān)視器,能定義端口檢查和字符串檢查。

          heartbeat.monitors:
          - type: http
          schedule: '@every 5s'
          urls:
          - https://cn.aliyun.com/
          # request details:
          check.request:
          method: GET
          check.response:
          body: "aliyun"

          如上的配置, Heartbeat 會每 5s 使用 GET 調(diào)用一次 https://cn.aliyun.com/ ,并在其 Response 的 Body 中尋找字符串 aliyun。如果沒有找到這個(gè)字符串,則本次檢查未通過。

          其他更加詳細(xì)的配置,你可以參考 heartbeat.reference.yml 文件。


          阿里云 Elastic Stack 實(shí)戰(zhàn)手冊 https://developer.aliyun.com/topic/elasticstack/playbook

          -關(guān)注我


          瀏覽 49
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩在线操 | 无卡无码| 国产精品免费观看视频 | 久久免费视频一区二区三区四区 | 麻豆精品无码 |