阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7搭建ELK开源实时日志分析系统

415次阅读
没有评论

共计 7475 个字符,预计需要花费 19 分钟才能阅读完成。

Elasticsearch 是个开源分布式搜索引擎它的特点有分布式零配置自动发现索引自动分片索引副本机制 restful 风格接口多数据源自动搜索负载等。
Logstash 是一个完全开源的工具他可以对你的日志进行收集、分析并将其存储供以后使用如搜索。
kibana 也是一个开源和免费的工具他 Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面可以帮助您汇总、分析和搜索重要数据日志。
日志从客户端到服务端处理后在传递给客户的数据流流向如下
Logstash-forwarder—>Logstash—>Elasticsearch—>kibana—>nginx—> 客户浏览器
其中 Logstash-forwarder 是客户端的日志收集工具将日志发送给服务端 Logstash 后 Logstash 通过使用 grok 匹配规则对日志进行匹配切割然后保存在 Elasticsearch 中通过 kibana 从 Elasticsearch 中读取数据并转交给 nginx 来处理后返回给客户。
好了下面就是 ELK 系统的安装过程了。

下面是 elasticsearch/logstash 所需 JVM 版本

CentOS 7 搭建 ELK 开源实时日志分析系统

首先安装 Java 环境

wget –no-cookies –no-check-certificate –header “Cookie: gpw_e24=http%3A%2F%2Fwww.Oracle.com%2F; oraclelicense=accept-securebackup-cookie” “http://download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u65-linux-x64.rpm”
rpm -Uvh jdk-8u65-linux-x64.rpm

或者直接 yum 安装 jdk 也行不过要保证安装好对应的版本。
当然也可以源码安装不过源码安装需要注意设置好环境变量
wget –no-cookies –no-check-certificate –header “Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie” “http://download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u65-linux-x64.tar.gz”
tar zxvf jdk-8u65-linux-x64.tar.gz
mv jdk1.8.0_65 java
vi /etc/profile
JAVA_HOME=”/usr/local/java”
PATH=$JAVA_HOME/bin:$PATH 
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export JAVA_HOME 
export PATH 
export CLASSPATH
source /etc/profile

安装好 jdk 环境之后需要安装 Elasticsearch
rpm –import http://packages.elastic.co/GPG-KEY-elasticsearch
wget -c https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.2.noarch.rpm
rpm -ivh elasticsearch-1.7.2.noarch.rpm

修改配置文件如下

cd /usr/local/elasticsearch/
vim config/elasticsearch.yml
path.data: /data/db
network.host: 192.168.100.233

安装 Elasticsearch 插件如下

cd /usr/share/elasticsearch/ &&  ./bin/plugin -install mobz/elasticsearch-head && ./bin/plugin -install lukas-vlcek/bigdesk/2.5.0

之后启动 Elasticsearch
systemctl start elasticsearch

然后开始安装 kibana
去 https://www.elastic.co/downloads/kibana 找合适的版本每个版本下面有这么一行内容一定要注意这些内容 Compatible with Elasticsearch 1.4.4 – 1.7
我这里选择的是 kibana-4.1.3-linux-x64.tar.gz
wget https://download.elastic.co/kibana/kibana/kibana-4.1.3-linux-x64.tar.gz 
tar xf kibana-4.1.3-linux-x64.tar.gz
mv kibana-4.1.3-linux-x64 /usr/local/kibana
cd !$
vim config/kibana.yml 
port: 5601
host: “192.168.100.233”
elasticsearch_url: “http://192.168.100.233:9200”

配置文件中指明 kibana 侦听 5601 端口并且通过 9200 端口从 elasticsearch 里面获取数据。
再安装 nginx 可以选择源码安装这里为了图方便就使用 yum 安装了。

yum -y install nginx
vim /etc/nginx/nginx.conf
将 server 改成如下
 server {
        listen      80 default_server;
        listen      [::]:80 default_server;
        server_name _;
        location / {
        proxy_pass http://192.168.100.233:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection ‘upgrade’;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
            }
}

将日志保存格式修改为如下
log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
            ‘$status $upstream_response_time $request_time $body_bytes_sent ‘
            ‘”$http_referer” “$http_user_agent” “$http_x_forwarded_for” “$request_body” ‘
            ‘$scheme $upstream_addr’;

修改日志格式是为了匹配后面的 Logstash 的 grok 匹配规则
启动 nginx 和 kibana
systemctl start nginx
nohup /usr/local/kibana/bin/kibana -l /var/log/kibana.log &

或者也可以看看下面两个脚本
cd /etc/init.d &&  curl -o kibana https://gist.githubusercontent.com/thisismitch/8b15ac909aed214ad04a/raw/fc5025c3fc499ad8262aff34ba7fde8c87ead7c0/kibana-4.x-init
cd /etc/default &&  curl -o kibana https://gist.githubusercontent.com/thisismitch/8b15ac909aed214ad04a/raw/fc5025c3fc499ad8262aff34ba7fde8c87ead7c0/kibana-4.x-default

关于开机启动 Kibana 的。
之后就需要安装 Logstash 了
rpm –import https://packages.elasticsearch.org/GPG-KEY-elasticsearch
vi /etc/yum.repos.d/logstash.repo
[logstash-1.5]
name=Logstash repository for 1.5.x packages
baseurl=http://packages.elasticsearch.org/logstash/1.5/CentOS
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1
yum -y install logstash

这个包比较大可能国内下载起来比较慢可以去官网使用迅雷下载比较快一点。
创建 TLS 证书

logstash 和 logstash-forwarder 通信需要使用 tls 证书认证。Logstash Forwarder 上面只需公钥 logstash 需要配置公钥、私钥。在 logstash 服务器上生成 ssl 证书。
创建 ssl 证书有两种方式一种指定 IP 地址一种指定 fqdn(dns)。
1、指定 IP 地址方式
vi /etc/pki/tls/openssl.cnf
在[v3_ca]下面配置 subjectAltName = IP:192.168.100.233 切记这条很重要因为还有一个地方也有 subjectAltName 配置错了的话就会一直无法实现认证
cd /etc/pki/tls
openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

注意将 -days 设置大点以免证书过期。
2、使用 fqdn 方式
不需要修改 openssl.cnf 文件。
cd /etc/pki/tls
openssl req -subj ‘/CN=logstash.abcde.com/’ -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

将 logstash.abcde.com 换成你自己的域名。同时到域名解析那添加 logstash.abcde.com 的 A 记录。
使用那种方式都行不过如果 logstash 服务端的 IP 地址变换了证书不可用了。

配置 logstash
logstash 配置文件是以 json 格式设置参数的配置文件位于 /etc/logstash/conf.d 目录下配置包括三个部分输入端过滤器和输出。
首先创建一个 01-lumberjack-input.conf 文件设置 lumberjack 输入 Logstash-Forwarder 使用的协议。
vi /etc/logstash/conf.d/01-lumberjack-input.conf
input {
  lumberjack {
    port => 5043
    type => “logs”
    ssl_certificate => “/etc/pki/tls/certs/logstash-forwarder.crt”
    ssl_key => “/etc/pki/tls/private/logstash-forwarder.key”
  }
}

再来创建一个 02-nginx.conf 用于过滤 nginx 日志
vi /etc/logstash/conf.d/02-nginx.conf 
filter {
  if [type] == “nginx” {
    grok {
      match => {“message” => “%{IPORHOST:clientip} – %{NOTSPACE:remote_user} \[%{HTTPDATE:timestamp}\] \”(?:%{WORD:method} %{NOTSPACE:request}(?: %{URIPROTO:proto}/%{NUMBER:httpversion})?|%{DATA:rawrequest})\” %{NUMBER:status} (?:%{NUMBER:upstime}|-) %{NUMBER:reqtime} (?:%{NUMBER:size}|-) %{QS:referrer} %{QS:agent} %{QS:xforwardedfor} %{QS:reqbody} %{WORD:scheme} (?:%{IPV4:upstream}(:%{POSINT:port})?|-)” }
      add_field => [“received_at”, “%{@timestamp}” ]
      add_field => [“received_from”, “%{host}” ]
    }
    date {
        match => [“timestamp” , “dd/MMM/YYYY:HH:mm:ss Z”]
    }
  geoip {
        source => “clientip”
        add_tag => [“geoip”]
        fields => [“country_name”, “country_code2″,”region_name”, “city_name”, “real_region_name”, “latitude”, “longitude”]
        remove_field => [“[geoip][longitude]”, “[geoip][latitude]” ]
    }
  }
}

