ELK+Logback進行業務日志分析查看


 

第1章  Elasticsearch安裝部署

 

1.1 下載軟件包並創建工作目錄

程序下載地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.0-linux-x86_64.tar.gz

下載時間過長,建議登錄至服務器下載;

‘’’
# 下載官方新版本軟件包
# 解壓文件至指定目錄並重命名
# 創建用戶且將elasticsearch程序目錄屬主屬組設置為elasticsearch用戶
‘’’

# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.0-linux-x86_64.tar.gz

# tar zxvf  elasticsearch-7.5.0-linux-x86_64.tar.gz -C /mnt/elasticsearch

# useradd elasticsearch && chown -R elasticsearch:elasticsearch /mnt/elasticsearch 

1.2 安裝Elasticsearch Head插件

 

如果不安裝Head插件的話,查詢索引及數據等操作不太方便,所以此處安裝了Head插件

 

‘’’
1.# 到官方下載最新版本的nodejs軟件包(https://nodejs.org/en/download/)
2.# 解壓壓縮包
3.# 在/etc/profile文件中配置好環境變量
4.# 執行驗證
5.# 下載head插件並修改配置文件
6.# 安裝服務啟動命令
7.# 啟動命令驗證
8.# 安裝相關程序
9.# 后台啟動head插件
10.# 查看服務是否啟動成功,端口是否存在
‘’’

1 # 下載過程省略。。

2 # tar zxvf  node-v11.10.0-linux-x64.tar.gz -C /usr/local/node-v11.10.0-linux-x64

3 # vim /etc/profile

    export NODE_HOME=/usr/local/node-v11.10.0-linux-x64

   export NODE_PATH=$NODE_HOME/lib/node_modules

   export PATH=$NODE_HOME/bin:$PATH

   export PATH

4 # node -v

v11.10.0

5 # cd /mnt/elasticsearch && git clone https://github.com/mobz/elasticsearch-head.git

5 # vim /mnt/elasticsearch/elasticsearch-head/_site/app.js (找到下列行進行修改)

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://ES_IP:PORT"

5 # vim /mnt/elasticsearch/elasticsearch-head/Gruntfile.js (找到下列行進行修改)

          hostname: '0.0.0.0',

          port: 9100,

          base: '.',

          keepalive: true

6 # npm install -g grunt

6 # npm install -g grunt-cli --registry=https://registry.npm.taobao.org --no-proxy

7 # grunt --version

grunt-cli v1.2.0

8 # npm install

9 # nohup grunt server &

10 # ss -nlt | grep 9100

 

1.3 Elasticsearch配置文件修改並啟動

 

# vim /mnt/elasticsearch/config/elasticsearch.yml
   cluster.name: my-elasticsearch                         // 集群名稱(單節點用不上,但集群的話另外的ES也要配置這個名稱)
   node.name: node-1                                    // 節點名稱
     path.data: /mnt/elasticsearch/data                   // 數據存放路徑
     path.logs: /mnt/logs/elasticsearch                   // 日志存放路徑
     bootstrap.memory_lock: true                          // 防止es內存被交換出去,避免es使用swap交換分區
     network.host: IP                                     // ES的主機IP地址
     http.port: 9200                                     // ES啟動后監聽的端口
     cluster.initial_master_nodes: ["node-1"]             // 候選主節點的設備地址,來開啟服務時就可以被選為主節點
     gateway.recover_after_nodes: 1                       // 要等幾個節點啟動完成后,開始初始化數據恢復
     # 使head插件可以訪問ES
http.cors.enabled: true
http.cors.allow-origin: "*"

#啟動LRU法則,回收老數據
indices.fielddata.cache.size: 20%
#指定節點為master
node.master: true
# vim /mnt/elasticsearch/config/jvm.options                 // 調整ES可使用的內存大小
  -Xms512M
  -Xms512M

# vim /etc/sysctl.conf
  #Elasticsearch設置,在ES啟動時,限制ES可以擁有的VMA(虛擬內存區域)的數量
vm.swappiness=0
vm.max_map_count=262144
# sysctl -p                // 使配置生效
# cd /mnt/elasticsearch/bin
# ./elasticsearch        // 前台啟動ES方便發現問題並調試
# nohup ./elasticsearch &   (這條命令可等控制台啟動ES無報錯后使用)

訪問http://IP:9100(信息均為Head插件的信息)
# 因為我這邊已經有了索引所以我的效果如下,默認應該是空的,但ES狀態為Green正常(黃色也不影響,與分片相關)

 

 

 

 

第2章  Logstash安裝部署

 

2.1 下載軟件包並創建工作目錄

程序下載地址:https://artifacts.elastic.co/downloads/logstash/logstash-7.5.0.tar.gz

下載時間過長,建議登錄至服務器下載;

‘’’
   1. # 從官方地址下載程序包
   2. # 解壓到指定目錄且重命名
   3. # 創建運行用戶並且修改程序目錄屬主屬組
‘’’
# wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.0.tar.gz
# tar zxvf  logstash-7.5.0.tar.gz -C /mnt/logstash
# useradd logstash && chown -R logstash:logstash /mnt/logstash 

2.2 修改配置文件並啟動

