日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
放棄 ELK!SpringBoot接入輕量級(jí)分布式日志框架GrayLog

當(dāng)我們公司內(nèi)部部署很多服務(wù)以及測(cè)試、正式環(huán)境的時(shí)候,查看日志就變成了一個(gè)非常剛需的需求了。

在淮北等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),全網(wǎng)整合營(yíng)銷(xiāo)推廣,外貿(mào)網(wǎng)站制作,淮北網(wǎng)站建設(shè)費(fèi)用合理。

是多個(gè)環(huán)境的日志統(tǒng)一收集,然后使用 Nginx 對(duì)外提供服務(wù),還是使用專(zhuān)用的日志收集服務(wù) ELK 呢?這就變成了一個(gè)問(wèn)題!

而 Graylog 作為整合方案,使用 Elasticsearch 來(lái)存儲(chǔ),使用 MongoDB 來(lái)緩存,并且還有帶流量控制的(throttling),同時(shí)其界面查詢(xún)簡(jiǎn)單易用且易于擴(kuò)展。所以,使用 Graylog 成為了不二之選,為我們省了不少心。

一、Filebeat 工具介紹

1.Filebeat 日志文件托運(yùn)服務(wù)

Filebeat 是一個(gè)日志文件托運(yùn)工具,在你的服務(wù)器上安裝客戶(hù)端后,F(xiàn)ilebeat 會(huì)自動(dòng)監(jiān)控給定的日志目錄或者指定的日志文件,追蹤讀取這些文件,不停的讀取,并且轉(zhuǎn)發(fā)這些信息到 Elasticsearch 或者 Logstarsh 或者 Graylog 中存放。

2.Filebeat 工作流程介紹

當(dāng)你安裝并啟用 Filebeat 程序的時(shí)候,它會(huì)啟動(dòng)一個(gè)或多個(gè)探測(cè)器(prospectors)去檢測(cè)你指定的日志目錄或文件。

對(duì)于探測(cè)器找出的每一個(gè)日志文件,F(xiàn)ilebeat 都會(huì)啟動(dòng)一個(gè)收割進(jìn)程(harvester)。

每一個(gè)收割進(jìn)程讀取一個(gè)日志文件的最新內(nèi)容,并發(fā)送這些新的日志數(shù)據(jù)到處理程序(spooler),處理程序會(huì)集合這些事件。

最后 Filebeat 會(huì)發(fā)送集合的數(shù)據(jù)到你指定的地址上去(我們這里就是發(fā)送給 Graylog 服務(wù)了)。

3.Filebeat 圖示理解記憶

我們這里不適用 Logstash 服務(wù),主要是因?yàn)?Filebeat 相比于 Logstash 更加輕量級(jí)。

當(dāng)我們需要收集信息的機(jī)器配置或資源并不是特別多時(shí),且并沒(méi)有那么復(fù)雜的時(shí)候,還是建議使用 Filebeat 來(lái)收集日志。

日常使用中,F(xiàn)ilebeat 的安裝部署方式多樣且運(yùn)行十分穩(wěn) 定。

圖示服務(wù)架構(gòu)理解記憶

二、Filebeat 配置文件

配置 Filebeat 工具的核心就是如何編寫(xiě)其對(duì)應(yīng)的配置文件!

對(duì)應(yīng) Filebeat 工具的配置主要是通過(guò)編寫(xiě)其配置文件來(lái)控制的,對(duì)于通過(guò) rpm 或者 deb 包來(lái)安裝的情況,配置文件默認(rèn)會(huì)存儲(chǔ)在,/etc/filebeat/filebeat.yml 這個(gè)路徑下面。

而對(duì)于,對(duì)于 Mac 或者 Win 系統(tǒng)來(lái)說(shuō),請(qǐng)查看解壓文件中相關(guān)文件,其中都有涉及。

下面展示了 Filebeat 工具的主配置文件,注釋信息中都對(duì)其各個(gè)字段含義進(jìn)行了詳細(xì)的解釋?zhuān)疫@里就不再贅述了。