这个过滤器会寻找被标记为“nginx”类型 Logstash-forwarder 定义的的日志尝试使用“grok”来分析传入的 nginx 日志使之结构化和可查询。
type 要与 logstash-forwarder 相匹配。
同时注意将 nginx 日志格式设置成上面的。
日志格式不对 grok 匹配规则要重写。
可以通过 http://grokdebug.herokuapp.com/ 在线工具进行调试。多半 ELK 没数据错误在此处。
grok 匹配日志不成功不要往下看了。搞对为止先。
同时多看看 http://grokdebug.herokuapp.com/patterns#  grok 匹配模式对后面写规则匹配很受益的。
最后创建一文件来定义输出。
vi /etc/logstash/conf.d/03-lumberjack-output.conf 
output {
    if “_grokparsefailure” in [tags] {
      file {path => “/var/log/logstash/grokparsefailure-%{type}-%{+YYYY.MM.dd}.log” }
    }
    elasticsearch {
        host => “10.1.19.18”
        protocol => “http”
        index => “logstash-%{type}-%{+YYYY.MM.dd}”
        document_type => “%{type}”
        workers => 5
        template_overwrite => true
    }
    #stdout {codec =>rubydebug}
}

定义结构化的日志存储到 elasticsearch 对于不匹配 grok 的日志写入到文件。
注意后面添加的过滤器文件名要位于 01-99 之间。因为 logstash 配置文件有顺序的。
在调试时候先不将日志存入到 elasticsearch 而是标准输出以便排错。
同时多看看日志很多错误在日志里有体现也容��定位错误在哪。
在启动 logstash 服务之前最好先进行配置文件检测如下
/opt/logstash/bin/logstash –configtest -f /etc/logstash/conf.d/*
Configuration OK

也可指定文件名检测直到 OK 才行。不然 logstash 服务器起不起来。
最后就是启动 logstash 服务了。
systemctl start logstash

然后就是配置 Logstash-forwarder 客户端了。
安装 logstash-forwarder
wget https://download.elastic.co/logstash-forwarder/binaries/logstash-forwarder-0.4.0-1.x86_64.rpm
rpm -ivh logstash-forwarder-0.4.0-1.x86_64.rpm

需要将在安装 logstash 时候创建的 ssl 证书的公钥拷贝到每台 logstash-forwarder 服务器上。
scp 192.168.100.233:/etc/pki/tls/certs/logstash-forwarder.crt /etc/pki/tls/certs/

配置 logstash-forwarder
1234567891011121314 vi /etc/logstash-forwarder.conf
{
  “network”: {
    “servers”: [“10.1.19.18:5043”],
    “ssl ca”: “/etc/pki/tls/certs/logstash-forwarder.crt”,
    “timeout”: 30
  },
  “files”: [
    {
        “paths”: [“/alidata/logs/nginx/*-access.log”],
        “fields”: {“type”: “nginx”}
    } 
  ]
}

这也是个 json 个是的配置文件。json 格式不对 logstash-forwarder 服务是启动不起来的。
后面就是启动 logstash-forwarder 服务了。
当上面的所有都配置正确的话就可以访问 kibana 来查看数据了。
访问效果如下所示

CentOS 7 搭建 ELK 开源实时日志分析系统

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-09/135138.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计7475字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7982406
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...