7,总结单机版ELK安装以及简单应用

接到上峰命令,产品要上ELK,遂就有了这篇文章

ELK介绍

网上copy的:
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好Web 界面,可以帮助汇总、分析和搜索重要数据日志。

自己的理解:
ELK是什么东西,很好理解,就是收集(L:Logstash),存储(E:Elasticsearch),可视化日志(K:Kibana)的。在前几年ELK为什么没有怎么听说,那是因为在服务器上tail -f就可以看日志,或者下载下来打开直接看。但是随着软件的不断发展,分布式,推荐系统,大数据等等,这些数据日积月累后的必然产物就诞生了。就拿分布式系统来说,日志都分布在各个node上,要查看一个bug,需要登录到服务器上看好多node上的日志,再比如调用连很长的话,在服务器上看日志,或者下载下来看日志,我只能说有可能好几天都找不出来问题所在。还有登陆到服务器上,是一个很危险的信号,万一rm -rf,就真的是从入门到删库跑路了。以上种种问题怎么解决呢?这个时候就是ELK上场了。

单机版安装

首先说明一下ELK采用最简单的一套策略(不包含FileBeat,FileBeat是一个好东西,但是这次不用):elasticsearch 5.6.4+kibana5.2.0+logstash5.6.3,在安装过程中,问题最多的就是ES,会遇到几个问题请参考:https://www.jianshu.com/p/6d0d78be9e30【Elasticsearch安装与应用】
之前的版本是5.52,这次用的是当前最稳定的版本5.6.4

经测试,单机版ES可以存储50G的日志,前提是8G内存,ES之所以速度快,是牺牲了一定的内存和cpu的,如果必须要存储50G以上的日志,就必须用集群,一般中小型公司单机版的完全可以满足,ES一般保存近三个月的就可以了,3个月没有发现的问题,之前的就更没有意义了。但是如果要做推荐,大数据分析,行为分析等等就需要将这些十分宝贵的日志保存下来了。

准备工作

1,安装包地址:https://pan.baidu.com/s/1z6lDEYfBwLVHSW3jZcTTIQ
2,安装jdk1.8,参考:https://www.jianshu.com/p/689e8937613f

将下载的jdk上传到服务器并解压
tar -zxvf jdk-8u161-linux-x64.tar.gz -C app/
配置环境变量
sudo vi /etc/profile
在末尾加上
export JAVA_HOME=/home/songlj/app/jdk1.8.0_161
export PATH=$PATH:$JAVA_HOME/bin
生效:source /etc/profile
测试是否安装成功java -version
安装ES

1,解压 tar -zxvf elasticsearch-5.6.4.tar.gz
2,修改配置文件,让外网能访问

cd elasticsearch-5.6.4
cd config/
vi elasticsearch.yml
network.host: 0.0.0.0

3,启动ES,不要用root启动
进入到bin目录下执行

./elasticsearch

4,会出现的错误信息,及修改办法:
for elasticsearch process is too low, increase to at least [65536]
修改办法,末尾添加:

vi /etc/security/limits.conf
注意:请将songlj修改为你对应的登陆的用户名
songlj hard nofile 65536
songlj soft nofile 65536

[1024] for user [apps] is too low, increase to at least [2048]
修改办法:vi /etc/security/limits.d/20-nproc.conf

将
* soft nproc 1024
#修改为
* soft nproc 2048

nt [65530] likely too low, increase to at least [262144]
修改办法:vi /etc/sysctl.conf

添加下面配置:
vm.max_map_count=655360

修改完sysctl.conf 之后并执行命令:

sysctl -p

5,再次启动


启动成功

6,如果外网访问不了,关闭防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service
安装logstash

1,解压:tar -zxvf logstash-5.6.3.tar.gz
2,创建logstash.conf配置文件

cd logstash-5.6.3
cd config/
vi logstash.conf

下为内容

input {
     file {
        type => "log"
        path => "/home/songlj/logs/*.log"
        start_position => "beginning"
    }
}
output {
  stdout {
   codec => rubydebug { }
  }
  elasticsearch {
    hosts => "127.0.0.1"
    index => "log-%{+YYYY.MM.dd}"
  }
}

input ,filter,output三大块, 其中input是吸取logs文件下的所有log后缀的日志文件,filter是一个过滤函数,这里不用配置,output配置了导入到
hosts为127.0.0.1:9200的elasticsearch中,每天一个索引,所以可以自己设置,es速度快原因之一倒排索引
3,启动logstash
进入到bin目录下执行

./logstash -f ../config/logstash.conf
启动成功

4,测试一下,因为logstash监听的是/home/songlj/logs这个目录下的*.log文件,现在写一个文件进去,看能不能收集到


 进入到
