文章转载:http://www.jianshu.com/p/797073c1913f 
 仅用作个人学习,收藏
我的 
 ELK 
 搭建笔记(基于阿里云) 
 “不是最好的,但一定是有良心的操作记录。”目录一览 
 0 重不重要都得有的开头 
 1 安装配置 
 1.1 CentOS 7.x环境准备 
 1.1.1 安装操作系统 
 1.1.2 更新系统软件包(可选) 
 1.1.3 更改主机名(可选) 
 1.1.4 创建应用账号(必选) 
 1.1.5 安装Java运行环境(可选) 
 1.2 ELK安装 
 1.2.1 安装ElasticSearch with x-pack 
 1.2.2 Trouble shooting for elasticsearch 
 1.2.3 安装Logstash 
 1.2.4 Trouble Shooting for Logstash 
 1.2.5 安装Kibana with x-pack 
 1.2.6 Kibana界面日志检索 
 2 最佳实践 
 2.1 Logstash & JDBC 
 2.1.1 安装jdbc-input插件 
 2.1.2 下载jdbc-mysql连接驱动 
 2.1.3 配置jdbc日志收集参数 
 2.1.4 启动Logstash连接数据库收集日志 
 2.2 Kibana相关 
 2.2.1 获取指定索引下指定类型日志的映射表 
 2.2.2 修改数据类型映射mappings 
 2.2.3 判断字段是否存在 
 3 参考资料
0重不重要都得有的开头 
 下面一段摘抄自互联网 http://baidu.blog.51cto.com/71938/1676798ELK平台是当前应用比较广泛的一套开源实时日志分析解决方案。ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站: https://www.elastic.co/products 
 Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
1安装配置 
 1.1 CentOS 7.x环境准备 
 1.1.1 安装操作系统以阿里云 
 ECS 
 主机为例, 
 安装系统时选择 
 CentOS 7.2 64 
 位版本。
1.1.2 更新系统软件包(可选)[root@elk-test ~]# yum update1.1.3 更改主机名(可选)[root@iZ2ze1filcblgjr9dcoxioZ ~]# hostnameelk-test[root@iZ2ze1filcblgjr9dcoxioZ ~]# hostname# elk-test[root@elk-test ~]# 1.1.4 创建应用账号(必选)以应用账号身份启动 
 ElasticSearch、 
 Logstash和 
 Kibana[root@elk-test ~]# useradd elk-test1.1.5 安装Java运行环境(可选)下载 
 JRE安装包 
 ,并上传到服务器 
 root 
 用户目录
以 
 root身份安装 
 JRE: 
 yum localinstall jre-8u121-linux-x64.rpm 
 配置 
 Java环境变量: 
 编辑文件 
 /etc/profile 
 在文件末尾增加如下内容
验证 
 Java环境, 
 执行命令 
 java -version查看 
 Java版本信息, 
 如果一切正常的话,能看到如下信息:
java version 1.8.0_121Java(TM) SE Runtime Environment (build 1.8.0_121-b13)Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
如有需要,也可 
 下载 
 Server JRE手工安装。 
 **1.2 ELK安装 
 1.2.1 安装ElasticSearch with x-pac执行命令 
 su - elk-test切换到应用账户 
 elk-test,下载和安装 
 ElasticSearch和 
 x-pack安全组件。如果你不需要安全认证, 
 x-pack组件可以不用安装,相应的配置参数也不必设置。
根据需要,修改文件 
 ElasticSearch目录下 
 config/jvm.options文件,调整 
 jvm内存参数。
修改监听端口,允许外部系统远程访问: 
 编辑文件 
 config/elasticsearch.yml 
 修改参数 
 network.host的数值
启动 
 ElasticSearch[elk-test@elk-test elasticsearch-5.0.0]$bin/elasticsearch
验证 
 ElasticSearch服务,执行命令: 
 curl http://elastic:changeme@10.0.0.136:9200 
 期待返回内容如下:
1.2.2 Tr**ouble shooting for elasticsearch**max file descriptors
-  max file descriptors [65535] forelasticsearch process likely too low, increase to at least [65536]修改文件/etc/security/limits.conf,末尾增加如下内容
- soft nofile 65536 hard nofile 65536max virtual memory
max virtual memory areas vm.max_map_count[65530] likely too low, increase to at least [262144]
修改文件 
 /etc/sysctl.conf 
 设置参数 
 vm.max_map_count= 262144 
 执行命令 
 sysctl -p
完成以上步骤,重新 
 su - elk-test 
 再来启动 
 ElasticSearch 
 。 
 1.2.3 安装Logstash下载 
 Logstash
测试一段 
 syslog日志文本。在 
 logstash主目录创建配置文件 
 sample.conf,内容如下
执行命令 
 bing/logstsh -f sample.comf 
 ,启动 
 Logstash。
