您的位置:首页 > 运维架构 > 网站架构

ELK日志架构一之ELK简介及Elasticsearch安装

2017-12-03 10:32 615 查看
随着分布式微服务的盛行,功能模块的拆分细化,无论对于开发还是运维,日志都是极为重要的。如何存储分析定位和查看日志,一百个公司有一百个做法。有的很少记录,有的日志等级不分,有的写入文本或扔到数据库后不管不问,等到用户投诉及发现问题,才会翻上一翻。
如何正确且优雅的记录日志呢?可能不少小伙伴都接触过,对于中小型互联网创业公司而言,ELK搭建日志分析系统是个非常不错的选择。

ELK平台是当前应用比较广泛的一套开源的实时日志分析解决方案。ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官网 https://www.elastic.co/products

架构图



Elasticsearch
Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

Logstash
Logstash 是开源的服务器端数据处理管道,能够同时 从多个来源采集数据、转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(我们的存储库当然是 Elasticsearch。)

Kiabana
Kibana 让您能够可视化 Elasticsearc
4000
h 中的数据并操作 Elastic Stack,因此您可以在这里解开任何疑问:例如,为何会在凌晨 2:00 被传呼,雨水会对季度数据造成怎样的影响。

工作流程
Logstash(shipper)实时监控并过滤收集到的每个服务的日志信息
Logstash(shipper)将收集到的日志(INFO、DEBUG、RROR、WARN等)分别发送给Redis
Logstash(indexer)按照日志分类分别从Redis读取日志信息并发送给ElasticSearch
Logstash(indexer)过滤出RROR日志通过邮件或其他webhook方式警告开发运维人员
Kibana读取ElasticSearch数据结合自定义搜索进行页面展示

ELK日志架构系列目标是完成日志架构 ELK(Elasticsearch+Logstash+Kibana+Redis)全流程部署及常规用法示例,柚子将记录自己的实操过程,以达到学习和回顾的目的。

ElasticSearch安装

ElasticSearch至少要求Java8环境,且推荐使用Oracle JDK version 1.8.0_131。所以,在插入Elasticsearch之前,一定要检查你服务器的Java环境。

安装前环境处理
当前操作系统版本为centos7.2,内核版本为3.10.0-514.26.2.el7.x86_64,而ElasticSearch要求JDK1.8以上,推荐内核版本3.5以上。
升级操作系统内核
1.导入key

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2.安装elrepo的yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm[/code] 3.安装内核
yum --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml -y

4.查看默认启动顺序,设置默认启动(从0开始计数)
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg

CentOS Linux (4.8.10-1.el7.elrepo.x86_64) 7 (Core)  
CentOS Linux (0-rescue-7d26c16f128042a684ea474c9e2c240f) 7 (Core)

grub2-set-default 0

5.重启服务
reboot


安装jdk1.8
1.查看已经安装的jdk
rpm -qa|grep jdk




2.卸载原jdk
yum -y remove java-1.7.0-openjdk-1.7.0.95-2.6.4.0.el6_7.x86_64

3.去jdk官网下载jdk-8u144-linux-x64.tar.gz,解压
jdk官网http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/local/java/

安装完毕后在/etc/profile文件末尾添加
export JAVA_HOME=/usr/local/java/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

/etc/profile生效
source /etc/profile

4.查看环境部署



下载安装Elasticsearch6.0.0
1.下载Elasticsearch6.0.0
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.tar.gz[/code] 2.解压到指定路径/usr/local下
tar -xvf elasticsearch-6.0.0.tar.gz -C /usr/local/

3.进入解压目录,现在我们准备开始我们的节点和单个集群:
cd /usr/local/elasticsearch-6.0.0/bin
./elasticsearch

4.运行es时要使用普通账号,若没有普通账户可以和博主一样创建一个账号
adduser
yolo
passwd yolo
# 输入新密码

5.修改一些配置及常见问题解决

去掉注释并修改config/elasticsearch.yml
cluster.name: yolo-search
network.host: 0.0.0.0
http.port: 9200 # 默认端口

开启端口
iptables -I INPUT -p tcp --dport 9200 -j ACCEPT

不可使用root执行,需要更改程序用户及用户组
chown yolo:yolo -R elasticsearch-6.0.0/


常见问题:

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 986513408 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/elasticsearch-6.0.0/bin/hs_err_pid32313.log
内存不够,需要修改jvm参数来加大内存。
-Xms512g
-Xmx512g

max number of threads [3882] for user [yolo] is too low, increase to at least [4096]
sudo vi /etc/security/limits.conf
# 在文件末尾增加如下配置
yolo soft nofile 65536
yolo hard nofile 65536
yolo soft nproc 4096
yolo hard nproc 4096

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
vi /etc/sysctl.conf
# 添加
vm.max_map_count = 262144
# 执行命令
sysctl -p

执行bin/elasticsearch
./elasticsearch


当执行到这里出现了started,那么恭喜你成功了!



登录http://你的IP:9200,会出现一段JSON格式数据。如图:



以上就是ELK日志架构一之ELK简介及Elasticsearch安装的全流程,如有错误,欢迎指正。

参考自
http://blog.51cto.com/itstyle/1983296
http://blog.csdn.net/senior_lee/article/details/54351320
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: