新聞中心
Elasticsearch 是個(gè)開(kāi)源分布式搜索引擎它的特點(diǎn)有分布式零配置自動(dòng)發(fā)現(xiàn)索引自動(dòng)分片索引副本機(jī)制 restful 風(fēng)格接口多數(shù)據(jù)源自動(dòng)搜索負(fù)載等。
Logstash 是一個(gè)完全開(kāi)源的工具他可以對(duì)你的日志進(jìn)行收集、分析并將其存儲(chǔ)供以后使用如搜索。
kibana 也是一個(gè)開(kāi)源和免費(fèi)的工具他 Kibana 可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面可以幫助您匯總、分析和搜索重要數(shù)據(jù)日志。
日志從客戶端到服務(wù)端處理后在傳遞給客戶的數(shù)據(jù)流流向如下
Logstash-forwarder--->Logstash--->Elasticsearch--->kibana--->nginx--->客戶瀏覽器
其中Logstash-forwarder是客戶端的日志收集工具將日志發(fā)送給服務(wù)端Logstash后Logstash通過(guò)使用grok匹配規(guī)則對(duì)日志進(jìn)行匹配切割然后保存在Elasticsearch中通過(guò)kibana從Elasticsearch中讀取數(shù)據(jù)并轉(zhuǎn)交給nginx來(lái)處理后返回給客戶。
好了下面就是ELK系統(tǒng)的安裝過(guò)程了。

通許ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
下面是elasticsearch/logstash 所需JVM版本
首先安裝Java環(huán)境
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也行不過(guò)要保證安裝好對(duì)應(yīng)的版本。
當(dāng)然也可以源碼安裝不過(guò)源碼安裝需要注意設(shè)置好環(huán)境變量
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環(huán)境之后需要安裝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
之后啟動(dòng)Elasticsearch
systemctl start elasticsearch
然后開(kāi)始安裝kibana
去https://www.elastic.co/downloads/kibana 找合適的版本每個(gè)版本下面有這么一行內(nèi)容一定要注意這些內(nèi)容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偵聽(tīng)5601端口并且通過(guò)9200端口從elasticsearch里面獲取數(shù)據(jù)。
再安裝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匹配規(guī)則
啟動(dòng)nginx和kibana
systemctl start nginx
nohup /usr/local/kibana/bin/kibana -l /var/log/kibana.log &
或者也可以看看下面兩個(gè)腳本
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
關(guān)于開(kāi)機(jī)啟動(dòng)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
這個(gè)包比較大可能國(guó)內(nèi)下載起來(lái)比較慢可以去官網(wǎng)使用迅雷下載比較快一點(diǎn)。
創(chuàng)建TLS證書
logstash和logstash-forwarder通信需要使用tls證書認(rèn)證。Logstash Forwarder上面只需公鑰logstash需要配置公鑰、私鑰。在logstash服務(wù)器上生成ssl證書。
創(chuàng)建ssl證書有兩種方式一種指定IP地址一種指定fqdn(dns)。
1、指定IP地址方式
vi /etc/pki/tls/openssl.cnf
在[ v3_ca ]下面配置subjectAltName = IP:192.168.100.233切記這條很重要因?yàn)檫€有一個(gè)地方也有subjectAltName配置錯(cuò)了的話就會(huì)一直無(wú)法實(shí)現(xiàn)認(rèn)證
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設(shè)置大點(diǎn)以免證書過(guò)期。
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換成你自己的域名。同時(shí)到域名解析那添加logstash.abcde.com的A記錄。
使用那種方式都行不過(guò)如果logstash服務(wù)端的IP地址變換了證書不可用了。
配置logstash
logstash配置文件是以json格式設(shè)置參數(shù)的配置文件位于/etc/logstash/conf.d目錄下配置包括三個(gè)部分輸入端過(guò)濾器和輸出。
首先創(chuàng)建一個(gè)01-lumberjack-input.conf文件設(shè)置lumberjack輸入Logstash-Forwarder使用的協(xié)議。
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"
}
}
再來(lái)創(chuàng)建一個(gè)02-nginx.conf用于過(guò)濾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]" ]
}
}
}
這個(gè)過(guò)濾器會(huì)尋找被標(biāo)記為“nginx”類型Logstash-forwarder定義的的日志嘗試使用“grok”來(lái)分析傳入的nginx日志使之結(jié)構(gòu)化和可查詢。
type要與logstash-forwarder相匹配。
同時(shí)注意將nginx日志格式設(shè)置成上面的。
日志格式不對(duì)grok匹配規(guī)則要重寫。
可以通過(guò)http://grokdebug.herokuapp.com/ 在線工具進(jìn)行調(diào)試。多半ELK沒(méi)數(shù)據(jù)錯(cuò)誤在此處。
grok 匹配日志不成功不要往下看了。搞對(duì)為止先。
同時(shí)多看看http://grokdebug.herokuapp.com/patterns# grok匹配模式對(duì)后面寫規(guī)則匹配很受益的。
最后創(chuàng)建一文件來(lái)定義輸出。
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 }
}
定義結(jié)構(gòu)化的日志存儲(chǔ)到elasticsearch對(duì)于不匹配grok的日志寫入到文件。
注意后面添加的過(guò)濾器文件名要位于01-99之間。因?yàn)閘ogstash配置文件有順序的。
在調(diào)試時(shí)候先不將日志存入到elasticsearch而是標(biāo)準(zhǔn)輸出以便排錯(cuò)。
同時(shí)多看看日志很多錯(cuò)誤在日志里有體現(xiàn)也容??定位錯(cuò)誤在哪。
在啟動(dòng)logstash服務(wù)之前最好先進(jìn)行配置文件檢測(cè)如下
/opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/*
Configuration OK
也可指定文件名檢測(cè)直到OK才行。不然logstash服務(wù)器起不起來(lái)。
最后就是啟動(dòng)logstash服務(wù)了。
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時(shí)候創(chuàng)建的ssl證書的公鑰拷貝到每臺(tái)logstash-forwarder服務(wù)器上。
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" }
}
]
}
這也是個(gè)json個(gè)是的配置文件。json格式不對(duì)logstash-forwarder服務(wù)是啟動(dòng)不起來(lái)的。
后面就是啟動(dòng)logstash-forwarder服務(wù)了。
當(dāng)上面的所有都配置正確的話就可以訪問(wèn)kibana來(lái)查看數(shù)據(jù)了。
訪問(wèn)效果如下所示
文章標(biāo)題:CentOS7搭建ELK開(kāi)源實(shí)時(shí)日志分析系統(tǒng)
當(dāng)前URL:http://m.fisionsoft.com.cn/article/ccoosoe.html


咨詢
建站咨詢
