Centos6.5使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践

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

转载于:https://www.cnblogs.com/reblue520/p/6239692.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s 手动恢复redis 集群_二进制手动部署k8s-1.14高可用集群(二、集群部署)

1. CA证书(任意节点)1.1 安装cfsslcfssl是非常好用的CA工具,我们用它来生成证书和秘钥文件 安装过程比较简单,如下:# 下载 $ mkdir -p ~/bin $ wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O ~/bin/cfssl $ w…

实现DDD领域驱动设计: Part 1

原文链接: https://dev.to/salah856/implementing-domain-driven-design-part-i-5a72简单的代码!踢足球很简单,难的是踢简单的足球。— 克鲁伊夫如果我们将这句话用到编程上,我们可以说;写代码很简单,难的是写简单的代…

XE5 Android 开发实现手机打电话和发短信 [转]

其实都可以通过intent和URI调用系统功能.Windows程序员可以理解成是ShellExecute.这个是万金油.可以有调用各种功能.后面会介绍. 1.短信息.很简单 方法a.不使用Intent而是直接发短信. smsManager对应的Delphi代码应该是: usesAndroidapi.JNI.JavaTypes,Androidapi.JNI.Telephon…

安装程序无法创建新的系统分区也无法定位现有分区的解决方法

2019独角兽企业重金招聘Python工程师标准>>> 在安装Windows7时,想必有很多人都安碰到这样的情况吧!在安装界面里选择安装时,却出现“安装程序无法创建新的系统分区,也无法定位现有系统分区” 网上提供的另外解决方法大全&#xff…

python多线程读取数据库数据_Python基于多线程操作数据库相关知识点详解

Python基于多线程操作数据库相关问题分析 本文实例分析了Python多线程操作数据库相关问题。分享给大家供大家参考,具体如下: python多线程并发操作数据库,会存在链接数据库超时、数据库连接丢失、数据库操作超时等问题。 解决方法&#xff1a…

IDA64 Fatal error before kernel init

http://www.tuicool.com/articles/7FZVZna 第一次看到这个错误还以为是修改文件导致的,但是觉得又不大像,因为在Win7底下是完全正常的。搜索了一下才发现是由于插件导致的: NOTE3: You get a “Fatal error before kernel init” when trying…

Android安全与逆向之在ubuntu上面搭建NDK环境

1、下载Android NDK自解压包, 官方地址:https://developer.android.com/ndk/downloads/index.html#download下载:$ wget -c http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin 2、解压, 将Android NDK压缩包…

和我一起来分析某药品仓储管理系统 卡死现象

一:背景 1. 讲故事这个月初,有位朋友wx上找到我,说他的api过一段时间后,就会出现只有请求,没有响应的情况,截图如下:从朋友的描述中看样子程序是被什么东西卡住了,这种卡死的问题解决…

如何定位Source Generators性能问题

前言在以前的文章中,我们介绍过如何调试Source Generators。但是当实现较为复杂时,我们需要能够快速地分析Source Generators性能的方法。默认情况下,使用VS 2019自带的“性能探查器”不能分析Source Generators项目,因为它是类库…

什么是域(domain)

在今天很多人都有意识或无意识的跟域这个东西打过交道。如果你在公司里使用电脑,并且你的电脑接入了公司的局域网,那你的电脑很可能就在一个域中。如何查看你的电脑是否连接到一个域中,以Windows为例,右击我的电脑 –>属性&…

四舍五入运算

为什么80%的码农都做不了架构师?>>> 请用户输入1个实数(浮点型),请编写算法对这个实数进行四舍五入到个位的运算. 例如 12.56经过四舍五入运算得到13. 而12.45经过四舍五入运算得到12 代码如下地址: http://git.oschina.net/touch1D/qf17j3eughwdp8zxi…

python 新建html_Python学习第226课——html中创建按钮

前面我们学习了一些常见的表单元素,表单就是用来收集用户的信息的,比如调查问卷、用户登录网站的页面等这类的网页,里面都要用到表单元素,当用户在前端页面上填入账号、密码、或者调查问卷的答案等等信息之后,就需要提…

WPF 实现图片切成九宫格控件~

WPF开发者QQ群: 340500857由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 PS:有更好的方式欢迎推荐。接着上一篇倒计时控件01—代码如下一、创建 CropControl.cs代码如下。(修改RowColumn “…

GCT之数学公式(三角函数)

转载于:https://www.cnblogs.com/jyh317/p/3386598.html

Android安全与逆向之Java虚拟机和Dalvik虚拟机的区别

Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvik虚拟机也第一次进入了人们的视野。它对内存的高效使用,和在低速CPU上表现出的高性能,确实令人刮目相看。 依赖于底层Posix兼容的操作系统,它可以简单的…

软件与硬件我该选哪个_MacBook Air 和 MacBook Pro 该选哪个……?

一个多月前,Apple 发布了 2019 款 MacBook Air 和 MacBook Pro,经过这一次的更新之后,MacBook 产品线总算变得更加清晰了,同时也减少了之前存在的价格和定位产生冲突的现象。不过从购买决策来看,我发现还是有些问题难倒…