基礎架構之日誌管理平臺搭建及java&net使用

  在現代化的軟件開發流程中,日誌顯得很是的重要,不可能再零散的遊離在各個項目中,等查看日誌的時候再登陸服務器去到特定的目錄去查看,這顯然很繁瑣且效率低下,全部整合一套日誌管理平臺,也顯得很是重要,這篇文章是日誌管理平臺搭建的第一篇,第二篇爲告警及郵件通知html

       環境要求:CentOS      Release:  7.5.1804java

       ELK版本:6.3.1    爲方便下載我打包在百度網盤,點擊可直接下載spring

  安裝json

  1. Elasticsearch 解壓後上傳到服務器,直接用rpm命令安裝便可,如運行以下命令安裝elasticsearch瀏覽器

rpm -ivh ./elasticsearch-6.3.1.rpm

,等命令執行完成後,輸入服務器

systemctl status elasticsearch.service

,可查看當前運行的狀態,如圖所示,狀態爲active 說明咱們的elasticsearch 服務已經啓動。app

 

在瀏覽器輸入http://192.168.1.215:9200,查看返回結果,說明elasticsearch服務已經成功運行。elasticsearch

 

  2. Logstashtcp

  安裝logstash比較簡單,在命令行運行rpm -ivh ./logstash-6.3.1.rpm,等命令執行完成後,輸入systemctl status logstash.service 查看服務狀態以下圖所示,即表示logstash服務已經運行。測試

  

 

  3. Kibana

  最後,咱們安裝kibana,在解壓目錄下運行

rpm -ivh ./kibana-6.3.1-x86_64.rpm

命令,等命令執行完後,輸入

systemctl status kibana.service

,輸出以下圖所示,

  

  說明kibana服務已經啓動,咱們在瀏覽器輸入http://192.168.1.215:5601來驗證下,若是不出意外,應該顯示以下所示

    

 

  1. 安裝遇到的問題

    a)      若是遇到出現端口號被佔中的狀況,用netstat命令查看被哪一個進程佔中,殺掉便可,也能夠在配置文件修改端口,ELK默認端口:Elasticsearch:9200,Kibana:5601

    b)      打開kibana,若是提示認證提示,則修改下kibana的配置文件,默認路徑在/etc/kibana/kibana.yml,添加以下設置 xpack.security.enabled: false便可。

 

  日誌接入

  1. Java

  a)      在添加logstash包

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

  b)      日誌配置信息

  

<appender name="logstash"
          class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <destination>xxx.xxx.xxx.xxx:xxxx</destination>
    <queueSize>1048576</queueSize>
    <!-- encoder必須配置,有多種可選 -->
    <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
        <customFields>{"appname":"${Application_Name}"}</customFields>
    </encoder>
    <connectionStrategy>
        <roundRobin>
            <connectionTTL>5 minutes</connectionTTL>
        </roundRobin>
    </connectionStrategy>
</appender>

 

c)      Root配置

                      

<springProfile name="log">
        <root level="debug"><appender-ref ref="logstash" /></root>
    </springProfile>

 

d)      在logstash的配置文件路徑,默認爲/etc/logstash/conf.d添加文件biz_es.conf,文件名稱能夠本身根據實際需求修改。

                     

input {
        tcp {  
        ##host:port就是上面appender中的 destination,這裏其實把logstash做爲服務,開啓9601端口接收logback發出的消息  
            host => "0.0.0.0"
        #模式選擇爲server  
            mode => "server" 
            port => xxxx
        ##格式json  
            codec => "json"
            type => "server"
        }  
    
    } 
    
    output {
            if[type]=="server"{
            elasticsearch {
            action => "index"
            #ES地址
                    hosts => "192.168.1.215"
            #指定索引名字,不適用默認的,用來區分各個項目
                    index => "%{[appname]}-%{+YYYY.MM.dd}"
            }
        }
    }

  e)      須要注意點

               i.          Logstash監聽的端口號要與日誌配置的端口號一致

              ii.          防火牆要放開監聽的端口,測試環境也能夠把防火牆關閉

 

  2. Net

a)      添加 NLog.Targets.ElasticSearch 程序包

b)      編輯Nlog.config

  

<extensions>

          <add assembly="NLog.Targets.ElasticSearch"/>

        </extensions>

        <target xsi:type="ElasticSearch"

               name="ElasticLog"

               uri="http://192.168.1.215:9200"

               index="nlog-${date:format=yyyy.MM.dd}"

               documentType="logevent"

               includeAllProperties="true">

            <field name="private" layout="${assembly-version}" />

        </target>

      <rules>

      <logger name="Kibana" minlevel="Info" writeTo="ElasticLog"/>

</rules>

c)      添加日誌

       i.          幫助 Utils

  

public class LogHelper

    {

        private static Logger logger;

        private static string logRuleName = "Kibana";

        static LogHelper()

        {

            logger = LogManager.GetLogger(logRuleName);

            logger.LoggerReconfigured += logger_LoggerReconfigured;

        }

 

        static void logger_LoggerReconfigured(object sender, System.EventArgs e)

        {

            logger = LogManager.GetLogger(logRuleName);

        }

 

        public static void WirtError(string message)

        {

            logger.Log(LogLevel.Error, message);

        }

 

        public static void WirtDebug(string message)

        {

            logger.Log(LogLevel.Debug, message);

        }

}

 

d)      記錄日誌

  LogHelper.WirtError("elk log info");

到這裏elk搭建及java&net使用就完成了,下一篇主要介紹跟釘釘告警及郵件通知

相關文章
相關標籤/搜索