平台简介
开源实时日志分析平台
- 基于Java8环境
- 基于Centos7 64位平台
- 基于ELK 5.1.1 版本
ELK官网
ELK官网文档
ELK中文手册
平台的搭建过程可以参考:开源实时日志分析ELK平台部署
Beats平台相关介绍:ELK beats平台介绍(11th)
构成部分
- Beats:
负责收集系统数据,可以直接发送到es中,也可以通过logstash中转 - logstash:
收集日志,为beats提供中转功能 - Elasticsearch:
提供数据存储,服务端聚合计算功能 - Kibana:
提供炫丽的可视化图形展示并且作为elasticsearch的搜索的小清新客户端
工作原理
Logstash
是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用
安装
解压缩之后,进入bin目录,直接执行看看结果
./logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
配置文件
自建一个配置目录:conf,创建一个配置文件 myConf.conf
input {
stdin {}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => ["192.168.139.58:9200"]
}
}
这里注意:配置elasticsearch的服务器地址
执行方法
$ bin/logstash -f conf/myConf.conf
Elasticsearch
ElasticSearch是一个开源的分布式搜索引擎,具备高可靠性,支持非常多的企业级搜索用例。像Solr4一样,是基于Lucene构建的。支持时间时间索引和全文检索。官网
这里使用的版本是5.1.1,运行之后默认端口9200
- 安装插件:elasticsearch-head
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
grunt server
修改配置文件Gruntfile.js,hostname修改为*
connect: {
server: {
options: {
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}
}
默认的运行端口为9100
- 修改elasticsearch的配置文件
修改elasticsearch.yml文件,增加下面两句,目的是允许elasticsearch-head进行访问
http.cors.enabled: true
http.cors.allow-origin: "*"
- centos7上启动错误一
错误信息如下:
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:100) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:176) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:306) ~[elasticsearch-5.1.1.jar:5.1.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-5.1.1.jar:5.1.1]
... 6 more
解决方法:不能用root用户进行启动
- centos7上启动错误二
错误信息如下:
ERROR: bootstrap checks failed
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决方法:修改/etc/security/limits.conf文件,添加或修改如下行(用户名为lxm)
lxm hard nofile 65536
lxm soft nofile 65536
- centos7上启动错误三
错误信息如下:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决方法:
临时生效的方法
sudo sysctl -w vm.max_map_count=262144
永久生效的方法:修改 /etc/sysctl.conf,增加如下的设置
vm.max_map_count=262144
执行命令让设置生效
sysctl -a
- 集群中发现的错误
elasticsearch中节点都启动但是无法形成集群问题
kibana
修改配置文件config/kibana.yml
server.port: 5601
server.host: "192.168.139.58"
elasticsearch.url: "http://192.168.139.58:9200"
启动kibana
$ bin/kibana
Beats配置:packetbeat
需要在被监控机器上安装,演示packetbeat,其他类似
- 修改配置文件 packetbeat.yml,这里直接连接elasticsearch,不通过Logstash
output.elasticsearch:
hosts: ["192.168.139.58:9200"]
- 配置elasticsearch模板
curl -XPUT 'http://192.168.139.58:9200/_template/packetbeat' -d@/home/lxm/packetbeat-5.1.1-linux-x86_64/packetbeat.template.json
- 安装beats-dashboards
$ git clone https://github.com/elastic/packetbeat-dashboards
$ cd packetbeat-dashboards/
# 将dashboard的模板配置数据存进elasticsarch里面
$ ./load.sh -url http://192.168.139.58:9200
- 启动packetbeat
$ sudo ./packetbeat -e -c packetbeat.yml
-
在Kibana中查看仪表盘