Centos6.5安装Logstash ELK stack 日志管理系统



概述:



  日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。

集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。

开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:https://www.elastic.co/products

   Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 它不是一个软件,而是Elasticsearch,Logstash,Kibana 开源软件的集合,对外是作为一个日志管理系统的开源方案。它可以从任何来源,任何格式进行日志搜索,分析获取数据,并实时进行展示。像盾牌(安全),监护者(警报)和Marvel(监测)一样为你的产品提供更多的可能。





  Elasticsearch:搜索,提供分布式全文搜索引擎

  Logstash: 日志收集,管理,存储

  Kibana :日志的过滤web 展示

  Filebeat:监控日志文件、转发





工作原理如下如所示:



一、测试环境规划图



操作系统 centos6.5 x86_64

elk server: 192.168.3.17





为避免干扰,关闭防火墙和selinux

service iptables off

setenforce 0



三台机器都需要修改hosts文件

cat /etc/hosts



192.168.3.17 elk.chinasoft.com

192.168.3.18 rsyslog.chinasoft.com

192.168.3.13 nginx.chinasoft.com





修改主机名:

hostname elk.chinasoft.com

mkdir -p /data/elk





下载elk相关的软件

cd /data/elk

wget -c https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.3/elasticsearch-2.3.3.rpm

wget -c https://download.elastic.co/logstash/logstash/packages/centos/logstash-2.3.2-1.noarch.rpm

wget -c https://download.elastic.co/kibana/kibana/kibana-4.5.1-1.x86_64.rpm

wget -c https://download.elastic.co/beats/filebeat/filebeat-1.2.3-x86_64.rpm





服务器只需要安装e、l、k, 客户端只需要安装filebeat。

安装elasticsearch,先安装jdk,elk server 需要java 开发环境支持,由于客户端上使用的是filebeat软件,它不依赖java环境,所以不需要安装

二、elk服务端操作

1.安装jdk8和elasticsearch

rpm -ivh jdk-8u102-linux-x64.rpm

yum localinstall elasticsearch-2.3.3.rpm -y





启动服务

service elasticsearch start

chkconfig elasticsearch on





检查服务

rpm -qc elasticsearch

/etc/elasticsearch/elasticsearch.yml

/etc/elasticsearch/logging.yml

/etc/init.d/elasticsearch

/etc/sysconfig/elasticsearch

/usr/lib/sysctl.d/elasticsearch.conf

/usr/lib/systemd/system/elasticsearch.service

/usr/lib/tmpfiles.d/elasticsearch.conf





是否正常启动

netstat -nltp | grep java

tcp        0      0 ::ffff:127.0.0.1:9200       :::*                        LISTEN      1927/java           

tcp        0      0 ::1:9200                    :::*                        LISTEN      1927/java           

tcp        0      0 ::ffff:127.0.0.1:9300       :::*                        LISTEN      1927/java           

tcp        0      0 ::1:9300                    :::*                        LISTEN      1927/java 





2.安装kibana





yum localinstall kibana-4.5.1-1.x86_64.rpm -y

service kibana start

chkconfig kibana on





检查kibana服务运行(Kibana默认 进程名:node ,端口5601)

ss -tunlp|grep 5601

tcp    LISTEN     0      128                    *:5601                  *:*      users:(("node",2042,11))



日志观察

tail -f /var/log/kibana/kibana.stdout 



这时,我们可以打开浏览器,测试访问一下kibana服务器http://192.168.3.17:5601/,确认没有问题,如下图:



安装logstash,以及添加配置文件

yum localinstall logstash-2.3.2-1.noarch.rpm -y



生成证书

cd /etc/pki/tls/

openssl req -subj '/CN=elk.chinasoft.com/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

enerating a 2048 bit RSA private key
..............................................+++
........................................................................................................................................................+++
writing new private key to 'private/logstash-forwarder.key'
-----

之后创建logstash 的配置文件,如下:

vim /etc/logstash/conf.d/01-logstash-initial.conf





input {

  beats {

    port => 5000

    type => "logs"

    ssl => true

    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"

    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"

  }

}





filter {

  if [type] == "syslog-beat" {

    grok {

      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }

      add_field => [ "received_at", "%{@timestamp}" ]

      add_field => [ "received_from", "%{host}" ]

    }

    geoip {

      source => "clientip"

    }

    syslog_pri {}

    date {

      match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]

    }

  }

}





output {

  elasticsearch { }

  stdout { codec => rubydebug }

}





启动logstash,并检查端口,配置文件里,此处写的是5000端口

service logstash start





ss -tunlp|grep 5000

tcp    LISTEN     0      50                    :::5000                 :::*      users:(("java",2238,14))





修改elasticsearch 配置文件

查看目录,创建文件夹es-01(名字不是必须的),logging.yml是自带的,elasticsearch.yml是创建的文件,具体如下:

cd /etc/elasticsearch/

ll

total 12

-rwxr-x--- 1 root elasticsearch 3189 May 12 21:24 elasticsearch.yml

-rwxr-x--- 1 root elasticsearch 2571 May 12 21:24 logging.yml

drwxr-x--- 2 root elasticsearch 4096 May 17 23:49 scripts





[root@centossz008 elasticsearch]# tree

├── elasticsearch.yml

├── es-01

│   ├── elasticsearch.yml

│   └── logging.yml

├── logging.yml

└── scripts





mkdir es-01

vim es-01/elasticsearch.yml 





http:

  port: 9200

network:

  host: elk.chinasoft.com

node:

  name: elk.chinasoft.com

path:

  data: /etc/elasticsearch/data/es-01





重启elasticsearch、logstash服务。





service elasticsearch restart

Stopping elasticsearch:                                    [  OK  ]

Starting elasticsearch:                                    [  OK  ]





# service logstash restart

Killing logstash (pid 2238) with SIGTERM

Waiting logstash (pid 2238) to die...

Waiting logstash (pid 2238) to die...

logstash stopped.

logstash started.





将fiebeat安装包拷贝到 rsyslog、nginx 客户端上





将 fiebeat安装包拷贝到 rsyslog、nginx 客户端上





scp filebeat-1.2.3-x86_64.rpm root@rsyslog.chinasoft.com:/root

scp filebeat-1.2.3-x86_64.rpm root@nginx.chinasoft.com:/root

scp /etc/pki/tls/certs/logstash-forwarder.crt rsyslog.chinasoft.com:/root

scp /etc/pki/tls/certs/logstash-forwarder.crt nginx.chinasoft.com:/root

三、客户端部署filebeat(在rsyslog、nginx客户端上操作)

 filebeat客户端是一个轻量级的,从服务器上的文件收集日志资源的工具,这些日志转发到处理到Logstash服务器上。该Filebeat客户端使用安全的Beats协议与Logstash实例通信。lumberjack协议被设计为可靠性和低延迟。Filebeat使用托管源数据的计算机的计算资源,并且Beats输入插件尽量减少对Logstash的资源需求。





(node1 rsyslog.chinasoft.com)安装filebeat,拷贝证书,创建收集日志配置文件





yum localinstall filebeat-1.2.3-x86_64.rpm -y

#拷贝证书到本机指定目录中

[root@rsyslog elk]# cp logstash-forwarder.crt /etc/pki/tls/certs/.

[root@rsyslog elk]# cd /etc/filebeat/

 tree

.

├── conf.d

│   ├── authlogs.yml

│   └── syslogs.yml

├── filebeat.template.json

├── filebeat.yml

└── filebeat.yml.bak





修改的文件有3个,filebeat.yml,是定义连接logstash 服务器的配置。conf.d目录下的2个配置文件是自定义监控日志的,下面看下各自的内容:

mkdir conf.d





vim filebeat.yml

------------------------------------------

filebeat:

  spool_size: 1024

  idle_timeout: 5s

  registry_file: .filebeat

  config_dir: /etc/filebeat/conf.d

output:

  logstash:

    hosts:

    - elk.chinasoft.com:5000

    tls:

      certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

    enabled: true

shipper: {}

logging: {}

runoptions: {}

------------------------------------------



vim conf.d/authlogs.yml 

------------------------------------------

filebeat:

  prospectors:

    - paths:

      - /var/log/secure

      encoding: plain

      fields_under_root: false

      input_type: log

      ignore_older: 24h

      document_type: syslog-beat

      scan_frequency: 10s

      harvester_buffer_size: 16384

      tail_files: false

      force_close_files: false

      backoff: 1s

      max_backoff: 1s

      backoff_factor: 2

      partial_line_waiting: 5s

      max_bytes: 10485760

------------------------------------------





vim conf.d/syslogs.yml

------------------------------------------

filebeat:

  prospectors:

    - paths:

      - /var/log/messages

      encoding: plain

      fields_under_root: false

      input_type: log

      ignore_older: 24h

      document_type: syslog-beat

      scan_frequency: 10s

      harvester_buffer_size: 16384

      tail_files: false

      force_close_files: false

      backoff: 1s

      max_backoff: 1s

      backoff_factor: 2

      partial_line_waiting: 5s

      max_bytes: 10485760

------------------------------------------





vim conf.d/flowsdk.yml

------------------------------------------

filebeat:

  prospectors:

    - paths:

      - /data/logs/flowsdk.log

      encoding: plain

      fields_under_root: false

      input_type: log

      ignore_older: 24h

      document_type: syslog-beat

      scan_frequency: 10s

      harvester_buffer_size: 16384

      tail_files: false

      force_close_files: false

      backoff: 1s

      max_backoff: 1s

      backoff_factor: 2

      partial_line_waiting: 5s

      max_bytes: 10485760

------------------------------------------





修改完成后,启动filebeat服务

service filebeat start

chkconfig filebeat on





报错:

service filebeat start

Starting filebeat: 2016/10/12 14:05:46 No paths given. What files do you want me to watch?



分析:

需要监控的文件,不是最近24小时产生的,添加一个其他的文件即可如/var/logs/message

(node2 nginx.chinasoft.com)安装filebeat,拷贝证书,创建收集日志配置文件



yum localinstall filebeat-1.2.3-x86_64.rpm -y

cp logstash-forwarder.crt /etc/pki/tls/certs/.

cd /etc/filebeat/

tree

.

├── conf.d

│   ├── nginx.yml

│   └── syslogs.yml

├── filebeat.template.json

└── filebeat.yml





修改filebeat.yml 内容如下:

vim filebeat.yml

------------------------------------------

filebeat:

  spool_size: 1024

  idle_timeout: 5s

  registry_file: .filebeat

  config_dir: /etc/filebeat/conf.d

output:

  logstash:

    hosts:

    - elk.chinasoft.com:5000

    tls:

      certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

    enabled: true

shipper: {}

logging: {}

runoptions: {}

------------------------------------------





syslogs.yml & nginx.yml





vim conf.d/syslogs.yml

------------------------------------------

filebeat:

  prospectors:

    - paths:

      - /var/log/messages

      encoding: plain

      fields_under_root: false

      input_type: log

      ignore_older: 24h

      document_type: syslog-beat

      scan_frequency: 10s

      harvester_buffer_size: 16384

      tail_files: false

      force_close_files: false

      backoff: 1s

      max_backoff: 1s

      backoff_factor: 2

      partial_line_waiting: 5s

      max_bytes: 10485760

------------------------------------------

vim conf.d/nginx.yml





------------------------------------------

filebeat:

  prospectors:

    - paths:

      - /var/log/nginx/access.log

      encoding: plain

      fields_under_root: false

      input_type: log

      ignore_older: 24h

      document_type: syslog-beat

      scan_frequency: 10s

      harvester_buffer_size: 16384

      tail_files: false

      force_close_files: false

      backoff: 1s

      max_backoff: 1s

      backoff_factor: 2

      partial_line_waiting: 5s

      max_bytes: 10485760

------------------------------------------





修改完成后,启动filebeat服务,并检查filebeat进程

重新载入 systemd,扫描新的或有变动的单元;启动并加入开机自启动

systemctl daemon-reload

systemctl start filebeat

systemctl enable filebeat





systemctl status filebeat

● filebeat.service - filebeat

   Loaded: loaded (/usr/lib/systemd/system/filebeat.service; enabled; vendor preset: disabled)

   Active: active (running) since Tue 2016-10-11 17:23:03 CST; 2min 56s ago

     Docs: https://www.elastic.co/guide/en/beats/filebeat/current/index.html

 Main PID: 22452 (filebeat)

   CGroup: /system.slice/filebeat.service

           └─22452 /usr/bin/filebeat -c /etc/filebeat/filebeat.yml





Oct 11 17:23:03 localhost.localdomain systemd[1]: Started filebeat.

Oct 11 17:23:03 localhost.localdomain systemd[1]: Starting filebeat...

Oct 11 17:23:31 localhost.localdomain systemd[1]: Started filebeat.





通过上面可以看出,客户端filebeat进程已经和 elk 服务器连接了。下面去验证。

四、验证,访问kibana http://192.168.3.17:5601

为了后续使用Kibana,需要配置至少一个Index名字或者Pattern,它用于在分析时确定ES中的Index。这里使用系统默认,Kibana会自动加载该Index下doc的field,并自动选择合适的field用于图标中的时间字段

node2 192.168.3.13的nginx 访问日志

至此,elk搭建和简单的使用暂告一段落

修改日志数据存储配置:





vim /etc/init.d/elasticsearch

修改如下两行:

LOG_DIR="/data/elasticsearch/log"

DATA_DIR="/data/elasticsearch/data"





创建存储数据和本身日志的目录

mkdir /data/elasticsearch/data -p

mkdir /data/elasticsearch/log -p



chown -R elasticsearch.elasticsearch /data/elasticsearch/



重启服务生效

/etc/init.d/elasticsearch



如果是编译安装的,配置存储目录是elasticsearch.yml如下:

cat /usr/local/elasticsearch/config/elasticsearch.yml | egrep -v "^$|^#" 



