ELK学习搭建部署经验总结(es、logstash、kibana)

一、ELK介绍

ELK代表的是Elasticsearch , Logstash, Kibana 。 Elasticsearch :搜索分析功能 Logstash:数据搜集,类似于flume(使用方法几乎跟flume一模一样),是日志收集系统 Kibana :数据可视化分析

logstash抽取数据到es中,使用kibana可视化展示。由下图表示: 在这里插入图片描述

二、ELK搭建部署

1、环境

jdk1.8 下载地址:jdk1.8

elasticsearch-6.4.3
下载地址:elasticsearch-6.4.3.tar.gz

logstash-6.4.3 下载地址:logstash-6.4.3.tar.gz

kibana-6.4.3-linux-x86_64 下载地址:kibana-6.4.3-linux-x86_64.tar.gz

2、elasticsearch安装

准备工作

1、创建一个目录存放下载好的部署包。我这里是创建了一个elk目录/home/elk 在这里插入图片描述

2、创建一个用户,并授权。因为es不能用root用户启动,如果用root启动,会报错。我这里创建了一个es用户。 在这里插入图片描述

安装

切换es账户,解压相关压缩包

su es
tar -zxvf elasticsearch-6.4.3.tar.gz
复制代码

在这里插入图片描述

进入elasticsearch-6.4.3,修改配置文件

cd elasticsearch-6.4.3/config/
vim elasticsearch.yml
复制代码

在这里插入图片描述 将其注释去掉 在这里插入图片描述 在这里插入图片描述

cluster.name 是你的es集群的名称,如果集群式分布式要注意每节点的集群名要一样
node.name	 是节点名称,可随意
network.host 0.0.0.0代表所有网络都可以访问
http.port	 9200是es的默认端口
复制代码

配置完成之后,保存退出,运行启动es

cd ../bin/
./elasticsearch    后台启动为:./elasticsearch -d
复制代码

无报错,代表启动正常。 在这里插入图片描述 浏览器访问:http://xxxx:9200/,显示es信息。 在这里插入图片描述

一般遇到的错误

1、权限问题,不能用root启动,切换其他用户 在这里插入图片描述

2、 CONFIG_SECCOMP not compiled into kerne.. 在这里插入图片描述

解决办法:
在配置文件上elasticsearch.yml加上
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
复制代码

在这里插入图片描述

3、max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536] max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]

解决办法:
切换root用户,编辑limits.conf配置文件,命令如下:vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096  # * 可为启动es的用户
复制代码

在这里插入图片描述 4、max number of threads [1024] for user [lish] likely too low, increase to at least [2048]

解决办法:
切换root用户,编辑90-nproc.conf配置文件,命令如下:
vi /etc/security/limits.d/90-nproc.conf
将
* soft nproc 1024
修改为
* soft nproc 2048   #这里是根据报错提示具体修改
复制代码

在这里插入图片描述 5、max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

解决办法:
切换root用户,修改配置文件sysctl.conf,命令如下:vi /etc/sysctl.conf 
添加一下配置:vm.max_map_count=655360
#这里是根据报错提示具体修改数值
复制代码

在这里插入图片描述 配置修改完成之后,重现启动es,就可以访问链接啦!!!!!!!!!

3、Kibana安装

解压安装包,修改配置文件

#解压安装包
tar -zxvf elasticsearch-6.4.3.tar.gz
cd kibana-6.4.3-linux-x86_64/config/
vi kibana.yml
复制代码

将其注释去掉,修改自己的配置 在这里插入图片描述

server.port:端口
server.host:配置成0.0.0.0代表开启公网访问
elasticsearch.url:es访问的路径
复制代码

保存配置文件,启动kibana,通过浏览器访问:http://xxx:5601/,显示可视化页面

cd ../bin
./kibana    #后台启动:nohup ./kibana > kibana-start.log 2>&1 &
复制代码

在这里插入图片描述

