Springboot+elk實現(xiàn)分布式日志管理
點擊上方藍色字體,選擇“標星公眾號”
優(yōu)質(zhì)文章,第一時間送達
? 作者?|??CosmosNi
來源 |? urlify.cn/zINBvm
一:準備工作
1.準備三臺機器:
10.2.0.151 主
10.2.0.152 數(shù)據(jù)中心
10.2.0.153 數(shù)據(jù)中心
機器上都安裝上jdk
2.修改host文件
vim?/etc/hosts
10.2.0.151?master-node
10.2.0.152?data-node1
10.2.0.153?data-node2
二:安裝Elasticsearch 分布式集群
在三臺機器上分別裝上Elasticsearch
wget?https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.rpm
rpm?-ivh?elasticsearch-6.0.0.rpm
2.搭建集群
2.1 修改主節(jié)點上的配置文件
vim?/etc/elasticsearch/elasticsearch.yml
修改如下幾個配置:
cluster.name: master-node # 集群中的名稱
node.name: master # 該節(jié)點名稱
node.master: true # 意思是該節(jié)點為主節(jié)點
node.data: false # 表示這不是數(shù)據(jù)節(jié)點
network.host: 0.0.0.0 # 監(jiān)聽全部ip,在實際環(huán)境中應(yīng)設(shè)置為一個安全的ip
http.port: 9200 # es服務(wù)的端口號
discovery.zen.ping.unicast.hosts: [“10.2.0.151”, “10.2.0.152”, “10.2.0.153”] # 配置自動發(fā)現(xiàn)
2.2復(fù)制替換此文件到兩個數(shù)據(jù)中心
? 10.2.0.152 下修改如下配置:
??node.name:?data-node1
??node.master:?false
??node.data:?true
? 10.2.0.153 下修改如下配置:
??node.name:?data-node2
??node.master:?false
??node.data:?true
2.3啟動es
systemctl?start?elasticsearch.service
ps?aux?|grep?elasticsearch
netstat?-lntp?|grep?java??#?es服務(wù)會監(jiān)聽兩個端口

