写在开始
做项目不记录日志?线上的问题永远不会知道何时发生过?只会在出现事故之后身处茫然之中。
由于之前ELK日志分析是在自己的服务器上进行试水,断断续续运行了一年多时间。
今天抽空赶紧把ELK迁移一下,由于Logstash本身就配置于各个系统之中,所以这里只是对Redis、Elasticsearch和Kibana进行了配置,当然还有一些邮件发送的配置。
看了下官网,Elasticsearch和Kibana已经进行了升级,Kibana更新到了版本5,而Elasticsearch也跟随升级到了5。由于系统环境是JDK1.7,而Elasticsearch依赖JDK1.8,同时Kibana又必须依赖Elasticsearch,只能升级作罢,按照原来的迁移。
系统架构
ELK.png
平台优势
为什么要搭建ELK系统?
- 方便开发或者运维人员统计分析和查询日志信息。
- 对于错误日志统一处理并发送通知。
相关软件
Logstash-2.1.1
Redis-3.2.8
Elasticsearch-2.4.4
Kibana-4.3.1
Nginx-1.6.2
JDK-1.7
sendmail
迁移说明
配置Redis
- 建议使用内网IP
- 建议修改 默认端口6379
- 配置文件在redis.conf,修改相关的host、IP以及密码
- 启动 ./redis-server /home/tools/redis-3.2.8/redis.conf& #加&实现后台运行
- 测试连接 ./redis-cli -h 127.0.0.1 -p 6379
文档: https://cloud.tencent.com/developer/article/1095663
配置Elasticsearch
- 版本选择 2.4.4,由于5以上版本要基于JDK1.8以上,所以放弃。
- 禁止使用root启动(自行创建用户),这不是一个好的主意,启动时有警告。
- 建议内网配置通信,不要暴露IP
- 建议修改默认端口9200
- 最后Elasticsearch是从2版本直接跳跃到5版本的,可能是要配置kinbana
启动说明
elasticsearch -h # 查看相关参数
elasticsearch -d # 后台运行
curl -X GET http://127.0.0.1:9200 # 测试是否启动
默认配置下是不允许root用户启动的,危险系数比较高。当然这里也有解决方法,但不建议使用。
编辑bin目录下的elasticsearch 加上ES_JAVA_OPTS属性即可。
代码语言:javascript复制ES_JAVA_OPTS="-Des.insecure.allow.root=true"
配置kinbana
- 建议内网配置通信,不要暴露IP,可以通过Nginx做反向代理实现鉴权登陆
- 登陆后,需要等Elasticsearch中有数据才可以创建index
- 启动命令 nohup kibana &
注意:
当输入nohup kibana & 命令后,需要按任意键返回到shell窗口。
退出当前登录窗口用exit命令,不要直接点击窗口上的叉来关闭。
配置邮件发送
- 安装 yum install -y sendmail
- 配置 文件 vi /etc/mail.rc
#参数自行修改
set from=admin@52itstyle.com smtp=smtp.52itstyle.com smtp-auth-user=admin@52itstyle.com smtp-auth-password=123456 set smtp-auth=login
- 启动服务 service sendmail start
- 检测服务 chkconfig --list |grep sendmail
- 测试 mail -s "test" 345849402@qq.com <content.txt
最后的最后,这些配置一定要配置开机启动。