/home/songlj/logs
echo "zhelik可以吗" >> log3.log

下面就是logstash打印出来的,可见已经收集到了,

{
      "@version" => "1",
          "host" => "localhost.localdomain",
          "path" => "/home/songlj/logs/log3.log",
    "@timestamp" => 2018-07-18T11:12:31.724Z,
       "message" => "zhelik可以吗",
          "type" => "log"
}

但是,发现

Last error: [LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError] Elasticsearch Unreachable: [http://127.0.0.1:9200/][Manticore::SocketException] 拒绝连接 (Connection refused) {:url=>http://127.0.0.1:9200/, :error_message=>"Elasticsearch Unreachable: [http://127.0.0.1:9200/][Manticore::SocketException] 拒绝连接 (Connection refused)", :error_class=>"LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError"}

说明logstash将数据插入到ES的时候报错了,因为我的ES挂了,所以可见集群的重要性

安装Kibana

1,解压
2,修改配置文件
进入到conf

vi kibana.yml
将
server.host: "localhost"
修改为
server.host: 0.0.0.0

3,启动kibana
进入到bin目录下执行

./kibana
启动成功

4,浏览器 http://192.168.112.141:5601


Kibana日志可视化

修改为log*


文件过滤
image.png
image.png

kibana提供了过滤,搜索等等好多功能,下载就测试一下,多制造点数据,会python的可以写个爬虫,爬点数据,我这里就echo几条测试一下,

echo "今天天气好晴朗,处处好风光" >> log1.log
 echo "今天天气好晴朗,处处好风光111" >> log2.log
echo "今天天气好晴朗,处处好风光222" >> log3.log
image.png

比如:日志中有业务的关键字“111”

image.png

只需在输入栏中输入想要查找的关键字,搜索就可以了,测试或者线上发现问题,告诉开发,开发直接就打开kibana,关键字搜索之后,一切都显得那么轻松了,这里还有一个就是打日志的规范,不能乱打日志,也不能少打日志,打印日志心得:

1,log要区分war debug info error这四种情况,不能都是info,否则上线之后,日志会爆炸,
2,出入口必须打印
入口:xxx系统:method=,params=
出口:xxx系统:method=,data={},time={},code={}
3,关键业务
uuid->xxx系统:event=xxx,result={},params={},msg=

扯远了,回到正题
如图,这里是可以按时间查找的,很方便


image.png

日志的详细信息,列的很清楚


image.png

学会看kibana日志详细信息


image.png

这里多说一下:host一定要区分开,因为在分布式系统中,一个微服务是要部署到多台服务器上的,有了bug,就可以从host中知道是哪一台服务器出现了问题,修改host方式:我的centos7

hostnamectl set-hostname ELK02

其中“ELK02”就是主机名。

截止到这里已经完成上峰的任务了,但是停不下来了,再来介绍一个非常好用的插件:elasticsearch-head-master
这个插件可以看ES集群中的各个节点的状态,分片信息,分片的leader等等,能更好的理解ES的存储方式

安装elasticsearch-head-master

1,下载,解压

wget https://github.com/mobz/elasticsearch-head/archive/master.zip
unzip master.zip

如果wget,unzip不是内部命令,yum就可以了

yum -y install unzip/wget

2,进入cd elasticsearch-head-master,接下来的操作必须在这个文件夹里面进行,接下来的3,4,5,6步骤都在这个文件夹下进行的,很重要,要不然会出现乱七八糟的问题
3,安装node.js

curl -sL https://rpm.nodesource.com/setup_8.x | bash -
yum install -y nodejs

运行 node –v可以看到版本则安装成功
4,安装grunt-cli

npm install -g grunt-cli
npm install    //如果这里卡住执行npm config set registry http://registry.cnpmjs.org

5,修改gruntfile.js

vi Gruntfile.js

添加hostname: '*',原因和之前一样让外网能访问,因为我用的是虚拟机


image.png

6,启动 elasticsearch-head-master

grunt server

7,访问一下:http://你自己的ip:9100/


image.png

点击连接,没有反应,看日志也没有,看看前端有没有错


跨域问题

很明显,跨域了,对了对了,9100到9200,跨域了,怎么修改呢,毋庸置疑,要修改9200的ES
8,关闭ES,修改配置文件vi elasticsearch.yml,添加如下信息,保存
http.cors.enabled: true
http.cors.allow-origin: "*"

9,重启ES

image.png
image.png

在这个插件中可以对ES进行CRUD很方便

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,200评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,526评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,321评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,601评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,446评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,345评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,753评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,405评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,712评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,743评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,529评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,369评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,770评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,026评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,301评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,732评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,927评论 2 336

推荐阅读更多精彩内容