<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>

          比 ELK 更簡(jiǎn)潔、高效!企業(yè)級(jí)日志平臺(tái)后起之秀 Graylog!

          共 8197字,需瀏覽 17分鐘

           ·

          2021-03-14 00:23


          Graylog 服務(wù)介紹

          Graylog - 日志監(jiān)控系統(tǒng)

          Graylog 是一個(gè)開(kāi)源的日志聚合、分析、審計(jì)、展現(xiàn)和預(yù)警工具。在功能上來(lái)說(shuō),和 ELK 類(lèi)似,但又比 ELK 要簡(jiǎn)單很多。依靠著更加簡(jiǎn)潔,高效,部署使用簡(jiǎn)單的優(yōu)勢(shì)很快受到許多人的青睞。當(dāng)然,在擴(kuò)展性上面確實(shí)沒(méi)有比 ELK 好,但是其有商業(yè)版本可以選擇。

          Graylog - 工作流程介紹

          部署 graylog 最簡(jiǎn)單的架構(gòu)就是單機(jī)部署,復(fù)雜的也是部署集群模式,架構(gòu)圖示如下所示。我們可以看到其中包含了三個(gè)組件,分別是 Elasticsearch、MongoDb 和 Graylog。其中,Elasticsearch 用來(lái)持久化存儲(chǔ)和檢索日志文件數(shù)據(jù)(IO 密集),MongoDb 用來(lái)存儲(chǔ)關(guān)于 Graylog 的相關(guān)配置,而 Graylog 來(lái)提供 Web 界面和對(duì)外接口的(CPU 密集)。

          最小化單機(jī)部署最優(yōu)化集群部署

          Graylog 組件功能

          配置 Graylog 服務(wù)的核心就是理解對(duì)應(yīng)組件的功能以及其運(yùn)作方式!

          簡(jiǎn)單來(lái)講,Input 表示日志數(shù)據(jù)的來(lái)源,對(duì)不同來(lái)源的日志可以通過(guò) Extractors 來(lái)進(jìn)行日志的字段轉(zhuǎn)換,比如將 Nginx 的狀態(tài)碼變成對(duì)應(yīng)的英文表述等。然后,通過(guò)不同的標(biāo)簽類(lèi)型分組成不用的 Stream,并將這些日志數(shù)據(jù)存儲(chǔ)到指定的 Index 庫(kù)中進(jìn)行持久化保存。

          Graylog 通過(guò) Input 搜集日志,每個(gè) Input 單獨(dú)配置 Extractors 用來(lái)做字段轉(zhuǎn)換。Graylog 中日志搜索的基本單位是 Stream,每個(gè) Stream 可以有自己?jiǎn)为?dú)的 Elastic Index Set,也可以共享一個(gè) Index Set。

          Extractor 在 System/Input 中配置。Graylog 中很方便的一點(diǎn)就是可以加載一條日志,然后基于這個(gè)實(shí)際的例子進(jìn)行配置并能直接看到結(jié)果。內(nèi)置的 Extractor 基本可以完成各種字段提取和轉(zhuǎn)換的任務(wù),但是也有些限制,在應(yīng)用里寫(xiě)日志的時(shí)候就需要考慮到這些限制。Input 可以配置多個(gè) Extractors,按照順序依次執(zhí)行。

          系統(tǒng)會(huì)有一個(gè)默認(rèn)的 Stream,所有日志默認(rèn)都會(huì)保存到這個(gè) Stream 中,除非匹配了某個(gè) Stream,并且這個(gè) Stream 里配置了不保存日志到默認(rèn) Stream??梢酝ㄟ^(guò)菜單 Streams 創(chuàng)建更多的 Stream,新創(chuàng)建的 Stream 是暫停狀態(tài),需要在配置完成后手動(dòng)啟動(dòng)。Stream 通過(guò)配置條件匹配日志,滿足條件的日志添加 stream ID 標(biāo)識(shí)字段并保存到對(duì)應(yīng)的 Elastic Index Set 中。

          Index Set 通過(guò)菜單 System/Indices 創(chuàng)建。日志存儲(chǔ)的性能,可靠性和過(guò)期策略都通過(guò) Index Set 來(lái)配置。性能和可靠性就是配置 Elastic Index 的一些參數(shù),主要參數(shù)包括,Shards 和 Replicas。

          除了上面提到的日志處理流程,Graylog 還提供了 Pipeline 腳本實(shí)現(xiàn)更靈活的日志處理方案。這里不詳細(xì)闡述,只介紹如果使用 Pipelines 來(lái)過(guò)濾不需要的日志。下面是丟棄 level > 6 的所有日志的 Pipeline Rule 的例子。從數(shù)據(jù)采集(input),字段解析(extractor),分流到 stream,再到 pipeline 的清洗,一氣呵成,無(wú)需在通過(guò)其他方式進(jìn)行二次加工。

          Sidecar 是一個(gè)輕量級(jí)的日志采集器,通過(guò)訪問(wèn) graylog 進(jìn)行集中式管理,支持 linux 和 windows 系統(tǒng)。Sidecar 守護(hù)進(jìn)程會(huì)定期訪問(wèn) graylog 的 REST API 接口獲取 Sidecar 配置文件中定義的標(biāo)簽(tag) ,Sidecar 在首次運(yùn)行時(shí)會(huì)從 graylog 服務(wù)器拉取配置文件中指定標(biāo)簽(tag) 的配置信息同步到本地。目前 Sidecar 支持 NXLog,F(xiàn)ilebeat 和 Winlogbeat。他們都通過(guò) graylog 中的 web 界面進(jìn)行統(tǒng)一配置,支持 Beats、CEF、Gelf、Json API、NetFlow 等輸出類(lèi)型。Graylog 最厲害的在于可以在配置文件中指定 Sidecar 把日志發(fā)送到哪個(gè) graylog 群集,并對(duì) graylog 群集中的多個(gè) input 進(jìn)行負(fù)載均衡,這樣在遇到日志量非常龐大的時(shí)候,graylog 也能應(yīng)付自如。

          rule "discard debug messages"
          when
            to_long($message.level) > 6
          then
            drop_message();
          end

          日志集中保存到 Graylog 后就可以方便的使用搜索了。不過(guò)有時(shí)候還是需要對(duì)數(shù)據(jù)進(jìn)行近一步的處理。主要有兩個(gè)途徑,分別是直接訪問(wèn) Elastic 中保存的數(shù)據(jù),或者通過(guò) Graylog 的 Output 轉(zhuǎn)發(fā)到其它服務(wù)。

          服務(wù)安裝和部署

          主要介紹部署 Filebeat + Graylog 的安裝步驟和注意事項(xiàng)!

          部署 Filebeat 工具

          官方提供了多種的部署方式,包括通過(guò) rpm 和 deb 包安裝服務(wù),以及源代碼編譯的方式安裝服務(wù),同時(shí)包括了使用 Docker 或者 kubernetes 的方式安裝服務(wù)。我們根據(jù)自己的實(shí)際需要,進(jìn)行安裝即可。

          # Ubuntu(deb)
          $ curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.8.1-amd64.deb
          $ sudo dpkg -i filebeat-7.8.1-amd64.deb
          $ sudo systemctl enable filebeat
          $ sudo service filebeat start
          # 使用docker啟動(dòng)
          docker run -d --name=filebeat --user=root \
            --volume="./filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \
            --volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" \
            --volume="/var/run/docker.sock:/var/run/docker.sock:ro" \
            docker.elastic.co/beats/filebeat:7.8.1 filebeat -e -strict.perms=false \
            -E output.elasticsearch.hosts=["elasticsearch:9200"]

          部署 Graylog 服務(wù)

          我們這里主要介紹使用 Docker 容器來(lái)部署服務(wù),如果你需要使用其他方式來(lái)部署的話,請(qǐng)自行查看官方文檔對(duì)應(yīng)章節(jié)的安裝部署步驟。在服務(wù)部署之前,我們需要給 Graylog 服務(wù)生成等相關(guān)信息,生成部署如下所示:

          # 生成password_secret密碼(最少16位)
          $ sudo apt install -y pwgen
          $ pwgen -N 1 -s 16
          zscMb65...FxR9ag

          # 生成后續(xù)Web登錄時(shí)所需要使用的密碼
          echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
          Enter Password: zscMb65...FxR9ag
          77e29e0f...557515f

          生成所需密碼信息之后,我們將如下 yml 信息保存到 docker-comopse.yml 文件中,使用 docker-compose 命令啟動(dòng)該服務(wù),即可完成部署。之后,通過(guò)瀏覽器訪問(wèn)對(duì)應(yīng)服務(wù)器地址的 9000 端口,即可登錄主頁(yè) 。

          version: "3"

          services:
            mongo:
              restart: on-failure
              container_name: graylog_mongo
              image: "mongo:3"
              volumes:
                - "./mongodb:/data/db"
              networks:
                - graylog_network

            elasticsearch:
              restart: on-failure
              container_name: graylog_es
              image: "elasticsearch:6.8.5"
              volumes:
                - "./es_data:/usr/share/elasticsearch/data"
              environment:
                - http.host=0.0.0.0
                - transport.host=localhost
                - network.host=0.0.0.0
                - "ES_JAVA_OPTS=-Xms512m -Xmx5120m"
              ulimits:
                memlock:
                  soft: -1
                  hard: -1
              deploy:
                resources:
                  limits:
                    memory: 12g
              networks:
                - graylog_network

            graylog:
              restart: on-failure
              container_name: graylog_web
              image: "graylog/graylog:3.3"
              ports:
                - 9000:9000 # Web服務(wù)提供的訪問(wèn)端口
                - 5044:5044 # Filebeat工具提供端口
                - 12201:12201 # GELF TCP
                - 12201:12201/udp # GELF UDP
                - 1514:1514 # Syslog TCP
                - 1514:1514/udp # Syslog UDP
              volumes:
                - "./graylog_journal:/usr/share/graylog/data/journal"
              environment:
                - GRAYLOG_PASSWORD_SECRET=zscMb65...FxR9ag
                - GRAYLOG_ROOT_PASSWORD_SHA2=77e29e0f...557515f
                - GRAYLOG_HTTP_EXTERNAL_URI=http://11.22.33.44:9000/
                - GRAYLOG_TIMEZONE=Asia/Shanghai
                - GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai
              networks:
                - graylog
              depends_on:
                - mongo
                - elasticsearch

          networks:
            graylog_network:
              driver: bridge

          需要注意的是,GELF(Graylog Extended Log Format) 的 input 模式可以接受結(jié)構(gòu)化的事件,支持壓縮和分塊。恰好,Docker 服務(wù)的 log-driver 驅(qū)動(dòng)原生提供了 GELF 的支持。只需要我們?cè)?Graylog 的 system/inputs 下面創(chuàng)建對(duì)應(yīng)的 input 之后,啟動(dòng)容器時(shí)候指定 log-driver,就可以將容器內(nèi)的輸出都會(huì)發(fā)送到 Graylog 里面了。

          # [docker] 啟動(dòng)容器指定地址和driver
          docker run --rm=true \
              --log-driver=gelf \
              --log-opt gelf-address=udp://11.22.33.44:12201 \
              --log-opt tag=myapp \
              myapp:0.0.1
          # [docker-compose] 啟動(dòng)使用方式
          version: "3"
          services:
            redis:
              restart: always
              image: redis
              container_name: "redis"
              logging:
                driver: gelf
                options:
                  gelf-address: udp://11.22.33.44:12201
                  tag: "redis"
            ......

          Graylog 界面功能

          主要介紹 Graylog 界面的相關(guān)功能和對(duì)應(yīng)特點(diǎn)!

          作者: Escape 鏈接: https://www.escapelife.site/posts/38c81b25.html


          推薦閱讀:

          金三銀四跳槽,什么樣的Leader是好Leader

          企業(yè)IT技術(shù)架構(gòu)規(guī)劃方案

          華為內(nèi)網(wǎng)最火的文章:什么是內(nèi)卷?

          不是你需要中臺(tái),而是一名合格的架構(gòu)師(附各大廠中臺(tái)建設(shè)PPT)

          華為內(nèi)部幾近滿分的項(xiàng)目管理PPT,牛逼了

          阿里達(dá)摩院《機(jī)器學(xué)習(xí)算法學(xué)習(xí)指南》火了,限時(shí)開(kāi)放下載!

          小米用戶畫(huà)像實(shí)戰(zhàn),48頁(yè)P(yáng)PT下載

          GO語(yǔ)言版《算法進(jìn)階指南》火了,完整版PDF下載!

          瀏覽 54
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  肏屄视频在线免费观看 | 欧美a片一区二区三区 | 午夜黄色视频在线观看 | 国产精品一卡二卡三卡四卡 | 亚洲性爱操逼大片 |