ELK 从0开始

  • A+
所属分类:elk

我的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/1676798

ELK平台是当前应用比较广泛的一套开源实时日志分析解决方案。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 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
最佳实践

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

3
参考资料

折腾过程中,得到了以下参考资料的帮助,一并感谢!

 

以上内容只是最基础的Hello World版本ELK部署说明,还不涉及到集群、分布式收集、grok高级技巧等。关于复杂场景下的ELK部署和应用,等我功力提升后再来分享啦!

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
ssh
  • 版权声明:本站原创文章,于2017年9月2日04:25:14,由 发表,共 4608 字。
  • 转载请注明:ELK 从0开始 | abyun

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: