成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ELK不香了!我用Graylog

開發 前端 開發工具
當我們公司內部部署很多服務以及測試、正式環境的時候,查看日志就變成了一個非常剛需的需求了。

當我們公司內部部署很多服務以及測試、正式環境的時候,查看日志就變成了一個非常剛需的需求了。

[[438003]]

圖片來自 包圖網

是多個環境的日志統一收集,然后使用 Nginx 對外提供服務,還是使用專用的日志收集服務 ELK 呢?這就變成了一個問題!

[[438004]]

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

Filebeat 工具介紹

①Filebeat 日志文件托運服務

Filebeat 是一個日志文件托運工具,在你的服務器上安裝客戶端后,Filebeat 會自動監控給定的日志目錄或者指定的日志文件,追蹤讀取這些文件,不停的讀取,并且轉發這些信息到 Elasticsearch 或者 Logstarsh 或者 Graylog 中存放。

②Filebeat 工作流程介紹

當你安裝并啟用 Filebeat 程序的時候,它會啟動一個或多個探測器(prospectors)去檢測你指定的日志目錄或文件。

對于探測器找出的每一個日志文件,Filebeat 都會啟動一個收割進程(harvester)。

每一個收割進程讀取一個日志文件的最新內容,并發送這些新的日志數據到處理程序(spooler),處理程序會集合這些事件。

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

③Filebeat 圖示理解記憶

我們這里不適用 Logstash 服務,主要是因為 Filebeat 相比于 Logstash 更加輕量級。

當我們需要收集信息的機器配置或資源并不是特別多時,且并沒有那么復雜的時候,還是建議使用 Filebeat 來收集日志。

日常使用中,Filebeat 的安裝部署方式多樣且運行十分穩定。

圖示服務架構理解記憶

Filebeat 配置文件

配置 Filebeat 工具的核心就是如何編寫其對應的配置文件!

對應 Filebeat 工具的配置主要是通過編寫其配置文件來控制的,對于通過 rpm 或者 deb 包來安裝的情況,配置文件默認會存儲在,/etc/filebeat/filebeat.yml 這個路徑下面。

而對于,對于 Mac 或者 Win 系統來說,請查看解壓文件中相關文件,其中都有涉及。

下面展示了 Filebeat 工具的主配置文件,注釋信息中都對其各個字段含義進行了詳細的解釋,我這里就不再贅述了。

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

