登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 1035|回复: 0

ELK日志分析系统

[复制链接]

 成长值: 35935

8169

主题

7094

帖子

6831

现金

黑狼创办人

Rank: 12Rank: 12Rank: 12

积分
6831
发表于 2017-11-1 23:20:03 | 显示全部楼层 |阅读模式 来自 广东佛山
简介

在工作中无论是开发还是运维,都会遇到各式各样的日志,之前分析的时候用基本的shell命令进行处理,但是面对大量数据的时候则有些力不从心,而且面对纯文字也不大直观,所以开源的日志分析系统 ELK 完美的解决了这个问题;ELK 并不是一个独立的系统,她是由 ElasticSearch、Logstash、Kibana 三个开源的工具组成。
wbpG8rk9Mi3Ii9io.jpg

  • ElasticSearch
    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
  • Logstash
    Logstash 是一个开源的日志分析、收集工具,并将日志存储以供以后使用。
  • Kibana
    Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。
环境介绍

操作系统:CentOS 7.2
java版本号:1.8u151
ELK版本均为:5.5.0
Elasticsearch IP:192.168.10.101
Logstash&apache:192.168.10.102
Kibana:192.168.10.103
JDK安装

到Java官方下载jdk安装包://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
shell > mkdir /usr/java
shell > tar zxf jdk-8u151-linux-x64.tar.gz -C /usr/java/
shell > vim /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_151
JRE_HOME=/usr/java/jdk1.8.0_151/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/libexport PATH=$PATH:$JAVA_HOME:$JRE_HOME:$CLASSPATH
shell > ln -s /usr/java/jdk1.8.0_151/bin/java /usr/bin/java
shell > java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
Elasticseach 安装

下载链接:http://www.elastic.co/downloads/past-releases
shell > wget http://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.tar.gz
shell > tar zxf elasticsearch-5.5.0.tar.gz -C /opt/
配置elasticsearch.yml文件
shell > cd /opt/elasticsearch-5.5.0/
shell > vim config/elasticsearch.yml
cluster.name: es_cluster #这里是你的el集群的名称
node.name: node0 # elseach 集群中的节点
path.data: /tmp/elasticseach/data #设置 data 目录
path.logs: /tmp/elasticseach/logs # 设置 logs 目录
network.host:192.168.10.101 #这里配置本机的 ip 地址
http.port: 9200 # 默认的端口
创建elseach用户并设置权限
shell > groupadd elseach
shell > adduser -g elseach elseach
shell > passwd elseach 123456
shell > mkdir -p /tmp/elasticseach/{data,logs}
shell > chown -R elseach:elseach /opt/elasticsearch-5.5.0/
shell > chown -R elseach:elseach /tmp/elasticseach/
修改服务器内存、最大链接数等参数,不然就会报各种ERROR。
1、修改config下的jvm.option文件
shell > vim /opt/elasticsearch-5.5.0/config/jvm.opstions
-Xms2g 改为1g或者512M
-Xmx2g 改为1g或者512M
2、修改limits.conf文件添加如下内容
shell > vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
3、编辑sysctl.conf文件添加如下内容
shell > vim /etc/sysctl.conf
vm.max_map_count=655360
shell > sysctl -p
启动Elasticseach
shell > su - elseach
shell > ./bin/elasticsearch
如果启动未成功则根据报错提示百度搜索解决方法
如果成功了则在浏览器中输入//IP地址:9200(出现下图页面则说明启动成功)
ij822Z2BxB9XINGa.jpg
安装Elasticsearch Head插件

git下载软件包
shell > yum -y install git
shell > git clone git://github.com/mobz/elasticsearch-head.git
shell > mv elasticsearch-head/ /opt/
安装node.js
shell > wget //nodejs.org/dist/v6.9.4/node-v6.9.4-linux-x64.tar.gz
shell > tar zxf node-v6.9.4-linux-x64.tar.gz -C /usr/local/src/
shell > ln -s /usr/local/src/node-v6.9.4-linux-x64/bin/node /usr/local/bin/node
shell > ln -s /usr/local/src/node-v6.9.4-linux-x64/bin/npm /usr/local/bin/npm
shell > npm -v
3.10.10
shell > node -v
v6.9.4
安装grunt
shell > npm install -g grunt-cli
shell > ln -s /usr/local/src/node-v6.9.4-linux-x64/lib/node_modules/grunt-cli/bin/grunt /usr/sbin/grunt
shell > grunt -v
grunt-cli: The grunt command line interface (v1.2.0)
修改elasticsearch.yml文件添加以下内容
shell > vim /opt/elasticsearch-5.5.0/config/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
修改Gruntfile.js
shell > vim /opt/elasticsearch-head/Gruntfile.js
connect: {
server: {
options: {
hostname: ‘0.0.0.0‘,
port: 9100,
base: ‘.‘,
keepalive: true
}
}
}
# 增加hostname属性,设置为0.0.0.0
修改app.js
shell > /opt/elasticsearch-head/_site/app.js
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "//192.168.10.101:9200";
# 把localhost修改成ES的服务器地址,如上面192.168.10.101
运行head
shell > cd /opt/elasticsearch-head
shell > npm install
# 如果安装时报错则尝试下面命令
shell > npm install [email protected] --ignore-script
# 启动
shell > grunt server
# 后台启动
shell > cd /opt/elasticsearch-head/ && grunt server &
启动成功后再浏览器中输入: //IP地址:9100
j9X0sIo1Lt03iq11.jpg
如果是第一次搭建好,里面是没有数据的,node0 节点也没有集群信息
Logstash安装

