ElK + Filebeat安装教程

EKL Stack简介

ELK 不是一款软件,而是Elasticsearch、Logstash和Kibana首字母的缩写。这三者是开源软件,通常配合一起使用,而且先后归于Elasic.co公司的名下,所以简称ELK Stack。根据Google Trend的信息显示,ELK已经成为目前最流行的的集中式日志解决方案。

  • Elasticsearch:分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于Apache Lucene构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。

  • Logstash:数据收集引擎。它支持从各种数据源收集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置。

  • Kibana:数据分析和可视化平台。通常与Elasticsearch配合使用,对其中的数据进行搜索、分析和以统计图表的方式显示。

  • Filebeat:ELK协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于Logstash-Forwarder源码开发,是对它的替换。在需要采集日志数据的服务器上安装Filebeat,并指定日志目录或日志文件后,Filebeat就能读取数据,迅速发送到Logstash进行解析,亦或直接发送到Elasticsearch进行集中式存储和分析。

ELK+Filebeat体系结构图

  • 以FileBeat作为日志收集器
以FileBeat作为日志收集器

这种结构适用日志规模比较小的场景,用Filebeat替换Logstash作日志收集器,解决Logstash在各应用服务器占用资源高的问题,相对Logstash,Filebeat所占用的CPU和内存几乎可以忽略不计。

  • 引入消息队列作为消息缓存
引入消息队列作为消息缓存

这种结构适用于日志规模比较大的场景。但由于Logstash日志解析节点和Elasticsearch节点的负荷比较重,可将他们配置为集群模式,以分担负荷。引入消息队列,减低网络阻塞,缓存数据,避免数据丢失,但Logstash占用资源过多的问题依然存在。

本教程以第1种体系结构为例,提供安装教程。

安装环境信息

操作系统

Centos7- Minimal

JDK版本

jdk-8u40-linux-x64

软件版本

elasticsearch-5.1.1
logstash-5.1.1
kibana-5.1.1
filebeat-5.1.2
elasticsearch-head-master

Elasticsearch安装

创建elk用户组和用户

root用户无法启动Elasticsearch,需要创建非root用户。
运行groupadd elasticsearch #创建用户组
运行useradd -g elasticsearch el01 #添加用户到指定用户组
运行passwd !@#123 #创建密码
切换到el01用户

下载地址

https://www.elastic.co/downloads/elasticsearch
下载完成后ftp上传到服务器

解压到指定目录

运行tar -zxvf elasticsearch-5.1.1.tar.gz -C /opt
授权用户 chown -R el01:elasticsearch elasticsearch-5.1.1

配置./conf/elasticsearch.yml

配置文件说明参考:http://blog.csdn.net/zxf_668899/article/details/54582849
单机部署可不配
注意配置文件的格式要求:参数冒号后加空格,或者是数组中间加空格
还有注释掉的参数不能在#后边加空格不然报错

启动

运行./bin/elasticsearch -d #后台进程运行模式

启动碰到的问题

1)max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
2)max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]

解决1),vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

解决2),vi /etc/security/limits.d/90-nproc.conf
注释如下内容:
* soft nproc 1024
修改为
#* soft nproc 1024

vi /etc/sysctl.conf 添加下面配置: vm.max_map_count=655360
运行 source sysctl.conf
如果source不行,就重启系统

查看启动状态

运行curl 'http://localhost:9200'
如果看到以下信息,说明安装成功。

安装状态

运行tail -f logs/elasticsearch.log可 查询Elasticsearch启动及运行日志。

Elasticsearch-Head插件安装

切换用户su - root

软件下载地址

下载elasticsearch-head插件
下载地址:https://github.com/mobz/elasticsearch-head.git
下载node.js
下载地址: https://nodejs.org/en/download/
下载完成后ftp上传到服务器

解压到指定目录

运行tar -zxvf elasticsearch-head-master.zip -C /opt
运行tar -zxvf node-v6.9.4-linux-x64.tar.xz -C /opt

配置node.js的环境参数

运行vi /etc/profile

配置完成后运行 source /etc/profile 参数设置生效。
运行node -v 和npm -v 命令,检查node和npm是否安装成功。

npm安装依赖

进入elasticsearch-head-master目录下,
npm install
运行 npm install -g cnpm --registry=https://registry.npm.taobao.org 安装npm的依赖。

配置参数
  • 进入elasticsearch-head-master目录,修改Gruntfile.js文件
    运行vi Gruntfile.js,添加hostname参数
  • 修改elasticsearch的elasticsearch.yml文件,添加参数,允许跨域访问。
    cd elasticsearch-5.1.1/config
    vi elasticsearch.yml
    在文件的最后添加:
    http.cors.enabled: true
    http.cors.allow-origin: "*"

配置完成后kill掉原来的进程,运行elasticsearch./bin/elasticsearch -d,重启Elasticsearch。(需要切换成el01用户来操作)

启动

切换成root 用户
进入elasticsearche-head-master目录
运行./node_modules/grunt/bin/grunt server
运行nohup ./node_modules/grunt/bin/grunt server & #后台进程启动方式
运行tail -f nohup.out 查看启动及运行日志。

查看启动状态

浏览器访问:http://localhost:9100/

Logstash安装

软件下载地址

https://www.elastic.co/downloads/logstash
下载完成后ftp上传到服务器

解压到指定目录

tar -zxvf logstash-5.1.1.tar.gz -C /opt

配置配置文件

进入./logstash-5.1.1/config目录,创建配置文件filebeat.conf