需要注意的是,我們將日志的輸入來(lái)源統(tǒng)統(tǒng)定義去讀取 inputs.d 目錄下的所有 yml 配置。

所以,我們可以更加不用的服務(wù)(測(cè)試、正式服務(wù))來(lái)定義不同的配置文件,根據(jù)物理機(jī)部署的實(shí)際情況具體配置。

# 配置輸入來(lái)源的日志信息# 我們合理將其配置到了 inputs.d 目錄下的所有 yml 文件filebeat.config.inputs:  enabled: true  path: ${path.config}/inputs.d/*.yml  # 若收取日志格式為 json 的 log 請(qǐng)開(kāi)啟此配置  # json.keys_under_root: true# 配置 Filebeat 需要加載的模塊filebeat.config.modules:  path: ${path.config}/modules.d/*.yml  reload.enabled: falsesetup.template.settings:  index.number_of_shards: 1# 配置將日志信息發(fā)送那個(gè)地址上面output.logstash:  hosts: ["11.22.33.44:5500"]# output.file:#   enable: trueprocessors:  - add_host_metadata: ~  - rename:      fields:        - from: "log"          to: "message"  - add_fields:      target: ""      fields:        # 加 Token 是為了防止無(wú)認(rèn)證的服務(wù)上 Graylog 服務(wù)發(fā)送數(shù)據(jù)        token: "0uxxxxaM-1111-2222-3333-VQZJxxxxxwgX "

下面展示一個(gè)簡(jiǎn)單的 inputs.d 目錄下面的 yml 配置文件的具體內(nèi)容,其主要作用就是配置單獨(dú)服務(wù)的獨(dú)立日志數(shù)據(jù),以及追加不同的數(shù)據(jù) tag 類(lèi)型。

# 收集的數(shù)據(jù)類(lèi)型- type: log  enabled: true  # 日志文件的路徑地址  paths:    - /var/log/supervisor/app_escape_worker-stderr.log    - /var/log/supervisor/app_escape_prod-stderr.log  symlinks: true  # 包含的關(guān)鍵字信息  include_lines: ["WARNING", "ERROR"]  # 打上數(shù)據(jù)標(biāo)簽  tags: ["app", "escape", "test"]  # 防止程序堆棧信息被分行識(shí)別  multiline.pattern: '^\[?[0-9]...{3}'  multiline.negate: true  multiline.match: after# 需要配置多個(gè)日志時(shí)可加多個(gè) type 字段- type: log  enabled: true  ......

需要注意的是,針對(duì)于不同的日志類(lèi)型,filebeat 還提供了不同了模塊來(lái)配置不同的服務(wù)日志以及其不同的模塊特性,比如我們常見(jiàn)的 PostgreSQl、Redis、Iptables 等。

# iptables- module: iptables  log:    enabled: true    var.paths: ["/var/log/iptables.log"]    var.input: "file"# postgres- module: postgresql  log:    enabled: true    var.paths: ["/path/to/log/postgres/*.log*"]# nginx- module: nginx  access:    enabled: true    var.paths: ["/path/to/log/nginx/access.log*"]  error:    enabled: true    var.paths: ["/path/to/log/nginx/error.log*"]

三、Graylog 服務(wù)介紹

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

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è)版本可以選擇。

2.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 中的核心服務(wù)組件

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ò)配置條件匹配日志,滿(mǎn)足條件的日志添加 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ò)訪(fǎng)問(wèn) Graylog 進(jìn)行集中式管理,支持 Linux 和 windows 系統(tǒng)。

Sidecar 守護(hù)進(jìn)程會(huì)定期訪(fǎng)問(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) > 6then  drop_message();end

日志集中保存到 Graylog 后就可以方便的使用搜索了。不過(guò)有時(shí)候還是需要對(duì)數(shù)據(jù)進(jìn)行近一步的處理。

