ELK基本原理我就不再阐述了,网上一搜一大推
首先说一下运行环境:
(CentOS7和java1.8.0)
elasticsearch7以后都自己集成了jdk,可以忽略,并且会对jdk的版本有要求,不低于11
然后登陆elastic的官网地址下载ELK组件:https://www.elastic.co/cn/products
我是下载了6.3.0版本的:
elasticsearch-6.3.0
logstash-6.3.0
kibana-6.3.0-linux-x86_64
下载完之后逐个解压到随意目录下,我这里的安装顺序为elasticsearch、logstash、kibana
一、elasticsearch的安装
在成功运行elasticsearch之前需要完成几个配置的修改,包括系统配置和应用设置,还有在启动的时候不可以使用root用户,elasticsearch文件夹的属主和属组需要修改为普通用户
1、修改系统配置:
vim /etc/security/limits.conf
# 在最后添加/修改这4行,因为elasticsearch对系统最大连接数有要求
# 需重启生效
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
vim /etc/security/limits.d/20-nproc.conf
# 第一行最后一个数,修改为4096,如果是则不用修改
# limits.d下面的文件可能不是20-nproc.conf,可能是19-nproc.conf或者其他数字开头的文件。
# 修改内容是一样的,一般这个文件夹下就一个文件
# 需重启生效
* soft nproc 4096
root soft nproc unlimited
vim /etc/sysctl.conf
# 添加如下参数
vm.max_map_count = 655360
fs.file-max=655360
# 对修改内容生效
sysctl -p
2、修改elasticsearch配置文件
vim /you_path/elasticsearch-6.3.0/config/elasticsearch.yml
# 修改内容
cluster.name: testes #集群名字,拥有相同名字的节点才能加入集群
node.name: node-1 #每个节点的名字,不能重复
path.data: /you_path/elasticsearch-6.3.0/data #数据保存目录
path.logs: /you_path/elasticsearch-6.3.0/logs #日志保存目录
bootstrap.memory_lock: true #禁止使用交换分区影响效率
http.port: 9200 #ES端口
discovery.seed_hosts: ["192.168.94.128"] #集群中可能成为master的节点,可以写多台
network.host: 0.0.0.0 #节点IP
cluster.initial_master_nodes: ["node-1"] #初始master节点
# 添加如下参数
http.cors.enabled: true // 开启跨域访问支持,默认为false
http.cors.allow-origin: "*" // 跨域访问允许的域名地址,支持正则
ok,以上配置完修改后就可以启动ELK,通过以下命令启动
chown -R es:es /you_path/elasticsearch-6.3.0
cd /you_path/elasticsearch-6.3.0
./bin/elasticsearch -d // -d 后台运行,我会在另外一篇文章里使用supervisor方法统一启动ELK
启动成功后访问elasticsearch的默认9200端口,就会出现类似以下的内容
如果没有启动成功,在启动命令的时候去掉-d参数,根据报错信息修改配置参数等
二、logstash的安装
logstash的安装就非常简单了,把下载的文件解压到相应的目录下,然后根据你的需求写一个配置文件,再启动就ok了,这里面我贴出来一个简单的配置文件:
vim /you_path/logstash-6.3.0/config/test.conf
# 没有这个文件则创建,创建什么文件名无所谓,后面会根据这个文件来启动logstash
input {
file {#这里数据源是采集的本地日志文件
path => ["/tmp/test_data"]
codec => json {
charset => "UTF-8"
}
}
}
output {
elasticsearch {
hosts => ["172.168.254.26:9200"] #ES服务的地址
index => "lalala-%{+YYYY.MM.dd}" #建立索引的格式
document_type => "test"
#user => "elastic"
#password => "changeme"
}
保存并退出,指定这个文件来启动logstash
cd /you_path/logstash-6.3.0
nohup ./bin/logstash -f config/test.conf &> run.log & // 后台运行logstash
启动完成之后因为没有安装kibana,展示不出来logstash收集的数据,所有接着安装kibana
三、kibana的安装
kibana的安装更简单了,解压缩之后直接启动程序即可。这个前提条件是elasticsearch和kibana是在一台服务器里安装的,如果elasticsearch在其他服务器里面安装则需要修改相应的配置,我想没有多少人会分开安装吧?下面是启动命令:
cd /you_path/kibana-6.3.0-linux-x86_64/
nohup ./bin/kibana -H 0.0.0.0 &> run.log & // 后台运行kibana
es和kibana在不用主机的情况下,需要修改kibana配置文件,定义好es主机的地址
vi config/kibana.yml
server.port: 5601
server.host: "192.168.94.128" #kibana服务的ip
elasticsearch.hosts: ["http://192.168.94.128:9200"] #es服务的信息
ok,稍等一会则完成启动,可以看出kibana的页面是越做越好看
到这里ELK的三大组件全部安装成功,并成功启动。现在展示一个收集日志的流程
之前在logstash的test.conf文件中定义了日志的目录,现在添加一些数据以便查看
vim /tmp/test_data
{"user": "test", "age": "11"}
{"user": "test1", "age": "12"}
{"user": "test2", "age": "13"}
{"user": "test3", "age": "14"}
{"user": "test4", "age": "15"}
{"user": "test5", "age": "16"}
{"user": "test6", "age": "17"}
{"user": "test7", "age": "18"}
{"user": "test8", "age": "19"}
{"user": "test9", "age": "20"}
这时会显示在test.conf中定义的index,添加索引是支持正则的,所以在Index pattern中可以填入“lalala-*”,像如下图片一样,然后点击Next step
然后选择@timestamp,选择这个是为每个字段标记时间,可以让收集到的数据在时间轴上展示,到此添加一个index完成