path.data: /tmp/elasticsearch/data

path.logs: /tmp/elasticsearch/logs

network.host: X.X.X.X

network.port: 9200



logstash日志存放目录修改:

vim /etc/init.d/logstash

LS_LOG_DIR=/data/logstash

Centos6.5使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践的更多相关文章

  1. 使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践--转载

    原文地址:https://wsgzao.github.io/post/elk/ 另外可以参考:https://www.digitalocean.com/community/tutorials/how- ...

  2. 键盘侠Linux干货| ELK(Elasticsearch + Logstash + Kibana) 搭建教程

    前言 Elasticsearch + Logstash + Kibana(ELK)是一套开源的日志管理方案,分析网站的访问情况时我们一般会借助 Google / 百度 / CNZZ 等方式嵌入 JS ...

  3. 【转】ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

    [转自]https://my.oschina.net/itblog/blog/547250 摘要: 前段时间研究的Log4j+Kafka中,有人建议把Kafka收集到的日志存放于ES(ElasticS ...

  4. 【Big Data - ELK】ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

    摘要: 前段时间研究的Log4j+Kafka中,有人建议把Kafka收集到的日志存放于ES(ElasticSearch,一款基于Apache Lucene的开源分布式搜索引擎)中便于查找和分析,在研究 ...

  5. ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台

    一.简介 ELK 由三部分组成elasticsearch.logstash.kibana,elasticsearch是一个近似实时的搜索平台,它让你以前所未有的速度处理大数据成为可能. Elastic ...

  6. Elasticsearch+Logstash+Kibana搭建日志平台

    1 ELK简介 ELK是Elasticsearch+Logstash+Kibana的简称 ElasticSearch是一个基于Lucene的分布式全文搜索引擎,提供 RESTful API进行数据读写 ...

  7. [Big Data - ELK] ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

    ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自: http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志. ...

  8. 13: ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台

    参考博客:https://www.cnblogs.com/zclzhao/p/5749736.html 51cto课程:https://edu.51cto.com/center/course/less ...

  9. 基于CentOS6.5或Ubuntu14.04下Suricata里搭配安装 ELK (elasticsearch, logstash, kibana)(图文详解)

    前期博客 基于CentOS6.5下Suricata(一款高性能的网络IDS.IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐) 基于Ubuntu14.04下Suricata(一款高性能的网络ID ...

随机推荐

  1. 【POJ1741】Tree

    题目大意:给定一棵 N 个节点的无根树,边有边权,统计树上边权和不大于 K 的路径数. 对于每条树上路径,对于每一个点来说,该路径只有经过该点和不经过该点两种情况,对于不经过该点的情况,可以转化成是否 ...

  2. javascript面向对象精要第六章对象模式整理精要

    混入是一种给对象添加功能同时避免继承的强有力的方式,混入时将一个属性从一个对象 复制到另一个,从而使得接收者在不需要继承的情况下获得其功能.和继承不同,混入之后 对象无法检查属性来源.因此混入最适宜用 ...

  3. HTML中的相对路径与绝对路径(转)

    原文地址:http://www.cnblogs.com/heyonggang/archive/2013/03/01/2938984.html 在HTML里只要涉及文件的地方(如超级链接.图片等)就会涉 ...

  4. 记录一次iptables端口转发的配置

    需求是公网访问2.2.2.22的80端口,直接转发到内网的192.100.100.178的80端口上. 代理服务器的,两个不同的网卡 eth0 2.2.2.22 eth1 192.100.100.10 ...

  5. 记录一次nginx的upstream的配置信息

    nginx的upstream的配置信息 upstream qq.xiaoyu.cn { server 192.168.1.139:80 max_fails=3 fail_timeout=30s; se ...

  6. Linux命令之rmdir

    rmdir命令 用处:删除文件夹 用法:在终端中输入rmdir加上要删除的文件夹的名字 示例: (我要删除shuyunquan这个文件夹)

  7. 将web应用部署到Tomcat的三种方式

    Tomcat作为Servlet/JSP容器(服务器)挺不错的,开源免费,需要知道的是Tomcat是一个Web服务器,其符合Servlet/JSP规范,但是却没有实现所有JavaEE规范,所以我们还是应 ...

  8. CSS预处理器之less

    less简单入门 w3cplus--Less讲解 vue中安装less npm install less less-loader --save 注意:在vue中引入less之后,用"> ...

  9. jquery ajax 跨域请求【原】

    前台 function sending(){ $.ajax({ type : "get",//jsonp只能get async:true, url : "/webcont ...

  10. 微信公众号绑定服务器 Flask版

    python 代码 from flask import Flask, request from flask_cors import CORS app = Flask(__name__) app.app ...