主要有兩個(gè)途徑,分別是直接訪(fǎng)問(wèn) Elastic 中保存的數(shù)據(jù),或者通過(guò) Graylog 的 Output 轉(zhuǎn)發(fā)到其它服務(wù)。

五、服務(wù)安裝和部署

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

使用 Graylog 來(lái)收集日志

1.部署 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"]

2.部署 Graylog 服務(wù)

我們這里主要介紹使用 Docker 容器來(lái)部署服務(wù),如果你需要使用其他方式來(lái)部署的話(huà),請(qǐng)自行查看官方文檔對(duì)應(yīng)章節(jié)的安裝部署步驟。

在服務(wù)部署之前,我們需要給 Graylog 服務(wù)生成等相關(guān)信息,生成部署如下所示:

# 生成 password_secret 密碼(最少 16 位)$ sudo apt install -y pwgen$ pwgen -N 1 -s 16zscMb65...FxR9ag# 生成后續(xù) Web 登錄時(shí)所需要使用的密碼$ echo -n "Enter Password: " && head -1 

生成所需密碼信息之后,我們將如下 yml 信息保存到 docker-comopse.yml 文件中,使用 docker-compose 命令啟動(dòng)該服務(wù),即可完成部署。

之后,通過(guò)瀏覽器訪(fǎng)問(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ù)提供的訪(fǎng)問(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      - elasticsearchnetworks:  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 里面了。

使用 Graylog 來(lái)收集日志:

# [docker] 啟動(dòng)容器指定地址和 driverdocker 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)!

Graylog 界面功能

七、Spring Boot 集成GrayLog

首先創(chuàng)建一個(gè)SpringBoot項(xiàng)目,SpringBoot默認(rèn)自帶的日志框架是Logback,我們可以到 Graylog組件市場(chǎng)查找Logback相應(yīng)的組件。

添加依賴(lài)如下:

  de.siegmar  logback-gelf  3.0.0

接著在項(xiàng)目的resources目錄下,新建一個(gè)logback.xml文件,編輯文件內(nèi)容如下:

    ip    12201    508    true          false    true    true    false    false        true          %m%nopex              %d - [%thread] %-5level %logger{35} - %msg%n            app_name:austin  

在這個(gè)配置信息里,唯一要改的也只是 ip 的地址,到這里接入就完畢了,我們?cè)俅蜷_(kāi)控制臺(tái),就能看到日志的信息啦。

配置完成后啟動(dòng)項(xiàng)目,啟動(dòng)完成后正常情況下可以在Graylog的Search界面中查看日志信息:

點(diǎn)擊一條日志信息會(huì)展開(kāi)詳細(xì)的字段:

以上是最簡(jiǎn)單的日志配置,如果希望對(duì)更多配置項(xiàng)進(jìn)行自定義的話(huà),可以參考該組件的GitHub文檔,上面有具體的配置項(xiàng)說(shuō)明

現(xiàn)在我們已經(jīng)成功將項(xiàng)目的日志數(shù)據(jù)發(fā)送到了Graylog服務(wù),如果我們想在Graylog上檢索日志也很簡(jiǎn)單,只需要使用一些簡(jiǎn)單的語(yǔ)法即可,例如我要查詢(xún)包含Mapping的日志信息:

還可以使用一些條件表達(dá)式,例如我要查詢(xún)message字段包含http,并且日志級(jí)別為INFO的日志信息:

常用的日志搜索語(yǔ)法如下:

  • 模糊查詢(xún):直接輸入要查詢(xún)的內(nèi)容,例如:orderid
  • 精確查詢(xún):要查詢(xún)的內(nèi)容加上引號(hào),例如:"orderid: 11"
  • 指定字段查詢(xún):message:http 或 message:"http"
  • 多字段查詢(xún):message:(base-service base-web)
  • 多條件查詢(xún):message:http AND level_name:ERROR OR source:192.168.0.4

當(dāng)前標(biāo)題:放棄 ELK!SpringBoot接入輕量級(jí)分布式日志框架GrayLog
本文路徑:http://m.5511xx.com/article/cdjoeso.html