操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    0、前言

    本篇文件詳細講述了在Centos7系統中搭建ELK&在Spring Boot項目中整合ELK的操作步驟。

    1、ELK簡介

    ELK是ElasticsearchLogstashKibana三個開源項目的項目名稱首字母縮寫。這三個開源項目一起為我們提供了一個成熟且強大的實時日志集中處理解決方案。其中,Logstash負責收集日志數據,Elasticsearch用于存儲并索引數據,Kibana提供了一個可視化界面查看Elasticsearch中存儲的日志數據。

    2、環境&版本

    服務器系統版本、JDK版本、ELK版本信息如下:

    環境

    版本

    端口號

    Centos

    7.9


    JDK

    1.8


    Elasticsearch

    7.2.1

    39100

    Logstash

    7.2.1

    39102

    Kibana

    7.2.1

    39101

    ElasticsearchLogstashKibana三個開源項目都需要在Java環境下運行,所以需要提前在服務器上安裝JDK。

    筆者汪小成這里安裝的是JDK1.8。本文中沒有講述JDK的安裝,有需要的朋友可以參數《Centos7 | 安裝JDK1.8》這篇文章。

    3、Elasticsearch

    3.1、下載Elasticsearch

    $ wget –c  https://mirrors.huaweicloud.com/elasticsearch/7.2.1/elasticsearch-7.2.1-x86_64.rpm

    為了更快的下載速度,筆者汪小成選擇在華為開源鏡像站下載Elasticsearch。

    3.2、安裝Elasticsearch

    $ rpm -ivh elasticsearch-7.2.1-x86_64.rpm

    3.3、配置Elasticsearch

    Elasticsearch配置文件位置:/etc/elasticsearch

    進入配置文件所在文件夾:

    $ cd /etc/elasticsearch

    備份配置文件(非必要):

    $ cp elasticsearch.yml elasticsearch.backup.yml

    使用vim打開elasticsearch.yml配置文件,按下i進入編輯模式。修改內容如下:

    network.host: 0.0.0.0
    http.port: 39100
    discovery.seed_hosts: ["127.0.0.1:39100"]

    配置項說明:

    network.host用于設置綁定的主機地址,可以是IP地址或主機名。http.port用于設置監聽的HTTP端口,出于一些特殊原因,筆者汪小成將elasticsearch的端口號由默認的9200修改為39100discovery.seed_hosts用于設置集群節點的種子主機地址,用于節點發現和加入集群。

    3.4、啟動Elasticsearch

    # 啟動Elasticsearch
    $ sudo systemctl start elasticsearch

    將Elasticsearch設置為開機啟動(非必要):

    # 將Elasticsearch設置為開機自啟
    $ sudo systemctl enable elasticsearch

    查看Elasticsearch的運行狀態:

    $ sudo systemctl status elasticsearch

    或者,使用如下命令檢查Elasticsearch是否啟動成功:

    # 檢查Elasticsearch是否啟動成功
    $ netstat -antp | grep 39100

    待Elasticsearch啟動成功后,可以使用curl命令來測試Elasticsearch是否正常運行。例如:

    $ curl http://127.0.0.1:39100

    如果返回類似以下內容,說明Elasticsearch已經成功運行:

    {
      "name" : "localhost.localdomain",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "NqlpN5iJQmeSV_TvHqPo6w",
      "version" : {
        "number" : "7.2.1",
        "build_flavor" : "default",
        "build_type" : "rpm",
        "build_hash" : "fe6cb20",
        "build_date" : "2019-07-24T17:58:29.979462Z",
        "build_snapshot" : false,
        "lucene_version" : "8.0.0",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }

    最后,使用如下命令修改Centos防火墻配置開放端口號供外訪問:

    $ sudo firewall-cmd --zone=public --add-port=39100/tcp --permanent

    重新加載防火墻規則以使更改生效:

    $ sudo firewall-cmd --reload

    4、Logstash

    4.1、下載Logstash

    在華為開源鏡像站下載Logstash:

    $ wget –c https://repo.huaweicloud.com/logstash/7.2.1/logstash-7.2.1.rpm

    4.2、安裝Logstash

    $ rpm -ivh logstash-7.2.1.rpm

    4.3、配置Logstash

    /etc/logstash/conf.d文件夾下創建logstash.conf配置文件,配置文件內容如下:

    input {
        tcp {
            host=> "0.0.0.0"
            port=> 39102
            mode=> "server"
            codec=> json_lines
        }
    
    }
    output {
        elasticsearch {
            hosts=> "localhost:39100"
            index=> "%{[appname]}-%{+YYYY.MM.dd}"
        }
    }

    配置說明:

    • input - 用于定義數據的輸入源,即Logstash的數據來源。
      • tcp - 用于指定Logstash監聽指定的IP和端口,接收 TCP 連接傳入的數據。
        • host - 監聽的主機IP地址,這里的0.0.0.0表示監聽所有可用的網絡接口。
        • port - 監聽的端口號。筆者汪小成這里將端口號由默認的9600改為了39102
        • mode - 連接模式。
        • codec - 數據編碼解碼方式,json_lines表示接收到的數據將以JSON行的形式解析。
    • output - 用于定義數據的輸出目錄。
      • elasticsearch - 表示將數據輸出到Elasticsearch集群。
        • hosts - 用于設置Elasticsearch集群的主機地址和端口號。
        • index - 用于指定Elasticsearch索引的名稱。這里使用 %{[appname]} 表示索引名稱從數據中的appname字段獲取。%{+YYYY.MM.dd}表示在索引中包含日期信息。

    4.4、啟動Logstash

    $ sudo systemctl start logstash

    最后,使用如下命令修改Centos防火墻配置開放端口號供外訪問:

    $ sudo firewall-cmd --zone=public --add-port=39102/tcp --permanent

    重新加載防火墻規則以使更改生效:

    $ sudo firewall-cmd --reload

    5、Kibana

    5.1、下載Kibana

    $ wget –c https://repo.huaweicloud.com/kibana/7.2.1/kibana-7.2.1-x86_64.rpm

    5.2、安裝Kibana

    $ rpm -ivh kibana-7.2.1-x86_64.rpm

    5.3、配置Kibana

    進入/etc/kibana文件夾,修改kibana.yml配置文件中如下內容:

    server.port: 39101
    server.host: "0.0.0.0"
    elasticsearch.hosts: ["http://localhost:39100"]
    i18n.locale: "zh-CN"

    配置說明:

    • server.port - 用于指定Kibana服務監聽的端口號,這里筆者汪小成將端口號由默認的5601改成了39101
    • server.host - 用于指定Kibana服務監聽的主機地址。"0.0.0.0"表示監聽所有可用的網絡接口,即可以從任意IP地址訪問Kibana。
    • elasticsearch.hosts - 用于設置Elasticsearch集群的主機地址和端口號。
    • i18n.locale - 用于設置界面語言,這里將界面語言設置成了中文。

    5.4、啟動Kibana

    $ sudo systemctl start kibana

    最后,使用如下命令修改Centos防火墻配置開放端口號供外訪問:

    $ sudo firewall-cmd --zone=public --add-port=39101/tcp --permanent

    重新加載防火墻規則以使更改生效:

    $ sudo firewall-cmd --reload

    6、SpringBoot集成ELK

    Spring Boot應用輸出日志到ELK的流程如下圖所示:

    流程圖說明:

    1. Spring Boot應用產生日志數據,使用Logback日志框架記錄日志。
    2. Logstash作為日志收集器,接收Spring Boot應用發送的日志數據。
    3. Logstash解析和過濾日志數據,可能會對其進行格式化和處理。
    4. 處理后的日志數據被發送到ElasticsearchElasticsearch將日志數據存儲在分布式索引中。
    5. Kibana連接到Elasticsearch,可以查看存儲在Elasticsearch中的日志數據。

    6.1、添加依賴

    修改pom.xml文件,添加如下配置:

    <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>7.2</version>
    </dependency>

    6.2、修改Logback配置

    修改Logback的配置文件:

    +<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    +    <!-- 端口是在logstach.conf中配置的 -->
    +    <destination>60.211.159.140:39102</destination>
    +    <!-- encoder必須配置,有多種可選 -->
    +    <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
    +        <!-- "appname":"spring-boot-lee" 的作用是指定創建索引的名字時用,并且在生成的文檔中會多了這個字段,切記小寫  -->
    +        <customFields>{"appname":"spring-boot-elk"}</customFields>
    +    </encoder>
    +</appender>
    
    <!-- 日志輸出級別 -->
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
    +    <appender-ref ref="LOGSTASH"/>
    </root>

    6.3、啟動SpringBoot項目

    這一步,筆者汪小成就不廢話了。

    6.4、在Kibana中查看日志

    1、在瀏覽器地址樣中輸入服務器IP+Kibana端口號 --> 點擊管理 --> 點擊索引模式 --> 點擊創建索引模式

    2、輸入索引模式名稱 --> 點擊下一步

    3、設置時間篩選字段名稱,筆者汪小成這里沒有使用時間篩選。

    4、點擊Discover圖標就可以看到Spring Boot項目輸出的日志了。

    前言

    本文可能不會詳細記錄每一步實現的過程,但一定程度上可以引領小伙伴走向更開闊的視野,串聯每個環節,呈現予你不一樣的效果。

    業務規模

    • 8個平臺

    • 100+臺服務器

    • 10+個集群分組

    • 微服務600+

    • 用戶N+

    面臨問題

    隨著分布式微服務容器技術的發展,傳統監控系統面臨許多問題:

    • 容器如何監控

    • 微服務如何監控

    • 集群性能如何進行分析計算

    • 如何管理agent端大量配置腳本

    這些都是傳統監控所要面臨的棘手問題,那么如何解決當前遇到的問題,GPE橫空出世,后面會重點分析。

    系統監控

    • 目標群體:系統日志、服務器、容器、系統軟件運行指標

    • 日志架構:ELK (Elasticsearch+Logstash+Kibana+Redis)

    • 監控架構:GPE (Grafana+Prometheus+Exporter+Consul)

    • 報警方式:郵件、短信、釘釘以及自定義webhook,監控中心7x24小時

    ELK日志

    隨著分布式微服務的盛行,功能模塊的拆分細化,無論對于開發還是運維,日志的重要性都是不言而喻的,但是如何存儲分析定位查看日志,一百個公司可能會有兩百種做法。有的很少記錄日志,有的日志等級都不分,有的寫入文本然后就不管不問了,有的向MySql數據庫一扔也沒有了下文,等到用戶投訴或者被發現問題,才會翻一翻。

    那么如何正確優雅的記錄日志呢?相信大家對于ELK并不陌生,可能不少小伙伴都接觸過,對于中小型互聯網創業公司來說,使用ELK搭建日志分析系統的確是一個不錯的選擇。

    架構圖

    核心組件

    ELK由Elasticsearch、Logstash和Kibana三劍客組成,當然了以上是最基本的組件,為了使的架構流程更加豐滿,我們加入了Redis做緩沖隊列,配置了sendmail做異常日志告警。

    ElasticSearch

    ElasticSearch是一個基于Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口。它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口等。

    Logstash

    Logstash數據分析工具,它可以對系統生成的的日志進行采集、分析,存儲。2013 年,Logstash 被 Elasticsearch 公司收購,ELK Stack 正式成為官方用語。

    kibana

    Kibana是一個開源的分析與可視化平臺,用來搜索、查看存儲在Elasticsearch索引中的數據。

    工作流程

    • logstash(shipper) 實時監控并過濾收集每個服務的日志信息

    • logstash(shipper) 把收集來的日志(INFO 、DEBUG 、RROR 、WARN等)分別發送到Redis

    • logstash(indexer) 按照日志分類分別從Redis讀取日志信息并發送給ElasticSearch

    • logstash(indexer) 過濾出RROR日志通過郵件或者其它webhook方式告警開發運維人員

    • Kibana讀取ElasticSearch數據結合自定義搜索進行頁面展示

    GPE監控

    ELK主要收集分析預警的是我們平臺系統中各個服務的業務日志,一般通過日志組件(log4j 、log4j2 、logback)來收集并寫入文本。但是對于系統本身以及一些應用軟件的監控預警,這套方案顯然是不合適的,這里推薦一下GPE三劍客,當然了GPE是我自己意淫出來的組合。

    架構圖

    核心組件

    Grafana、Prometheus、Exporter(一系列插件),自定義的三劍客,當然了為了使得整合監控程序更加流暢完整,我們加入了注冊中心Consul做服務發現,實現動態添加服務,使用郵件、釘釘以及webhook實現異常告警。

    GPE組件只是其中的一種實現方式罷了,Grafana配合InfluxData提供Telegraf也可以收集很多Metrics,實現更為豐富的大屏監控預警。

    Grafana

    Grafana 是一個開箱即用的可視化工具,具有功能齊全的度量儀表盤和圖形編輯器,有靈活豐富的圖形化選項,可以混合多種風格,支持多個數據源特點。

    Prometheus

    Prometheus是一個開源的服務監控系統,它通過HTTP協議從遠程的機器收集數據并存儲在本地的時序數據庫上。

    • 多維數據模型(時序列數據由metric名和一組key/value組成)

    • 在多維度上靈活的查詢語言(PromQl)

    • 不依賴分布式存儲,單主節點工作.

    • 通過基于HTTP的pull方式采集時序數據

    • 可以通過push gateway進行時序列數據推送(pushing)

    • 可以通過服務發現或者靜態配置去獲取要采集的目標服務器

    • 多種可視化圖表及儀表盤支持

    如架構圖所示,Prometheus通過安裝在遠程機器上的exporter來收集監控數據。

    Consul

    Consul有多個組件,但是整體來看,它是你基礎設施中用于發現和配置服務的一個工具。它提供如下幾個關鍵功能:

    • 服務發現: Consul的某些客戶端可以提供一個服務,例如api或者mysql,其它客戶端可以使用Consul去發現這個服務的提供者。使用DNS或者HTTP,應用可以很容易的找到他們所依賴的服務。

    • 健康檢查: Consul客戶端可以提供一些健康檢查,這些健康檢查可以關聯到一個指定的服務(服務是否返回200 OK),也可以關聯到本地節點(內存使用率是否在90%以下)。這些信息可以被一個操作員用來監控集群的健康狀態,被服務發現組件路由時用來遠離不健康的主機。

    • 鍵值存儲: 應用可以使用Consul提供的分層鍵值存儲用于一些目的,包括動態配置、特征標記、協作、leader選舉等等。通過一個簡單的HTTP API可以很容易的使用這個組件。

    • 多數據中心: Consul對多數據中心有非常好的支持,這意味著Consul用戶不必擔心由于創建更多抽象層而產生的多個區域。

    Consul被設計為對DevOps群體和應用開發者友好,他非常適合現代的、可伸縮的基礎設施。

    工作流程

    • Exporter組件注冊到Consul注冊中心

    • Prometheus拉取Consul注冊中心的servers

    • Exporter組件獲取服務器或者系統軟件的metrics

    • Grafana配置Prometheus數據源獲取其采集數據結合自定義面板實現監控大屏

    • Grafana通過設置Alerting實現監控預警

    小結

    如文章開頭所述,本文并沒有一步步詳細記錄安裝使用教程,這些教程網上都有,即使有坑,相信作為程序員的你也能夠解決。不才,在這里只是拋磚引玉,希望各位小伙伴可以學到更多知識。

    還記得許多年前的春天,那時網站還都是靜態頁面,沒有圖片也沒有絢麗的效果,沒有24小時服務的客服,可當初程序員是那么快樂,雖然只有網頁三劍客,在網上、在指尖、在BBS中,揮灑著自己的青春熱血,如果有一天 我老無所依,請把我留在 在那互聯網浪潮里。

    現如今,隨著云計算、分布式、微服務的盛行,程序員的你是否已經疲倦與自己的CURD,是否已經不屑于與產品汪扯皮,來來來,返回頂部小伙伴們再看看一遍,誰說程序員全部的時間都要敲代碼,是時候需要去需找自己的另一片天空了。

    作者: 小柒 出處: https://blog.52itstyle.com

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有