什么是ELK?
1 | ELK 是由Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体。 |
1 | Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索、支持分布式可实现高可用、提供API 接口,可以处理大规模日志数据,比如Nginx、Tomcat、系统日志等功能。 |
部署
Elasticsearch集群部署
环境初始化
1 | 1. 为保证效果特额外添加一块单独的数据磁盘大小为50G 并格式化挂载到/elk |
安装Elasticsearch
- 安装java环境
1 | http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html |
1 | tar xvf jdk-8u121-linux-x64.tar.gz -C /usr/local/ |
- 安装Elasticsearch
1 | 目前稳定版本为5.6.5,建议使用此版本用于生产环境 |
- 编辑各elasticsearch服务器节点的配置文件
1 | [root@linux-host1 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml |
- 修改各节点内存限制
1 | 修改elasticsearch的启动文件脚本 |
- 目录权限更改
1 | 修改各节点中用于存放elasticsearch数据和日志目录的权限为elasticsearch |
- 启动各节点elasticsearch服务并验证
1 | systemctl start elasticsearch |
- 通过浏览器访问各节点的elasticsearch服务端口
1 | http://10.0.10.21:9200 |
1 | 访问http://10.0.10.21:9200结果如下: |
安装elasticsearch插件之head(其中一个节点安装即可)
- 安装es5.x版本的elasticsearch-head插件
1 | 在elasticsearch 5.x 版本以后不再支持直接安装head 插件,而是需要通过启动npm方式安装 |
- 修改各节点elasticsearch服务配置文件【每个es节点都要修改】
1 | 开启跨域访问支持,然后重启elasticsearch 服务: |
- web访问elasticsearch-head
1 | http://10.0.10.21:9100 |
- 测试提交数据
- 验证索引是否存在
- 查看数据
- Master与Slave的区别
1 | Master 的职责:统计各node节点状态信息、集群状态信息统计、索引的创建和删除、索引分配的管理、关闭node节点等 |
elasticsearch 插件之kopf
1 | Git项目地址: https://github.com/lmenezes/elasticsearch-kopf |
elasticsearch集群监控
1 | [root@host21 ~]# curl -sXGET http://10.0.10.21:9200/_cluster/health?pretty=true |
python检测脚本
1 | [root@linux ~]# cat els-cluster-monitor.py |
1 | 脚本执行结果: |
排错
1 | 如果服务无法启动或启动立即停止,查看/var/log/message最新日志或ELK的logs目录 |
部署Logstash
1 | Logstash 是一个开源的数据收集引擎,可以水平伸缩,而且logstash 整个ELK |
logstash工作流程图
环境准备
1 | 服务器: |
安装logstash
1 | 官网:https://www.elastic.co/downloads/past-releases/logstash-5-6-5 |
1 | #启动 |
- Logstash测试语法
1 | logstash -f /etc/logstash/conf.d/systemlog.conf -t |
测试logstash
- 测试标准输入
1 | [root@localhost ~]# logstash -e 'input { stdin{} } |
- 测试输出到文件
1 | logstash -e 'input { stdin{} } output { file { path => "/tmp/log-%{+YYYY.MM.dd}messages.gz"}}' |
1 | [root@localhost ~]# tailf /tmp/log-2017.12.12messages.gz #打开文件验证 |
- 测试输出到elasticsearch
1 | logstash -e 'input { stdin{} } output { elasticsearch {hosts => ["10.0.10.21:9200"] index =>"mytest-%{+YYYY.MM.dd}" }}' |
1 | elasticsearch 服务器验证收到数据: |
部署kibana
1 | kibana:主要是通过接口调用elasticsearch 的数据,并进行前端数据可视化的展现。 |
- 安装kibana到10.0.10.21服务器
1 | 官方下载: |
- 配置kibana
1 | [root@host21 ~]# grep -n "^[a-Z]" /etc/kibana/kibana.yml |
- 启动kibana服务
1 | systemctl start kibana |
- 验证
1 | http://10.0.10.21:5601 |
- kibana新建索引
1 | 访问elasticsearch-head插件:http://10.0.10.21:9100,查看elasticsearch已有的日志 |
1 | 然后,登陆kibana -- Management -- Index Patterns |
由于日志并没有持续输出,所以此处显示为空,接下来将对logstash日志输出做详细说明,基本部署完成。
nginx反向代理kibana
安全部署说明
1 | 通过nginx和kibana监听127.0.0.1以及在kibana客户端绑定hosts来实现安全 |
1 | yum install gcc gcc++ pcre openssl openssl-devel zlib zlib-devel pcre-devel |
配置nginx代理kibana
1 | vim /etc/kibana/kibana.yml |
1 | yum install -y httpd-tools |
修改nginx kibana配置
1 | upstream kibana_server { |
1 | windows添加本地解析: 10.0.10.21 www.kibana5612.com |
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2017/12/10/ELK日志分析平台部署/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!