下面一段摘抄自互联网 http://baidu.blog.51cto.com/71938/1676798
ELK平台是当前应用比较广泛的一套开源实时日志分析解决方案。ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。
官方网站: https://www.elastic.co/products
- Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
- Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
- Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
安装配置
1.1 CentOS 7.x环境准备
1.1.1 安装操作系统
以阿里云ECS主机为例,安装系统时选择CentOS 7.2 64位版本。
1.1.2 更新系统软件包(可选)
[root@elk-test ~]# yum update
1.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-test
1.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_121”
Java(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 Trouble 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 65536
- max 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.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 Downtime
2.2.3 判断字段是否存在
搜索执行_exists_:field_name,如:_exists_:login_ip
参考资料
- Elastic中文社区
- 官方网站
- ELK 部署指南
- 分布式日志收集之Logstash 笔记(一)
- Elasticsearch 权威指南(中文版)
- 初探ELK-logstash使用小结
- logstash服务启动脚本
- ELK安装配置之集群相关介绍及搭建
- ELK日志管理之——logstash部署
- How to Delete Data from Elasticsearch
- Experiments with Kibana Timelion
- Geo数据类型问题
为解决文中部分图片不够清晰问题,您也可以通过以下链接查看原文(高清)内容:
https://pan.baidu.com/s/1nv15BWt