Springboot+elk实现分布式日志管理
点击上方蓝色字体,选择“标星公众号”
优质文章,第一时间送达
作者 | CosmosNi
来源 | urlify.cn/zINBvm
一:准备工作
1.准备三台机器:
10.2.0.151 主
10.2.0.152 数据中心
10.2.0.153 数据中心
机器上都安装上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 修改主节点上的配置文件
vim /etc/elasticsearch/elasticsearch.yml
修改如下几个配置:
cluster.name: master-node # 集群中的名称
node.name: master # 该节点名称
node.master: true # 意思是该节点为主节点
node.data: false # 表示这不是数据节点
network.host: 0.0.0.0 # 监听全部ip,在实际环境中应设置为一个安全的ip
http.port: 9200 # es服务的端口号
discovery.zen.ping.unicast.hosts: [“10.2.0.151”, “10.2.0.152”, “10.2.0.153”] # 配置自动发现
2.2复制替换此文件到两个数据中心
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服务会监听两个端口
2.4查看集群健康状态
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, # 集群中的节点数量
"number_of_data_nodes" : 2, # 集群中data节点的数量
"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 # 增加以下内容
server.port: 5601 # 配置kibana的端口
server.host: 10.2.0.151 # 配置监听ip
elasticsearch.url: "http://10.2.0.151:9200" # 配置es服务器的ip,如果是集群则配置该集群中主节点的ip
logging.dest: /var/log/kibana.log # 配置kibana的日志文件路径,不然默认是messages里记录日志
3.创建日志文件:
touch /var/log/kibana.log; chmod 777 /var/log/kibana.log
4.启动
systemctl start kibana
ps aux |grep kibana ###监听的端口
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 主节点
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服务器的ip以及配置的监听端口:
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节点
curl '10.2.0.151:9200/_cat/indices?v'
可以看到配置的appname的索引
2.创建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包下创建logback-spring.xml,文件内容如下:
"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.创建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,
创建索引:
访问discover
6 总结
到此,hello world的执行成功了。更加详细高层次的内容还在学习中。欢迎大家一起学习进步。
粉丝福利:实战springboot+CAS单点登录系统视频教程免费领取
???
?长按上方微信二维码 2 秒 即可获取资料
感谢点赞支持下哈