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

centos7搭建ELK开源实时日志分析系统,第1张

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

Elasticsearch是一款开源的分布式搜索引擎,具有分布式零配置、自动索引发现、自动索引分片和复制机制、restful风格界面、多数据源自动搜索加载等特点。

Logstash是一个完全开源的工具,可以收集、分析和存储你的日志,以备后用,比如搜索。

Kibana也是一个开源的免费工具。Kibana可以为Logstash和ElasticSearch提供日志分析。友好的Web界面可以帮助您总结、分析和搜索重要的数据日志。

从日志客户端到服务器的处理之后,到客户的数据流如下

logstash-forwarder->;logstash->;elasticsearch->;基巴纳->;nginx->;客户端浏览器

Logstash-forwarder是客户端的日志收集工具。日志发送到服务器Logstash后,Logstash使用grok匹配规则对日志进行匹配切割,然后保存在Elasticsearch中。kibana从Elasticsearch中读取数据并传输到nginx进行处理,然后返回给客户端。

好了,下面是ELK系统的安装流程。

以下是elasticsearch/logstash所需JVM版本。

首先安装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找正确的版本。每个版本下面都有这么一行字。一定要注意这些内容。与d性搜索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安装nginx

vim/etc/nginx/nginx.conf

将服务器更改为以下内容

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

关于启动基巴纳。

之后,您需要安装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证书身份验证。LogstashForwarder上只需要公钥。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

请注意,应该将-天设置得更大,以防止证书过期。

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配置文件是一个以json格式设置参数的配置文件。它位于/etc/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]" ]     }   } }

该过滤器将查找由Logstash-forwarder定义的标记为“nginx”类型的日志,并尝试使用“grok”来分析传入的nginx日志,以使它们结构化并可搜索。

与logstash-forwarder匹配的类型。

同时注意如上设置nginx日志格式。

日志格式错误。grok匹配规则需要重写。

可以通过http://grokdebug.herokuapp.com/在线工具进行调试。这里大部分麋鹿没有数据误差。

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配置文件是有序的。

调试时,log不会先存储在elasticsearch中,而是标准输出进行调试。

同时,看日志。许多错误都反映在日志中,很容易找到错误。

在启动logstash服务之前,最好按如下方式检查配置文件

/opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/* Configuration 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/

配置日志存储-转发器

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来查看数据了。

访问效果如下

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/779717.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存