您好,登錄后才能下訂單哦!
平臺拓撲圖
軟件版本:
配置elasticsearch集群的基礎(chǔ)環(huán)境,關(guān)閉其防火墻、selinux、配置主機名等
systemctl stop firewalld
systemctl disable firewalld
vim /etc/selinux/config
SELINUX=disabled
hostnamectl set-hostname node1
其它兩臺設(shè)備做相應(yīng)的配置
在集群的三臺設(shè)備的/etc/hosts文件中寫入對應(yīng)的主機名解析
172.20.128.39 node1
172.20.128.40 node2
172.20.128.41 node3
配置logstash主機的基礎(chǔ)環(huán)境,這里logstash與kibana部署在一臺設(shè)備上
systemctl stop firewalld
systemctl disable firewalld
vim /etc/selinux/config
SELINUX=disabled
hostnamectl set-hostname master
在/etc/hosts文件中寫入elk集群的主機名解析
172.20.128.39 node1
172.20.128.40 node2
172.20.128.41 node3
首先安裝java-1.8.0環(huán)境
yum install -y java-1.8.0
rpm -ivh elasticsearch-6.6.0.rpm
systemctl enable elasticsearch.service
編輯其配置文件
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: myels //所屬集群名稱
node.name: node1 //當前節(jié)點名稱
path.data: /els/data //數(shù)據(jù)存放路徑
path.logs: /els/logs //日志存放路徑
network.host: 172.20.128.39 //監(jiān)聽地址,向客戶端提供服務(wù)地址
http.port: 9200
discovery.zen.ping.unicast.hosts: ["host1", "host2","host3"] //集群成員判定
discovery.zen.minimum_master_nodes: 3 //內(nèi)部集群成員關(guān)系判定最小主節(jié)點數(shù)
修改服務(wù)啟動時內(nèi)存所需大小
vim /etc/elasticsearch/jvm.options
-Xms1g //初始化內(nèi)存空間大小
-Xmx1g //堆內(nèi)存空間大小
安裝部署其它兩個節(jié)點
同上先安裝java環(huán)境,然后安裝elasticsearch
將節(jié)點1的配置文件復(fù)制到節(jié)點2跟節(jié)點3并作相應(yīng)的修改
為每個節(jié)點創(chuàng)建存儲目錄
mkdir -p /els/{data,logs}
chown elasticsearch.elasticsearch /els/*
啟動服務(wù)
systemctl start elasticsearch
當三個節(jié)點服務(wù)全部安裝完成后可以使用curl查看節(jié)點運行狀態(tài)是否正常
首先安裝java環(huán)境
yum install java-1.8.0-openjdk -y
rpm -ivh logstash-6.6.0.rpm
編輯配置文件/etc/logstash/logstash.yml
path.config: /etc/logstash/conf.d //加載配置文件,此路徑為logstash插件默認執(zhí)行位置,包括輸入插件配置文件,輸出插件等配置文件
配置logstash環(huán)境變量
vim /etc/profile.d/logstash.sh
export PATH=$PATH:/usr/share/logstash/bin/
實例:定義一個標準輸入輸出插件,并logstash服務(wù)進行測試
input {
stdin {}
}
output {
stdout {}
}
進入交互式界面進行測試
logstash -f stdin-stdout.conf
輸入hello logstash
得到標準輸出
在172.20.128.43主機上上傳filebeat的rpm包并安裝
rpm -ivh filebeat-6.6.0-x86_64.rpm
配置 Filebeat inputs數(shù)據(jù)讀取路徑
#=========================== Filebeat inputs =============================
- type: log
paths:
- /var/log/httpd/access_log //日志獲取的路徑
filebeat文件的獲取數(shù)據(jù)格式,默認為log
#================================ Redis Outputs =====================================
output.redis:
enable: true
hosts: ["172.20.128.43"]
port: 6379
key: filebeat
password: test.com
db: 0
datatype: list
systemctl start filebeat
systemctl enable filebeat
添加redis服務(wù)作為緩存池
yum install -y redis //使用epel源安裝
配置redis服務(wù),編輯配置文件
vim /etc/redis.conf
監(jiān)聽0.0.0.0地址
bind 0.0.0.0
requirepass test.com
systemctl start redis
systemctl enable redis
yum install -y httpd
創(chuàng)建測試頁面
for i in {1..20};do echo "Test Page $i" > ./test$i.html;done
使用curl命令進行測試
curl http://172.20.128.42/test1.html
修改httpd的配置文件
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined //此配置可以將客戶端的IP地址記錄在日志中
systemctl start httpd
systemctl enable httpd
在客戶端模擬多個不同的客戶端對logstash進行訪問
while true;do curl -H "X-Forwarded-For:$[$RANDOM%223+1].$[$RANDOM%225].1.1" http://172.20.128.43/test$[$RANDOM%25+1].html; sleep 1; done
在logstash配置文件的conf.d目錄下編寫配置文件接受redis服務(wù)器存儲的數(shù)據(jù),在本地對日志數(shù)據(jù)進行加工處理,添加屬性信息等,然后輸出給elasticsearch。
為了在kibana中有更精確的數(shù)據(jù)展示,在logstash服務(wù)器中添加GeoLite2-City數(shù)據(jù)庫,用于獲取客戶端IP地址的經(jīng)緯度信息
geoip插件會根據(jù)請求自動讀取到所期望讀取的ip,例如cilentip
然后將cilentip跟地址庫中信息做比對,如果能查找到則解析為當中所記錄的歸屬者或者擁有者信息,否則返回錯誤。
配置使用geoip插件
展開GeoLite2-City_20191203壓縮包,將文件復(fù)制到/etc/logstash/maxmind
進入到/etc/logstash/maxmind目錄創(chuàng)建符號鏈接
ln -sv GeoLite2-City_20191203/GeoLite2-City.mmdb ./
接下來配置logstash用戶接受處理數(shù)據(jù)的配置文件
vim /etc/logstash/conf.d/redis-els.conf
input { //input用于定義接受從redis獲取數(shù)據(jù)
redis {
host => "172.20.128.43"
port => 6379
password => "test.com"
db => 0
key => "filebeat"
data_type => "list"
}
}
filter { //過濾插件對獲取的日志數(shù)據(jù)進行切割同時添加屬性信息
grok { //調(diào)用logstash內(nèi)置函數(shù)對日志數(shù)據(jù)進行切割
match => {"message" => "%{HTTPD_COMBINEDLOG}"}
remove_field => ["message","beat"]
}
date {
match => ["timestamp","dd/MMM/YYY:H:m:s Z"]
}
geoip { //調(diào)用經(jīng)緯度信息
source => "clientip"
target => "geoip"
database => "/etc/logstash/maxmind/GeoLite2-City.mmdb"
}
mutate { //去除數(shù)據(jù)切割后相同字段屬性
rename => {"[host][name]" => "host"}
}
}
output { //處理后的數(shù)據(jù)輸出到elsaticsearch中
elasticsearch {
hosts => ["http://node1:9200/","http://node2:9200/","http://node3:9200/"]
index => "logstash-%{+YYYY.MM.dd}"
document_type => "httpd_access_logs"
}
stdout {codec => rubydebug} //在輸出到elasticsearch的同時,將數(shù)據(jù)數(shù)據(jù)到桌面,如果有錯誤信息同時輸出的桌面
}
在客戶端發(fā)起請求的同時,執(zhí)行此配置文件
logstash -f redis-els.conf
此時可以看到桌面的數(shù)據(jù)輸出
在elasticsearch驗證是否有索引生成
將rpm包上傳到172.20.128.42并安裝
rpm -ivh kibana-6.6.0-x86_64.rpm
編輯配置文件 /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
server.name: "master" //安裝kinaba服務(wù)的主機名
elasticsearch.hosts: ["http://node1:9200"] //生產(chǎn)環(huán)境中此處可以使用VIP進行高可用訪問,此處選取任意一個elastic作為數(shù)據(jù)輸入源
elasticsearch.preserveHost: true //是否保留原來的主機host
kibana.index: ".kibana" //kibana啟動后將自身索引信息保存在elasticsearch,
啟動服務(wù)
systemctl start kibana
systemctl enable kibana
在瀏覽器輸入172.20.128.42:5601
在management生成配置一個index pattern,名稱以logstash-“date”為基準
在Discover選項可以是創(chuàng)建的索引進行搜索
還可以在Visualize選項進行客戶端請求IP地址來源的儀表盤展示,選擇
此時一個elk的測試環(huán)境搭建完成
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。