# cd /mnt/logstash/config
# cp logstash-sample.conf logstash.conf
# vim logstash.conf
  input {
  tcp {
    host => "IP"                            // 本機IP地址
    port => "5044"                          // Logstash所監聽端口號
    mode => "server"                        // 我們為服務端,讓客戶端發送日志
    codec => json_lines                     // 格式固定為json_lines,否則動態變量appname無法生效
  }
}

output {
  elasticsearch {
    hosts => "http://IP:9200"                // ES的IP+Port
    action => "index"                        // 行為是索引
    index => "%{[appname]}-%{+YYYY.MM.dd}"   // 索引名稱為”服務名+日期”
  }
}

# vim jvm.options           // 限制logstash使用內存大小
  -Xms512m
  -Xms512m
# cd /mnt/logstash/bin
# ./logstash -f /mnt/logstash/config/logstash.conf
# nohub ./logstash -f /mnt/logstash/config/logstash.conf &    (后台啟動logstash,如果擔心有問題也可以先前台啟動調試)

第3章  Logback服務配置

 

說明:我們的部署流程使用的是Jenkins+Gitlab+Ansible+Python來實現的,所以打包也是由Jenkins直接打包,服務較多,用的基本都是Spring boot框架,但日志方面使用的是Logback,所以以下配置使用的是Logback+Logstash這種方式;

 

3.1  修改服務配置並且重新編譯

首先在Jenkins的工作空間中找到服務目錄,臨時修改各配置

 

# cd .jenkins/workspace/$service_name/
# vim pom.xml       // 新增下列行
        <dependency>
                <groupId>net.logstash.logback</groupId>
                <artifactId>logstash-logback-encoder</artifactId>
                <version>4.10</version>
        </dependency>
# vim src/main/resource/log/logback.xml      // logback相關配置文件,可咨詢開發人員,增加以下配置文件
    
   <!-- logstash日志采集配置 --> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>IP:5044</destination> // IP為Logstash服務器的地址 <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"> <customFields>{"appname": "test"}</customFields> // “test”為此服務名稱,這是自定義的,服務名稱是什么就寫什么 </encoder> </appender> <root> // 下面這一段默認存在,所以只用添加省略號之間的那句話即可 <level value="${level}" /> <!--<appender-ref ref="STDOUT" />--> ...... <appender-ref ref="LOGSTASH" /> ...... </root> # mvn clean package // 重新打一個服務jar包上測試環境替換

 

3.2 登錄ES-Head插件驗證

 

訪問http://IP:9100,查看索引位置是否存在自己以服務名命名的索引,如果存在則可以進行下一步操作啦,如果沒有的話可以調整一下logstash的配置文件

 

# vim logstash.conf
  input {
  tcp {
    host => "IP"                            // 本機IP地址
    port => "5044"                          // Logstash所監聽端口號
    mode => "server"                     // 我們為服務端,讓客戶端發送日志
    codec => json_lines                    // 格式固定為json_lines,否則動態變量appname無法生效
  }
}

output {
  stdout {
     codec => json_lines                 
}
}

# cd /mnt/logstash/bin
# ./logstash -f /mnt/logstash/config/logstash.conf

# 然后在測試環境重啟一下服務,查看一下logstash前台是否有日志收集過來,如果沒有的話,查看logback配置的logstash的地址及端口與服務所在的服務器之間是否能夠正常通訊;

 

第4章 Kibana安裝配置及使用

 

4.1 下載軟件包並創建工作目錄

下載時間過長,建議登錄至服務器下載;

‘’’
   1. # 從官方地址下載程序包
   2. # 解壓到指定目錄且重命名
   3. # 創建運行用戶並且修改程序目錄屬主屬組
‘’’
# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.5.0-linux-x86_64.tar.gz
# tar zxvf  kibana-7.5.0-linux-x86_64.tar.gz -C /mnt/kibana
# useradd kibana && chown -R kibana:kibana /mnt/kibana

4.2 修改配置文件並啟動

# cd /mnt/kibana/config
# vim kibana.yml
  server.port: 5601                             // kibana監聽的端口號
  server.host: "IP"                            // kibana所在的服務器IP地址
  server.maxPayloadBytes: 1048576              // 最大請求負載(單位Byte)
  elasticsearch.hosts: ["http://IP:Port"]      // ES的網絡地址
  kibana.index: ".kibana"                      // kibana默認創建的索引
  elasticsearch.requestTimeout: 30000          // 請求連接ES的最大超時時間(單位 ms)
  pid.file: /mnt/kibana/kibana.pid             // pid存放位置
  i18n.locale: "zh-CN"                        // 配置為中文界面
# cd /mnt/kibana/bin
# ./kibana                                // 前台啟動方便發現問題
# nohub ./kibana &                          // 調試完成后可直接后台運行

4.3 驗證是否啟動成功

1.如果訪問http://IP:5601出現如下界面的話,則說明Kibana啟動成功

 

 

 

2. 創建索引模式用來匹配ES上的索引名稱

 

 

3. 紅框中填入你要匹配的規則,類似正則表達式;

 

 4.默認以@timestamp作為篩選字段即可

 

 

5. 選中左邊的第一個則代表查看匹配到的數據,第二個紅框代表只看message這個字段的內容

 

 

至此,ES+Logstash+logback+Kibana就完成啦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM