ELK实时日志分析系统搭建
系统:CentOS6.5
elasticsearch:5.5.1
kibana:5.5.1
logstash:5.5.1
JDK:1.8
一、下载软件包
https://www.elastic.co/downloads/
二、安装部署
1、JDK
tar -xvf jdk-8u45-linux-x64.gz
mv /home/src_package/jdk1.8.0_45 /usr/local/
vim /etc/profile
2、elasticsearch
将tar.gz压缩包解压到/
unzip elasticsearch-5.5.1.zip
mv elasticsearch-5.5.1 elasticsearch
vim elasticsearch/config/elasticsearch.yml
修改如下配置:
cluster.name: es
path.data: /data/ELK/data
path.logs: /data/ELK/logs
bootstrap.mlockall: true
network.host: 0.0.0.0
http.port: 9200
启动:
启动前先添加elasticsearch的用户,为了安全不允许root直接启动
bin/elasticsearch
安装elasticsearch5以上,会出现很多问题,這里把问题记录一下
错误一、max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决方法:
在/etc/security/limits.conf中添加如下两行:
elasticsearch hard nofile 65536
elasticsearch soft nofile 65536
当然,我的启动用户设置为elasticsearch,如果你是其他的需要改一下
错误二:memory locking requested for elasticsearch process but memory is not locked
该错误原因是在elasticsearch.yml配置文件中开启了bootstrap.memory_lock: true,建议生产环境开启
解决方法:
在/etc/security/limits.conf中添加如下两行
baoshan soft memlock unlimited
baoshan hard memlock unlimited
错误三、max number of threads [1024] for user [elasticsearch] is too low, increase to at least [2048]
解决方法:
进入limits.d下的配置文件:vi /etc/security/limits.d/90-nproc.conf ,修改配置如下:
* soft nproc 1024
修改为:
* soft nproc 2048
错误四:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决方法:
修改sysctl文件:vi /etc/sysctl.conf ,增加下面配置项:
增加改行配置:vm.max_map_count=655360
保存退出后,执行:
sysctl -p
错误五、system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
解决方法:
修改elasticsearch.yml文件,增加如下内容:
bootstrap.system_call_filter: false
修改完错误之后以deamoe方式启动 bin/elasticsearch -d
启动后查看9200及9300端口处于监听状态,表示elasticsearch启动成功
通过IP+端口的方式查看:
安装X-Pack插件,官方推荐,5.x版本以后不建议head和kopf,支持不太好,并且安装复杂。
elasticsearch安装X-Pach插件命令bin/elasticsearch-plugin install x-pack
3、Logstash
安装
tar -zxvf logstash-5.5.1.tar.gz
mv logstash-5.5.1 logstash
cd logstash
echo "export PATH=\$PATH:/home/web/ELK/logstash/bin" > /etc/profile.d/logstash.sh 配置环境变量
. /etc/profile 使配置生效
logstash常用参数
-e :指定logstash的配置信息,可以用于快速测试;
-f :指定logstash的配置文件;可以用于生产环境;
启动
若采用配置文件启动,输出信息到屏幕,添加配置文件如下:
input { stdin {} }
output {
stdout { codec=> rubydebug }
}
# logstash -f logstash-simple.conf //普通方式启动
Logstash startup completed
# logstash agent -f logstash-simple.conf --verbose //开启debug模式
Pipeline started {:level=>:info}
Logstash startup completed
hello world. //手动输入hello world.
{
"message" => "hello world.",
"@version" => "1",
"@timestamp" => "2015-10-08T14:01:43.724Z",
"host" => "0.0.0.0"
}
或输出信息到redis中,添加配置文件如下:
input { stdin { } }
output {
stdout { codec => rubydebug }
redis {
host => '127.0.0.1'
data_type => 'list'
key => 'logstash:redis'
}
}
logstash agent -f logstash_to_redis.conf --verbose 启动
4、redis
安装
這里为了方便,使用yum直接安装
yum -y install redis
/etc/init.d/redis start
5、kibana
tar -zxvf kibana-5.5.1-linux-x86_64.tar.gz
mv kibana-5.5.1-linux-x86_64 kibana
cd kibana/
vim config/kibana.yml 取消elasticsearch.url: "http://localhost:9200" 前面的注释
启动kibana
/bin/kibana
通过IP+端口的方式查看,默认端口是5601
這里要修改kibana.yml中的server.host监听IP,不然无法从外网访问
這里kibana是一直在前台启动的,可以使用nohub来启动,或用screen启动。
6、elasticsearch和logstach结合
将logstash的信息输出到elasticsearch中
cat logstash-elasticsearch.conf
input { stdin {} }
output {
elasticsearch { hosts => "192.168.1.104" }
stdout { codec=> rubydebug }
}
然后基于刚才的配置文件启动logstash
logstash -f logstash-elasticsearch.conf
启动之后默认监听端口为9600
用curl命令发送请求查看elasticsearch是否接收到了数据
刷新kibana页面,可以看到可以找到搜到数据,并以logstash-*为索引,点击create创建索引
ELK配置完成。
【nginx优化】使用socket方式链接Nginx优化php-fpm性能
【环境配置】Postfix2.10+ssl+dovecot搭建邮件服务器
【实践分享】Linode VPS和Vultr VPS使用体检对比