**启动后,输入以下内容:
Jan 19 12:28:31 elk-test sshd[13990]:pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=sshruser= rhost=92.246.190.31 user=root 
 可以看到 
 Logstash在 
 Console返回的输出内容,同时以上内容也发送到了 
 ElasticSearch。 
 1.2.4 Trouble Shooting for Logstash**为什么Logstash启动特别缓慢?
原因可能是 
 JVM的随机数字生成参数导致,诊断和修改方式: 
 修改文件 
 $JAVA_HOME/jre/lib/security/java.security 
 设置参数 
 securerandom.source=file:/dev/urandom
重新启动 
 Logstash,是不是快多了? 
 为什么要这么做,我已经帮你搜好了,请参考以下文档:
StackOverflow-Logstashstartup time #5491 - 
 Orace官方 
 -Avoiding JVM Delays Caused byRandom Number Generation 
 1.2.5 安装Kibana with x-pack**执行命令 
 su - elk-test切换到应用账户 
 elk-test,下载和安装 
 Kibana和 
 x-pack安全组件。
设置 
 Kibaba对外开放的 
 IP和 
 ElasticSearch的 
 url编辑文件 
 config/kibana.yml 
 设置参数 
 server.host和 
 elasticsearch.url
启动 
 Kibana[elk-test@elk-testkibana-5.0.0-linux-x86_64]$ bin/kibana**
访问 
 Kibanna,验证服务,用户名 
 /密码: 
 elastic/changeme
看到如下界面,即表示成功,稍后再来配置。
1.2.6 Kibana界面日志检索只有当第一条日志通过 
 Logstash进入 
 ElasticSearch后,才能配置 
 Kibana索引 
 pattern。 
 操作方法是:进入 
 Kibana设置界面,点击 
 Create按钮。 
 其中 
 Index Pattern名称必须与 
 Logstash中 
 output参数设置的一致。如果 
 output参数没有设置,则默认为 
 logstash-*
**如果你的日志中有特定的时间字段,这里可以单独设置。 如果 
 Logstash的 
 output中已经配置了 
 index的名称,则必须在新的日志进入 
 ElasticSearch后,才能在 
 Kibana上创建新的 
 index pattern。进入 
 Kibana的 
 Dashboard,搜索日志,认真体验。 
 **
2最佳实践 
 2.1 Logstash & JDBC**2.1.1 安装jdbc-input插件**进入 
 Logstash目录,执行命令 
 bin/logstash-plugin install logstash-input-jdbc安装 
 JDBC输入插件。 
 2.1.2 下载jdbc-mysql连接驱动访问 
 MySQL网站, 
 https://dev.mysql.com/downloads/connector/j/,下载 
 mysql-connector-java-5.1.40,或执行命令下载。
2.1.3 配置jdbc日志收集参数创建文件 
 jdbc-login-logs-logstash.conf,并设置 
 Logstash每隔 
 5分钟( 
 /5 )连接一次数据库,将新增的日志发送到 
 ElasticSearch服务器。
2.1.4 启动Logstash连接数据库收集日志*执行命令 
 bin/logstash -f jdbc-login-logs-logstash.conf
2.2 Kibana相关 
 2.2.1 获取指定索引下指定类型日志的映射表Kibana主界面左侧,点击开发工具按钮。
进入 
 Console界面,执行如下命令: 
 GET logstash-nginx/_mappings/alm注意:替换 
 alm字符串为你自己的日志类型(来自 
 Logstash的 
 output参数) 
 返回如下:
2.2.2 修改数据类型映射mappings已经创建的 
 mappings是不能直接修改的。通常是删除后再创建一个新的修改后的 
 mappings版本。参考文档 
 :ChangingMapping with Zero Downtime2.2.3 判断字段是否存在搜索执行 exists:field_name,如: exists:login_ip3参考资料 
 折腾过程中,得到了以下参考资料的帮助,一并感谢! Elastic中文社区 
 官方网站 
 ELK 部署指南 
 分布式日志收集之 
 Logstash 笔记(一) 
 Elasticsearch 权威指南(中文版) 
 初探 
 ELK-logstash使用小结 
 logstash服务启动脚本 
 ELK安装配置之集群相关介绍及搭建 
 ELK日志管理之 
 ——logstash部署 
 How to Delete Data from Elasticsearch 
 Experiments with Kibana Timelion 
 Geo数据类型问题
以上内容只是最基础的 
 Hello World版本 
 ELK部署说明,还不涉及到集群、分布式收集、 
 grok高级技巧等。关于复杂场景下的 
 ELK部署和应用,等我功力提升后再来分享啦!
为解决文中部分图片不够清晰问题,您也可以通过以下链接查看原文(高清)内容: 
 https://pan.baidu.com/s/1nv15BWt
https://bbs.ichunqiu.com/thread-19741-1-2.html
作者:创Chen 
 链接:http://www.jianshu.com/p/797073c1913f 
 來源:简书 
 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。