所以,我們可以更加不用的服務(測試、正式服務)來定義不同的配置文件,根據物理機部署的實際情況具體配置。

  1. # 配置輸入來源的日志信息 
  2. # 我們合理將其配置到了 inputs.d 目錄下的所有 yml 文件 
  3. filebeat.config.inputs: 
  4.   enabled: true 
  5.   path: ${path.config}/inputs.d/*.yml 
  6.   # 若收取日志格式為 json 的 log 請開啟此配置 
  7.   # json.keys_under_root: true 
  8.  
  9. # 配置 Filebeat 需要加載的模塊 
  10. filebeat.config.modules: 
  11.   path: ${path.config}/modules.d/*.yml 
  12.   reload.enabled: false 
  13.  
  14. setup.template.settings: 
  15.   index.number_of_shards: 1 
  16.  
  17. # 配置將日志信息發送那個地址上面 
  18. output.logstash: 
  19.   hosts: ["11.22.33.44:5500"
  20.  
  21. output.file: 
  22. #   enable: true 
  23.  
  24. processors: 
  25.   - add_host_metadata: ~ 
  26.   - rename: 
  27.       fields: 
  28.         - from"log" 
  29.           to"message" 
  30.   - add_fields: 
  31.       target: "" 
  32.       fields: 
  33.         # 加 Token 是為了防止無認證的服務上 Graylog 服務發送數據 
  34.         token: "0uxxxxaM-1111-2222-3333-VQZJxxxxxwgX " 

下面展示一個簡單的 inputs.d 目錄下面的 yml 配置文件的具體內容,其主要作用就是配置單獨服務的獨立日志數據,以及追加不同的數據 tag 類型。

  1. # 收集的數據類型 
  2. - type: log 
  3.   enabled: true 
  4.   # 日志文件的路徑地址 
  5.   paths: 
  6.     - /var/log/supervisor/app_escape_worker-stderr.log 
  7.     - /var/log/supervisor/app_escape_prod-stderr.log 
  8.   symlinks: true 
  9.   # 包含的關鍵字信息 
  10.   include_lines: ["WARNING""ERROR"
  11.   # 打上數據標簽 
  12.   tags: ["app""escape""test"
  13.   # 防止程序堆棧信息被分行識別 
  14.   multiline.pattern: '^\[?[0-9]...{3}' 
  15.   multiline.negate: true 
  16.   multiline.match: after 
  17.  
  18. # 需要配置多個日志時可加多個 type 字段 
  19. - type: log 
  20.   enabled: true 
  21.   ...... 

需要注意的是,針對于不同的日志類型,filebeat 還提供了不同了模塊來配置不同的服務日志以及其不同的模塊特性,比如我們常見的 PostgreSQl、Redis、Iptables 等。

  1. # iptables 
  2. - module: iptables 
  3.   log: 
  4.     enabled: true 
  5.     var.paths: ["/var/log/iptables.log"
  6.     var.input: "file" 
  7.  
  8. # postgres 
  9. - module: postgresql 
  10.   log: 
  11.     enabled: true 
  12.     var.paths: ["/path/to/log/postgres/*.log*"
  13.  
  14. # nginx 
  15. - module: nginx 
  16.   access: 
  17.     enabled: true 
  18.     var.paths: ["/path/to/log/nginx/access.log*"
  19.   error: 
  20.     enabled: true 
  21.     var.paths: ["/path/to/log/nginx/error.log*"

Graylog 服務介紹

①Graylog 日志監控系統

Graylog 是一個開源的日志聚合、分析、審計、展現和預警工具。在功能上來說,和 ELK 類似,但又比 ELK 要簡單很多。

依靠著更加簡潔,高效,部署使用簡單的優勢很快受到許多人的青睞。當然,在擴展性上面確實沒有比 ELK 好,但是其有商業版本可以選擇。

②Graylog 工作流程介紹

部署 Graylog 最簡單的架構就是單機部署,復雜的也是部署集群模式,架構圖示如下所示。

我們可以看到其中包含了三個組件,分別是 Elasticsearch、MongoDB 和 Graylog。

其中,Elasticsearch 用來持久化存儲和檢索日志文件數據(IO 密集),MongoDB 用來存儲關于 Graylog 的相關配置,而 Graylog 來提供 Web 界面和對外接口的(CPU 密集)。

最小化單機部署

最優化集群部署

Graylog 組件功能

配置 Graylog 服務的核心就是理解對應組件的功能以及其運作方式!

簡單來講,Input 表示日志數據的來源,對不同來源的日志可以通過 Extractors 來進行日志的字段轉換,比如將 Nginx 的狀態碼變成對應的英文表述等。

然后,通過不同的標簽類型分組成不用的 Stream,并將這些日志數據存儲到指定的 Index 庫中進行持久化保存。

Graylog 中的核心服務組件

Graylog 通過 Input 搜集日志,每個 Input 單獨配置 Extractors 用來做字段轉換。

Graylog 中日志搜索的基本單位是 Stream,每個 Stream 可以有自己單獨的 Elastic Index Set,也可以共享一個 Index Set。

Extractor 在 System/Input 中配置。Graylog 中很方便的一點就是可以加載一條日志,然后基于這個實際的例子進行配置并能直接看到結果。

內置的 Extractor 基本可以完成各種字段提取和轉換的任務,但是也有些限制,在應用里寫日志的時候就需要考慮到這些限制。Input 可以配置多個 Extractors,按照順序依次執行。

系統會有一個默認的 Stream,所有日志默認都會保存到這個 Stream 中,除非匹配了某個 Stream,并且這個 Stream 里配置了不保存日志到默認 Stream。

可以通過菜單 Streams 創建更多的 Stream,新創建的 Stream 是暫停狀態,需要在配置完成后手動啟動。

Stream 通過配置條件匹配日志,滿足條件的日志添加 stream ID 標識字段并保存到對應的 Elastic Index Set 中。

Index Set 通過菜單 System/Indices 創建。日志存儲的性能,可靠性和過期策略都通過 Index Set 來配置。

性能和可靠性就是配置 Elastic Index 的一些參數,主要參數包括,Shards 和 Replicas。

除了上面提到的日志處理流程,Graylog 還提供了 Pipeline 腳本實現更靈活的日志處理方案。

這里不詳細闡述,只介紹如果使用 Pipelines 來過濾不需要的日志。下面是丟棄 level > 6 的所有日志的 Pipeline Rule 的例子。

從數據采集(input),字段解析(extractor),分流到 stream,再到 Pipeline 的清洗,一氣呵成,無需在通過其他方式進行二次加工。

Sidecar 是一個輕量級的日志采集器,通過訪問 Graylog 進行集中式管理,支持 Linux 和 windows 系統。

Sidecar 守護進程會定期訪問 Graylog 的 REST API 接口獲取 Sidecar 配置文件中定義的標簽(tag),Sidecar 在首次運行時會從 Graylog 服務器拉取配置文件中指定標簽(tag)的配置信息同步到本地。

目前 Sidecar 支持 NXLog,Filebeat 和 Winlogbeat。他們都通過 Graylog 中的 web 界面進行統一配置,支持 Beats、CEF、Gelf、Json API、NetFlow 等輸出類型。

Graylog 最厲害的在于可以在配置文件中指定 Sidecar 把日志發送到哪個 Graylog 群集,并對 Graylog 群集中的多個 input 進行負載均衡,這樣在遇到日志量非常龐大的時候,Graylog 也能應付自如。

  1. rule "discard debug messages" 
  2. when 
  3.   to_long($message.level) > 6 
  4. then 
  5.   drop_message(); 
  6. end 

日志集中保存到 Graylog 后就可以方便的使用搜索了。不過有時候還是需要對數據進行近一步的處理。

主要有兩個途徑,分別是直接訪問 Elastic 中保存的數據,或者通過 Graylog 的 Output 轉發到其它服務。

服務安裝和部署

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

使用 Graylog 來收集日志

①部署 Filebeat 工具

官方提供了多種的部署方式,包括通過 rpm 和 deb 包安裝服務,以及源代碼編譯的方式安裝服務,同時包括了使用 Docker 或者 kubernetes 的方式安裝服務。

我們根據自己的實際需要,進行安裝即可:

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

②部署 Graylog 服務

我們這里主要介紹使用 Docker 容器來部署服務,如果你需要使用其他方式來部署的話,請自行查看官方文檔對應章節的安裝部署步驟。

在服務部署之前,我們需要給 Graylog 服務生成等相關信息,生成部署如下所示:

  1. # 生成 password_secret 密碼(最少 16 位) 
  2. $ sudo apt install -y pwgen 
  3. $ pwgen -N 1 -s 16 
  4. zscMb65...FxR9ag 
  5.  
  6. # 生成后續 Web 登錄時所需要使用的密碼 
  7. $ echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1 
  8. Enter Password: zscMb65...FxR9ag 
  9. 77e29e0f...557515f 

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

  1. version: "3" 
  2.  
  3. services: 
  4.   mongo: 
  5.     restart: on-failure 
  6.     container_name: graylog_mongo 
  7.     image: "mongo:3" 
  8.     volumes: 
  9.       - "./mongodb:/data/db" 
  10.     networks: 
  11.       - graylog_network 
  12.  
  13.   elasticsearch: 
  14.     restart: on-failure 
  15.     container_name: graylog_es 
  16.     image: "elasticsearch:6.8.5" 
  17.     volumes: 
  18.       - "./es_data:/usr/share/elasticsearch/data" 
  19.     environment: 
  20.       - http.host=0.0.0.0 
  21.       - transport.host=localhost 
  22.       - network.host=0.0.0.0 
  23.       - "ES_JAVA_OPTS=-Xms512m -Xmx5120m" 
  24.     ulimits: 
  25.       memlock: 
  26.         soft: -1 
  27.         hard: -1 
  28.     deploy: 
  29.       resources: 
  30.         limits: 
  31.           memory: 12g 
  32.     networks: 
  33.       - graylog_network 
  34.  
  35.   graylog: 
  36.     restart: on-failure 
  37.     container_name: graylog_web 
  38.     image: "graylog/graylog:3.3" 
  39.     ports: 
  40.       - 9000:9000 # Web 服務提供的訪問端口 
  41.       - 5044:5044 # Filebeat 工具提供端口 
  42.       - 12201:12201 # GELF TCP 
  43.       - 12201:12201/udp # GELF UDP 
  44.       - 1514:1514 # Syslog TCP 
  45.       - 1514:1514/udp # Syslog UDP 
  46.     volumes: 
  47.       - "./graylog_journal:/usr/share/graylog/data/journal" 
  48.     environment: 
  49.       - GRAYLOG_PASSWORD_SECRET=zscMb65...FxR9ag 
  50.       - GRAYLOG_ROOT_PASSWORD_SHA2=77e29e0f...557515f 
  51.       - GRAYLOG_HTTP_EXTERNAL_URI=http://11.22.33.44:9000/ 
  52.       - GRAYLOG_TIMEZONE=Asia/Shanghai 
  53.       - GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai 
  54.     networks: 
  55.       - graylog 
  56.     depends_on: 
  57.       - mongo 
  58.       - elasticsearch 
  59.  
  60. networks: 
  61.   graylog_network: 
  62.     driver: bridge 

之后,通過瀏覽器訪問對應服務器地址的 9000 端口,即可登錄主頁。

需要注意的是,GELF(Graylog Extended Log Format)的 input 模式可以接受結構化的事件,支持壓縮和分塊。恰好,Docker 服務的 log-driver 驅動原生提供了 GELF 的支持。

只需要我們在 Graylog 的 system/inputs 下面創建對應的 input 之后,啟動容器時候指定 log-driver,就可以將容器內的輸出都會發送到 Graylog 里面了。

使用 Graylog 來收集日志

  1. # [docker] 啟動容器指定地址和 driver 
  2. docker run --rm=true \ 
  3.     --log-driver=gelf \ 
  4.     --log-opt gelf-address=udp://11.22.33.44:12201 \ 
  5.     --log-opt tag=myapp \ 
  6.     myapp:0.0.1 
  1. # [docker-compose] 啟動使用方式 
  2. version: "3" 
  3. services: 
  4.   redis: 
  5.     restart: always 
  6.     image: redis 
  7.     container_name: "redis" 
  8.     logging: 
  9.       driver: gelf 
  10.       options: 
  11.         gelf-address: udp://11.22.33.44:12201 
  12.         tag: "redis" 
  13.   ...... 

Graylog 界面功能

主要介紹 Graylog 界面的相關功能和對應特點!

作者:Escape

編輯:陶家龍

來源:escapelife.site/posts/38c81b25.html

責任編輯:武曉燕 來源: escapelife.site
相關推薦

2021-12-03 10:46:49

ELKGraylog運維

2020-01-21 21:15:16

WiFi網絡WiFi6

2025-06-25 09:31:41

2021-12-05 23:17:18

iOS蘋果系統

2020-07-03 15:10:35

Java Rust 開發

2021-01-11 08:03:30

阿里中臺項目

2022-03-22 09:20:57

應用線程池技術

2023-10-09 08:53:40

死鎖問題鎖粒度

2021-06-27 17:33:51

培訓員工AI人工智能

2020-05-25 10:37:58

自學編程技巧

2020-12-25 09:07:38

EclipseCode工具

2020-09-25 15:50:41

鴻蒙小米國產

2020-10-12 09:48:55

SSR JSPPHP

2024-02-01 08:21:40

2024-06-21 09:51:17

2020-12-21 07:36:15

緩存數據庫緩存層

2020-05-09 10:18:31

Java開源工具

2020-02-18 07:22:48

微軟WindowsWindows 10

2022-05-26 10:28:59

Ubuntu桌面

2024-04-29 08:42:23

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品美女久久久 | 国产一区二区三区免费观看在线 | 久在线观看 | 三级在线视频 | 亚洲高清一区二区三区 | 久久99视频| 精品中文在线 | 日韩在线观看中文字幕 | 亚洲精品视 | 在线免费观看黄色 | 91五月天 | 国产精品一区二区久久 | 精品视频一区在线 | 亚洲精品在线视频 | 成人在线视频观看 | 日本精品在线播放 | 日韩视频 中文字幕 | 久久男女视频 | 日韩免费一二三区 | 国产在线中文字幕 | 亚洲一区二区三区四区五区中文 | 久久国产三级 | 国产精品久久久亚洲 | 在线中文字幕日韩 | 国产精品永久 | 久久国产精品免费一区二区三区 | 欧美 日韩 国产 一区 | 欧美一级视频免费看 | 中文精品久久 | 成人污污视频 | 日韩在线资源 | 日本精品一区二区三区视频 | 精品欧美乱码久久久久久1区2区 | 欧美啪啪| www狠狠爱com| 久久激情视频 | 国产1区2区在线观看 | 神马久久久久久久久久 | 97色在线视频 | 91久久久久久久久久久久久 | 激情六月天 |