4、logstash安装

解压安装包,修改配置文件

#解压安装包
tar -zxvf logstash-6.4.3.tar.gz
复制代码

在这里插入图片描述

进入logstash-6.4.3/bin目录创建一个conf文件,用来放抽取的配置文件,我这里演示的是从mysql库中抽取数据,如图 我这里创建了一个logstash-mysql.conf文件,里面的内容为如下图:

input {
	stdin {
	}
	jdbc {
		type => "test"
		# mysql jdbc connection 连接地址
		jdbc_connection_string => "jdbc:mysql://xxxx:3306/xx?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC"
		# 用户名
		jdbc_user => "xx"
		# 密码
		jdbc_password => "xx"
		# jdbc 驱动包路径(我们在步骤4处理的内容)
		jdbc_driver_library => "/home/elk/logstash-6.4.3/bin/conf/mysql-connector-java-5.1.40.jar"
		# 连接驱动类名
		jdbc_driver_class => "com.mysql.jdbc.Driver"
		# 开启分页查询(默认false不开启)
		jdbc_paging_enabled => "true"
		# 单次分页查询条数(默认100000,若字段较多且更新频率较高,建议调低此值)
		jdbc_page_size => "50000"
		# 例如Cron格式:“ * * * * *”(同步频率(分 时 天 月 年),默认每分钟同步一次)
		#默认情况下没有时间表。如果没有给出时间表,则该语句仅运行一次。
		#我这里配置的时10分钟一次
		schedule => "*/10 * * * *"
		# 以下是执行相关sql语句(可执行sql文件的,可将sql直接写在这)
		# statement为查询数据sql,如果sql较复杂,建议配通过statement_filepath配置sql文件的存放路径;
		# sql_last_value为内置的变量,存放上次查询结果中最后一条数据tracking_column的值,access_time;
		#statement_filepath => "/home/elk/logstash-6.4.3/bin/conf/test.sql"
		statement => "SELECT * FROM test WHERE access_time  >= :sql_last_value  limit 100"
		# 需要记录查询结果某字段的值时,此字段为true,否则默认tracking_column为timestamp的值;
		use_column_value => true
		#递增字段的类型,numeric 表示数值类型, timestamp 表示时间戳类型
		tracking_column_type => "timestamp"
		# 需要记录的字段,用于增量同步,需是数据库字段
		tracking_column => "access_time"
		# record_last_run上次数据存放位置;
		#last_run_metadata_path => "/home/elk/last_id.txt"
		#是否清除last_run_metadata_path的记录,需要增量同步时此字段必须为false;
		#clean_run => false
    }
}
filter {
	json {
		source => "message"
		remove_field => ["message"]
	}
	date {
		match => ["message","UNIX_MS"]
		target => "@timestamp"   
	}
	ruby { 
		code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)" 
	}
	ruby {
		code => "event.set('@timestamp',event.get('timestamp'))"
	}
	mutate {
		remove_field => ["timestamp"]
	}
}
output {
	elasticsearch {
		#es服务器
		hosts => ["localhost:9200"]
		#ES索引名称
		index => "test"
		#自增ID
		document_id => "%{id}"
	}
	stdout {
		codec => json_lines
	}
}
复制代码

logstash配置mysql数据同步到es中,需要驱动。mysql-connector-java-5.1.40.jar

然后启动logstash

logstash -f config/mysql.conf
复制代码

在这里插入图片描述

启动成功!打开kinaba查看数据 在这里插入图片描述

其他相关logstash配置可以参考官网(www.elastic.co/guide/en/lo…) 在这里插入图片描述 在这里插入图片描述

结束!!谢谢!!欢迎留言,一个正在成长路上的程序猿!!!(有不足的待完善)

———————————————— 版权声明:本文为CSDN博主「屏幕有点小」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/qq_37953513…

猜你喜欢

转载自juejin.im/post/7103404868534173704
今日推荐