2.4查看集群健康狀態(tài)
curl?'10.2.0.151:9200/_cluster/health?pretty'
{
??"cluster_name"?:?"master-node",
??"status"?:?"green",??#?為green則代表健康沒問題,如果是yellow或者red則是集群有問題
??"timed_out"?:?false,??#?是否有超時
??"number_of_nodes"?:?3,?#?集群中的節(jié)點數(shù)量
??"number_of_data_nodes"?:?2,?#?集群中data節(jié)點的數(shù)量
??"active_primary_shards"?:?0,
??"active_shards"?:?0,
??"relocating_shards"?:?0,
??"initializing_shards"?:?0,
??"unassigned_shards"?:?0,
??"delayed_unassigned_shards"?:?0,
??"number_of_pending_tasks"?:?0,
??"number_of_in_flight_fetch"?:?0,
??"task_max_waiting_in_queue_millis"?:?0,
??"active_shards_percent_as_number"?:?100.0
}
集群的詳細信息:
curl?'192.168.77.128:9200/_cluster/state?pretty'
到此,集群安裝成功
三:搭建kibana
1.安裝
wget?https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-x86_64.rpm
rpm?-ivh?kibana-6.0.0-x86_64.rpm
2.配置
vim?/etc/kibana/kibana.yml??#?增加以下內(nèi)容
server.port:?5601??#?配置kibana的端口
server.host:?10.2.0.151??#?配置監(jiān)聽ip
elasticsearch.url:?"http://10.2.0.151:9200"??#?配置es服務(wù)器的ip,如果是集群則配置該集群中主節(jié)點的ip
logging.dest:?/var/log/kibana.log??#?配置kibana的日志文件路徑,不然默認是messages里記錄日志
3.創(chuàng)建日志文件:
?touch?/var/log/kibana.log;?chmod?777?/var/log/kibana.log
4.啟動
systemctl?start?kibana
ps?aux?|grep?kibana???###監(jiān)聽的端口
netstat?-lntp?|grep?5601??##進程是否啟動
5.訪問
http://ip+5601
四:logstash
1.安裝
wget?https://artifacts.elastic.co/downloads/logstash/logstash-6.0.0.rpm
rpm?-ivh?logstash-6.0.0.rpm
2.配置logstash
新建一個conf文件:
input?{
????tcp?{
????????port?=>?4560????##開啟的端口號,后面項目logback配置的
?mode?=>?"server"?
?tags?=>?["tags"]?
?codec?=>?json_lines??##解析方式
????}
}
output{
??elasticsearch?{?
?????hosts?=>?["10.2.0.151:9200"]???###elasticsearch?主節(jié)點
?????index?=>"%{[appname]}-%{+YYYY.MM.dd}"?????#appname??后面logback會用到,指向項目名
??}
??stdout?{?codec?=>?rubydebug?}
}
將文件放入到/etc/logstash/conf.d/目錄下
3.檢查配置文件是否有錯
cd?/usr/share/logstash/bin
./logstash?--path.settings?/etc/logstash/?-f?/etc/logstash/conf.d/syslog.conf?--config.test_and_exit
Sending?Logstash's?logs?to?/var/log/logstash?which?is?now?configured?via?log4j2.properties
Configuration?OK??#?為ok則代表配置文件沒有問題
命令說明:
–path.settings 用于指定logstash的配置文件所在的目錄
-f 指定需要被檢測的配置文件的路徑
–config.test_and_exit 指定檢測完之后就退出,不然就會直接啟動了
4.配置kibana服務(wù)器的ip以及配置的監(jiān)聽端口:
vim?/etc/rsyslog.conf
####?RULES?####
*.*?@@10.2.0.153:4560
###重啟rsyslog
systemctl?restart?rsyslog
5.指定配置文件,啟動logstash
cd?/usr/share/logstash/bin
./logstash?--path.settings?/etc/logstash/?-f?/etc/logstash/conf.d/syslog.conf
systemctl?start?logstash
6.查看是否啟動成功
netstat?-lntp?|grep?9600
netstat?-lntp?|grep?10514
五:測試
1.登錄master節(jié)點
curl?'10.2.0.151:9200/_cat/indices?v'
可以看到配置的appname的索引
2.創(chuàng)建springboot項目
pom文件如下
"1.0"?encoding="UTF-8"?>
"http://maven.apache.org/POM/4.0.0"?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
????xsi:schemaLocation="http://maven.apache.org/POM/4.0.0?http://maven.apache.org/xsd/maven-4.0.0.xsd">
????4.0.0
????com.test
????springboot-with-elk
????0.0.1-SNAPSHOT
????jar
????springboot-with-elk
????Demo?project?for?Spring?Boot
????
????????org.springframework.boot
????????spring-boot-starter-parent
????????2.1.0.RELEASE
???????? ?
????
????
????????UTF-8
????????UTF-8
????????1.8
????
????
????????
????????????org.springframework.boot
????????????spring-boot-starter-web
????????
????????
????????????net.logstash.logback
????????????logstash-logback-encoder
????????????5.2
????????
????????
????????????org.springframework.boot
????????????spring-boot-devtools
????????????runtime
????????
????????
????????????org.springframework.boot
????????????spring-boot-starter-test
????????????test
????????
????
????
????????
????????????
????????????????org.springframework.boot
????????????????spring-boot-maven-plugin
????????????
????????
????
3.在resources包下創(chuàng)建logback-spring.xml,文件內(nèi)容如下:
"1.0"?encoding="UTF-8"?>
????"org/springframework/boot/logging/logback/base.xml"?/>
?
????"LOGSTASH"?class="net.logstash.logback.appender.LogstashTcpSocketAppender">
????????10.2.0.153:4560
????????"UTF-8"?class="net.logstash.logback.encoder.LogstashEncoder">
????????????{"appname":"first-elk-demo"}
????????
????
?
????"INFO">
????????"LOGSTASH"?/>
????????"CONSOLE"?/>
????
?
?
4.創(chuàng)建mainclass,并運行項目
import?org.slf4j.Logger;
import?org.slf4j.LoggerFactory;
import?org.springframework.boot.CommandLineRunner;
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
/**
?*
?*?@author?admin
?*/
@SpringBootApplication
public?class?Application?implements?CommandLineRunner?{
????public?static?void?main(String[]?args)?{
????????SpringApplication.run(SpringbootWithElkApplication.class,?args);
????}
????@Override
????public?void?run(String...?args)?throws?Exception?{
????????Logger?logger?=?LoggerFactory.getLogger(SpringbootWithElkApplication.class);
????????for?(int?i?=?0;?i?100;?i++)?{
????????????logger.info("Hello,Elk.?This?is?my?{}?time?to?see??you;",?i,?i);
????????}
????}
}
5.訪問kibana,
創(chuàng)建索引:
訪問discover
6 總結(jié)
到此,hello world的執(zhí)行成功了。更加詳細高層次的內(nèi)容還在學習中。歡迎大家一起學習進步。
粉絲福利:實戰(zhàn)springboot+CAS單點登錄系統(tǒng)視頻教程免費領(lǐng)取
???
?長按上方微信二維碼?2 秒 即可獲取資料
感謝點贊支持下哈?