input {
  beats {
       port => 5044
       codec => json{
            charset => "UTF-8"
        } 
       #sincedb_path => "/app/logstash-5.1.1/.sincedb"
  }
}
output {
    elasticsearch {
           hosts => "10.0.2.15:9200"
           index => "test-%{+YYYY.MM.dd}"
           document_type => "%{[type]}"
     }
    stdout {
        codec => rubydebug
     }
}

配置说明参考:
http://udn.yyuap.com/doc/logstash-best-practice-cn/get_start/install.html

启动

运行nohup ./bin/logstash -f config/filebeat.conf & #后台进程运行模式

查看启动状态

运行tail -f nohup.out 查看启动及运行日志

Filebeat安装

软件下载地址

https://www.elastic.co/downloads/beats/filebeat
下载完成后ftp上传到服务器

解压到指定目录

tar -zxvf filebeat-5.1.2-linux-x86_64.tar -C /opt

配置参数

进入./ filebeat-5.1.2-linux-x86_64目录,修改配置文件vi filebeat.yml
input_type:log #配置输入类型,log或stdin
paths:/home/el01/logs/test_json.log #配置文件目录
output.logstash #Filebeat将日志传送给Logstash
hosts:["localhost:5044"] #Logstash的监听端口

配置说明参考:http://michaelkang.blog.51cto.com/1553154/1864225

启动

运行nohup ./filebeat & #后台进程运行模式

查看启动状态

运行tail -f nohup.out 查看运行日志

Kibana安装

软件下载地址

https://www.elastic.co/downloads/kibana
下载完成后ftp上传到服务器

解压到指定目录

tar -zxvf kibana-5.1.1-linux-x86_64.tar.gz -C /opt

配置参数

进入. /kibana-5.1.1-linux-x86_64/config目录,修改配置文件vi kibana.yml
server.port: 5601 #Kibana默认端口
server.host: "0.0.0.0" #Kibana地址,配置0.0.0.0可外部访问
elasticsearch.url: "http://xxxx:9200" #elasticsearch的地址

配置说明参考:http://blog.csdn.net/molaifeng/article/details/53889547#

启动

运行nohup ./bin/kibana & #后台进程运行模式

查看启动状态

运行tail -f nohup.out 查看启动及运行日志

浏览器访问http://192.168.1.220:5601/

AlastAlert安装

软件下载地址

https://codeload.github.com/Yelp/elastalert/zip/master
下载完成后ftp上传到服务器

解压到指定目录

unzip elastalert-master.zip -d /opt

配置参数

进入/opt/elastalert-master目录
查看是否安装gcc,如果没有yum -y install gcc
测试python是否安装 python,运行python 命令
运行python setup.py install #如果python没安装,请安装python2.6或2.7版本
安装过程如果提示需要安装setuptools,

则运行,下载安装包安装
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz
安装setuptools:
tar -xvf setuptools-1.4.2.tar.gz
cd setuptools-1.4.2
python setup.py install
更新版本:
pip install -U pip
pip install -U setuptools

重新进入/opt/elastalert-master目录,运行python setup.py install,
如果出现以下错误:

则运行:yum install python-devel -y
重新运行python setup.py install
最后运行:pip install -r requirements.txt #安装依赖库
如果报错:

更新版本:
pip install -U pip
pip install -U setuptools
再执行:pip install -r requirements.txt

配置

进入/opt/elastalert-master目录
创建配置目录:mkdir rules #保存配置文件
cp example_rules/example_frequency.yaml rules/frequency.yaml #复制配置文件
修改 vi rules/frequency.yaml 参考如下:

参考资料:http://blog.csdn.net/gamer_gyt/article/details/52917116

然后cd /app/elastalert-master
创建文件 vi smtp_auth_file.yaml #文件名是固定的

填写发件人邮箱账号和密码(邮箱客户端的密码)。

创建config文件:
cp config.yaml.example config.yaml
vi config.yaml

启动

运行:
python -m elastalert.elastalert --config ./config.yaml --rule ./examele_rules/one_rule.yaml

后台进程运行模式

查看启动状态

运行tail -f nohup.out 查看启动及运行日志

Nginx安装自带身份验证(实现Kibana账号密码登录)

生成账号和登录密码

通过Nginx的ngx_http_auth_basic_module生成账号和密码
查看nginx的模块是否有包含它; ./nginx -V
开始生成账号密码;
cd /app/nginx/conf
运行生成命令:
# printf "username:$(openssl passwd -crypt 20@17xxx)\n" > htpasswd
帐号:username
密码:20@17xxx
日后添加用户则使用追加命令就可以
添加用户:
printf "xxxx2:$(openssl passwd -crypt 20@17xxx)\n" >> htpasswd

配置参数

vi kibana.conf

server {
      listen 80;
      server_name kibana.gzkkonline.com;
      
     #配置身份验证的注释和用户验证文件
      auth_basic "Kibana Auth";
      auth_basic_user_file  htpasswd;
      
      access_log  logs/kibana_access.log main;
      error_log  logs/kibana_error.log;
      
     location / {
          proxy_pass http://10.0.2.15:5601;
      }
}
启动

运行:
systemctl start nginx.service
如何错误日志出现以下问题:
*1 connect() to 127.0.0.1:5601 failed (13: Permission denied)
运行:selinux 的状态
setsebool -P httpd_can_network_connect 1

查看启动状态

查看启动及运行日志
tail -f /var/log/nginx/error.log
tail -f /var/log/nginx/access.log

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

推荐阅读更多精彩内容