ELK日志收集环境linux安装
文章目录
里在对ELK做一下简述,ELK是有Elastic公司的三个组件配合进行日志收集,分别是:
- ElasticSearch:用于存储日志信息。
- Logstash:用于收集、处理和转发日志信息。
- Kibana:提供可搜索的Web可视化界面。
1、安装ElasticSearch
1.创建elasticsearch目录
cd /usr/local/
mkdir tool
cd tool
mkdir elasticsearch
cd elasticsearch
2.下载Elasticsearch
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.2.tar.gz
解压es包
tar -xvf elasticsearch-5.4.2.tar.gz
进入es/bin包
cd elasticsearch-5.4.2/bin
启动es
./elasticsearch
错误整理
这个问题是由于内存分配不够造成的,修改适合本机的内存,修改文件config/jvm.options
vi ../config/jvm.options
由于我的服务器内存较小,修改为512m,具体可以根据情况修改,如下:
修改后在次启动:
./elasticsearch
用户权限不足
这个问题很明显,不允许使用root用户启动,那么我们新建一个es用户,并赋予权限:
添加es用户
useradd es
添加es用户密码
passwd es
将文件夹elasticsearch-5.4.2赋予es权限
chown -R es:es /usr/local/tool/elasticsearch/elasticsearch-5.4.2
切换为es用户
su es
再次启动es
./elasticsearch
这次启动成功了,我们在使用一个窗口登录root用户,输入命令:
curl -X GET http://localhost:9200
如图所示,可以成功访问
在浏览器访问http://118.24.242.170:9200/拒绝访问(118.24.242.170为服务器ip)
使用root用户,打开elasticsearch.yml文件,如下:
vi /usr/local/tool/elasticsearch/elasticsearch-5.4.2/config/elasticsearch.yml
文件内增加如下代码
network.host: 0.0.0.0
使用es用户启动,发现又出现了错误如下,得到错误信息如图
使用root用户打开如下文件:
vim /etc/sysctl.conf
添加如下配置:
vm.max_map_count = 655360
使配置生效
/sbin/sysctl -p
然后使用es用户启动Elasticsearch,这次可以成功启动了,如果需要后台启动的话,在启动命令后加&
,如下所示:
./elasticsearch &
2、安装Logstash
1.下载Logstash
官网下载地址:https://www.elastic.co/downloads/logstash
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.4.2-linux-x86_64.tar.gz
!!这边声明下,我这里写错了,请复制上面的链接直接在linux命令行在线下载!E和L版本必须保持一致!!!
!!这边声明下,我这里写错了,请复制上面的链接直接在linux命令行在线下载!E和L版本必须保持一致!!!
!!这边声明下,我这里写错了,请复制上面的链接直接在linux命令行在线下载!E和L版本必须保持一致!!!
!!这边声明下,我这里写错了,请复制上面的链接直接在linux命令行在线下载!E和L版本必须保持一致!!!
!!这边声明下,我这里写错了,请复制上面的链接直接在linux命令行在线下载!E和L版本必须保持一致!!!
!!这边声明下,我这里写错了,请复制上面的链接直接在linux命令行在线下载!E和L版本必须保持一致!!!
本人是从本地上传到服务器上的,使用的是6.6.1。
2.解压Logstash
进入上传目录解压Logstash
tar -zxvf logstash-5.4.2.tar.gz
3.测试Logstash
进入logstash目录
cd logstash-6.6.1
简单输出到控制台
bin/logstash -e 'input { stdin { } } output { stdout {} }'
若出现内存错误和es的解决方案相同
如图所示,即为启动成功
输入dalaoyang,如下所示
4.读取文件输出到Redis
input {
file {
type => "test_log"
path => ["/Users/dalaoyang/logs/my.log"]
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
if [type] == 'test_log' {
multiline {
pattern => "^%{TIMESTAMP_ISO8601} "
negate => true
what => previous
}
}
}
output {
if [type] == "test_log" {
redis {
host => "ip"
port => "6379"
data_type => "list"
key => "log"
#redis密码
password => "123456"
}
# stdout {codec => rubydebug}
}
}
启动命令 bin/logstash -f
上面配置的文件位置
比如
bin/logstash -f logstash.conf
安装多行解析插件logstash-filter-multiline
logstash-plugin install logstash-filter-multiline
3、安装Kibana
这一步需要下载与Elasticsearch版本相同的kibana,本人是从本地上传到服务器上的,使用的是6.6.1。
https://www.elastic.co/downloads/kibana
在服务器上传目录解压kibana:
tar -zxvf kibana-6.6.1-linux-x86_64.tar.gz
1.修改配置
修改config/kibana.yml文件配置:
vim config/kibana.yml
kibana.yml常见配置项
# pingElasticsearch超时时间
elasticsearch.pingTimeout
# 读取Elasticsearch数据超时时间
elasticsearch.requestTimeout
#Elasticsearch主机地址
elasticsearch.url: "http://ip:9200"
# 允许远程访问
server.host: "0.0.0.0"
# Elasticsearch用户名 这里其实就是我在服务器启动Elasticsearch的用户名
elasticsearch.username: "es"
# Elasticsearch鉴权密码 这里其实就是我在服务器启动Elasticsearch的密码
elasticsearch.password: "es"
根据情况增加配置即可,本人测试使用的是如下:
#Elasticsearch主机地址
elasticsearch.url: "http://ip:9200"
# 允许远程访问
server.host: "0.0.0.0"
# Elasticsearch用户名 这里其实就是我在服务器启动Elasticsearch的用户名
elasticsearch.username: "es"
# Elasticsearch鉴权密码 这里其实就是我在服务器启动Elasticsearch的密码
elasticsearch.password: "es"
2.启动Kibana
直接启动,进入bin目录后
./kibana
后台启动,进入bin目录后
nohup ./kibana &
访问 http://ip:5601/ 即可
如果失败,请确定es和kibana的版本要完全一致