下载地址:http://www.elastic.co/downloads
shell > wget http://artifacts.elastic.co/downloads/logstash/logstash-5.5.0.tar.gz
shell > tar zxf logstash-5.5.0.tar.gz -C /opt
shell > cd /opt/logstash-5.5.0/
shell > bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
Hello World #在此输入Hello World,看到有返回说明安装成功
{
"@timestamp" => 2017-10-31T07:47:48.466Z,
"@version" => "1",
"host" => "localhost",
"message" => "Hello World"
}
编辑 logstash 配置文件用来收集Apache日志文件:
shell > mkdir /opt/logstash-5.5.0/etc
shell > vim /opt/logstash-5.5.0/etc/logstash.conf
input {
file {
type => "apache-log" # log 名
path => "/var/log/httpd/access_log" # log 路径
}
}
filter {
#Only matched data are send to output. 这里主要是用来过滤数据
}
output {
elasticsearch {
action => "index" #The operation on ES
hosts => "192.168.10.101:9200" #ElasticSearch host, can be array. # elasticseach 的 host
index => "apachelog" #The index to write data to.
}
}
测试语法是否正确,更多选项可以使用./bin/logstash --help查看
shell > ./bin/logstash -f etc/logstash.conf -t
Configuration OK #有OK输出说明没问题
启动Logstash来收集日志
shell > ./bin/logstash -f etc/logstash.conf &
好了,logstash 可以开始收集日志了,当日志文件有变化时,会动态的写入到 elastaticseach 中,先让我们来产生一些日志吧,刷新 //192.168.10.102/ (apache网站)一直刷新,apache 产生访问日志。ok,打开我们的 elasticseach 的 web 页面 //192.168.10.101:9200
bxN7U0Tudc28dogF.jpg
这里就出现了我们刚刚配置的 apachelog 的日志,点开数据浏览
WpinIziUgHHfRgIb.jpg
这里很详细的列出了我们的日志文件,还有字段,左边可进行相应的搜索,右边点击可查看具体的日志信息。 如果想要学习收集其他日志可以参考此PDF文档:http://www.gitbook.com/download/pdf/book/chenryn/elk-stack-guide-cn
至此我们已经能够收集日志,并进行搜索,接下来我们来将搜索数据可视化成图表
Kibana 的安装

可以到http://www.elastic.co/downloads 对应自己的版本
shell > wget http://artifacts.elastic.co/downloads/kibana/kibana-5.5.0-linux-x86_64.tar.gz
shell > tar zxf kibana-5.5.0-linux-x86_64.tar.gz -C /opt/
编辑配置文件
shell > cd /opt/kibana-5.5.0-linux-x86_64/
shell > vim config/kibana.yml
server.port: 5601 # kibaba 服务 port
server.host: "192.168.10.103" # 你的kibaba 的服务host
elasticsearch.url: "//192.168.10.101:9200" # elastaticseach 的host
kibana.index: ".kibana" # kibana
启动kibana
shell > ./bin/kibana
log [09:10:51.169] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
log [09:10:51.262] [info][status][plugin:[email protected]] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [09:10:51.293] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
log [09:10:51.316] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
log [09:10:51.532] [info][status][plugin:[email protected]] Status changed from uninitialized to green - Ready
log [09:10:51.544] [info][listening] Server running at //192.168.10.103:5601
在浏览器中输入//192.168.10.103:5601(注意防火墙)
yaxXXgGfPghagAHW.jpg
这里要先添加 index,在 输入框输入我们刚刚收集的 apachelog 作为 index 名称
tqhHOMm2Ca78KFPG.jpg
点击 create 创建
OuXC77w5rRb9uG79.jpg
点击Discover查看实时数据
mnBqJB2RPbfZE7rH.jpg
点击Timelion查看实时访问量
nw8IPA6hGZ4zW6ng.jpg
点击Visualize查看数据分析图,比如饼状图
Nq7JgUqt8yz5650Q.jpg
如果想让图像界面更加直观可以尝试安装Marvel插件,这样简单的 ELK 系统就搭建起来了,当然,正真的使用环境中,我们会使用集群搭建。利用 redis 来处理日志队列。
参考网站:http://kibana.logstash.es/content/ # ELKstack 中文指南
以上是ElasticSearch+Logstash+Kibana的全部过程,如果喜欢的话请关注一下小编。




上一篇:20分钟轻松学会shell编程,80%人看过这篇就收藏了
下一篇:shell脚本-如何将字符串分割成数组
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-15 11:18 , Processed in 0.124227 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表