該篇內(nèi)容由個人博客點擊跳轉(zhuǎn) <http://www.shaojianan.cn/>同步更新!轉(zhuǎn)載請注明出處!

          前言

          ELK是什么


          它是一個分布式日志解決方案,是Logstash、Elastaicsearch、Kibana的縮寫,可用于從不同的服務(wù)中收集日志后進(jìn)行處理和分析,通過Kibana可以全方面的展示收集后的信息,比如通過圖表或者表格形式。

          能用來做什么

          (一)ELK組件在海量日志系統(tǒng)的運維中,可用于解決:

          * 分布式日志數(shù)據(jù)集中式查詢和管理
          * 系統(tǒng)監(jiān)控,包含系統(tǒng)硬件和應(yīng)用各個組件的監(jiān)控
          * 故障排查
          * 安全信息和事件管理
          * 報表功能
          (二)ELK組件在大數(shù)據(jù)運維系統(tǒng)中,主要可解決的問題如下:
          * 日志查詢,問題排查,上線檢查
          * 服務(wù)器監(jiān)控,應(yīng)用監(jiān)控,錯誤報警,Bug管理
          *
          性能分析,用戶行為分析,安全漏洞分析,時間管理

          安裝前準(zhǔn)備
          我的系統(tǒng)環(huán)境是CentOS Linux release 7.6.1810 (Core)
          * 安裝GIT(用于下載下文提到的GITHUB項目,你也可以用curl,但項目更新比較快用GIT方便更新)
          * 安裝Docker(下面項目將部署到Docker中)
          *
          安裝Docker-Compose(文章會用DC進(jìn)行服務(wù)構(gòu)建)
          好了,萬事具備,只欠東風(fēng)。

          懶人安裝
          ELK的安裝比較繁瑣,網(wǎng)上的教程也基本都是一個個下載之后再進(jìn)行安裝和配置。逛了一圈gayhub找到了docker安裝部署的懶人方式這是項目地址
          <https://github.com/deviantony/docker-elk>
          首先在你的根目錄新建一個文件夾就叫elk,然后通過GIT命令下載項目到該目錄下,進(jìn)入到該目錄下你可以看到這樣的目錄結(jié)構(gòu) [root@localhost
          docker-elk]# ls docker-compose.yml docker-stack.yml elasticsearch extensions
          filebeat kibana LICENSE logstash README.md
          運行命令進(jìn)行服務(wù)構(gòu)建,記住一定要加個d,不然退出終端服務(wù)就停了,這個過程有點漫長,畢竟裝的東西有點多
          [root@localhost docker-elk]# docker-compose up -d
          裝完后他會默認(rèn)打開以下這些端口
          5000: Logstash TCP input(Logstash數(shù)據(jù)的接收通道)
          9200: Elasticsearch HTTP(ES的http通道)
          9300: Elasticsearch TCP transport(ES的TCP通道)
          5601: Kibana(UI管理界面)
          這幾個服務(wù)對應(yīng)的關(guān)系如下圖,應(yīng)用程序?qū)⑷罩就扑徒oLogstash,然后放到ES進(jìn)行存儲,最后通過Kibana進(jìn)行數(shù)據(jù)展示


          當(dāng)然了logstash也有很多對應(yīng)的插件beats用來收集不同的日志,在高并發(fā)的情況下你也可以通過使用redis或者kafka作為中間件進(jìn)行過渡,就像下面的架構(gòu)圖一樣

          在安裝完成后我們用瀏覽器打開下面兩個地址,這里會提示你輸入用戶名和密碼:
          user: elastic
          password: changeme
          這是默認(rèn)的稍后和大家說下如何修改密碼

          * http://127.0.0.1:9200/ 打開可以看到ES的一些版本信息等

          *
          http://127.0.0.1:5601/ 打開后就是Kibana的界面,如果ES沒有啟動完成的話會提示你未找到ES數(shù)據(jù)源

          好了,安裝運行已經(jīng)全部結(jié)束,是不是非常簡單,比起網(wǎng)上那些長篇大論講安裝的,這里其實就兩步:下載和運行dc文件

          .NetCore使用Nlog進(jìn)行日志收集
          首先在你的項目中用Nuget安裝以下兩個類庫
          NLog.Extensions.Logging和NLog.Web.AspNetCore
          然后新建NLog的配置文件Nlog.config,內(nèi)容如下 : <?xml version="1.0" encoding="utf-8" ?> <nlog
          xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true"
          internalLogLevel="Warn" internalLogFile="internal-nlog.txt"> <extensions> <add
          assembly="NLog.Web.AspNetCore"/> </extensions > <variable name="logDirectory"
          value="${basedir}\logs\"/> <!--define various log targets--> <targets>
          <!--write logs to file--> <!--address 填寫Logstash數(shù)據(jù)的接收通道--> <target
          xsi:type="Network" name="elastic" keepConnection="false" address
          ="tcp://127.0.0.1:5000"
          layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
          /> <target xsi:type="Null" name="blackhole" /> </targets> <rules> <!--All logs,
          including from Microsoft--> <logger name="*" minlevel="Trace" writeTo="allfile"
          /> <!--Skip Microsoft logs and so log only own logs--> <logger
          name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" /> <logger
          name="*" minlevel="Trace" writeTo="elastic" /> </rules> </nlog>
          然后在Startup>Configure中引入Nlog
          public void Configure(IApplicationBuilder app, IHostingEnvironment env,
          ILoggerFactory loggerFactory) {
          LogManager.LoadConfiguration("Nlog.config");//引入配置文件
          loggerFactory.AddNLog();//注入Nlog }
          接下來在自己項目是進(jìn)行一個簡單的測試
          Logger log = NLog.LogManager.GetCurrentClassLogger(); log.Debug("測試日志內(nèi)容");
          Kibana中配置對剛才的日志進(jìn)行分析

          Kibana必須要先有數(shù)據(jù)后才能對數(shù)據(jù)進(jìn)行展示,所以我們必須要有上面的測試數(shù)據(jù),然后配置索引進(jìn)行數(shù)據(jù)查看
          登錄進(jìn)來后左邊隨機(jī)點一個菜單來到如下界面

          點擊Create index pattern
          來到如下界面,這里就是配置你要展現(xiàn)ES中哪個索引下的內(nèi)容,這里nci-bids-log-2019xxx這是logstash生成的,你們的可能叫l(wèi)ogstash-2019xxxx,我的索引在配置中被我重命名了一下方便區(qū)分項目

          通過名稱來進(jìn)行模糊匹配,匹配規(guī)則貌似就是正則,匹配成功會提示如下信息,然后點擊 Next-Step

          這里讓你選擇一個時間字段,就選擇@timestamp然后下一步結(jié)束創(chuàng)建,然后點擊左邊第一個菜單就能看到圖表和詳細(xì)信息了

          其它的功能自己摸索吧

          配置

          ELK的配置文件都是以Volume的方式來掛載的,對應(yīng)每個文件夾下面的Configs里面。
          比如logstash的配置文件cd logstash/config下面的logstash.yml就是他的配置文件。
          對了這里使用的版本需要密碼是因為es使用了一個商業(yè)版,有效期是30天,如果不想使用這個的話可以去es的配置目錄把xpack的配置改成如下就可以:
          xpack.license.self_generated.type: basic xpack.security.enabled: false
          xpack.monitoring.collection.enabled: false
          后面有空和大家再分享下通過kafka作為中間件的方式以及具體的一些配置內(nèi)容

          微信關(guān)注我哦!(轉(zhuǎn)載注明出處)

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                思思热在线视频精品 | 黄色一级大片免费看 | 免费观看的操逼视频 | 少妇又紧又黄又粗又爽在线观看 | 色色色色色色色网 |