filebeat: 10.0.0.41
redis: 10.0.0.42
logstash: 10.0.0.43
elasticsearch: 10.0.0.44
kibana: 10.0.0.45
架構如下:
一、filebeat:10.0.0.41
1、安裝filebeat,自己作多個filebeat,我只做一個
cat > /etc/yum.repos.d/artifacts.repo <<EOF
[elastic-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
yum -y install filebeat
2、編輯filebeat的配置文件,並下載nginx產生日誌
上傳nginx包,源碼進行編譯
我這裏下載好的直接上傳
yum –y install pcre-devel zlib-devel gcc gcc-c++
tar xzf nginx-1.12.0.tar.gz
cd nginx-1.12.0
./configure && make && make install
vim /etc/filebeat/filebeat.yml
#其他配置都可以刪除
filebeat.inputs: #收集日誌
- type: log #類型
enabled: true #始終收集
paths:
- /usr/local/nginx/logs/*.log #收集/var/log/nginx/下的以 .log 結尾的日誌
output.redis: #輸出日誌,固定格式
hosts: ["10.0.0.42:6379"] #輸出在redis裏
# password: "123456" #redis認證密碼,我沒有
key: "log_file" #日誌redis的key值
db: 0 #redis數據庫0
timeout: 5 #延時5s
3、重啓filebeat
systemctl restart filebeat
/usr/local/nginx/sbin/nginx
4、測試
可以在安裝filebeat的服務器上測試一下nginx的服務,併產生日誌
curl -I 10.0.0.41:80
二、redis:10.0.0.42
1 下載redis5.0
wget http://download.redis.io/releases/redis-5.0.2.tar.gz
2、安裝redis編譯需要的環境
yum -y install gcc gcc-c++
3、編譯安裝redis
tar zxf redis-5.0.2.tar.gz
cd redis-5.0.2/
make MALLOC=libc && make install
4、寫master拷貝redis配置至/etc/redis.conf、並修改成以守護進程啓動
cp redis.conf /etc/redis.conf
vim /etc/redis.conf
bind 0.0.0.0 接收所有IP信息
5、啓動redis主
/usr/local/bin/redis-server /etc/redis.conf
6、寫slave拷貝redis配置至/etc/redis_slave.conf、修改端口,設置主從同步並修改成以守護進程啓動
cp redis.conf /etc/redis_slave.conf
vim /etc/redis_slave.conf
7、啓動redis從
/usr/local/bin/redis-server /etc/redis_slave.conf
8、查看端口
9、測試主從是否成功,並接收到filebeat日誌
三、logstash:10.0.0.43
1、首先拉軟件包,基於java語言開發首先配置java環境,推薦1G運行內存
2、安裝logstash過濾收集工具,和客戶端有點相似
rpm -ivh logstash-6.6.0.rpm
3、配置logstash、並啓動logstash、自己加過濾規則
添加nginx過濾規則
vim /usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/nginx_access
URIPARAM1 [A-Za-z0-9$.+!*'|(){},~@#%&/=:;_?\-\[\]]*
NGINXACCESS %{IPORHOST:client_ip} (%{USER:ident}|- ) (%{USER:auth}|-) \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} (%{NOTSPACE:request}|-)(?: HTTP/%{NUMBER:http_version})?|-)" %{NUMBER:status} (?:%{NUMBER:bytes}|-) "(?:%{URI:referrer}|-)" "%{GREEDYDATA:agent}"
配置logstash
vim /etc/logstash/conf.d/redis_log.conf
input {
redis {
port => "6379"
host => "10.0.0.42" #記住收取了redis裏的數據,redis將沒有數據
# password => "6lapp" #redis認證密碼,我沒有
data_type => "list"
type => "log"
key => "log_file"
}
}
filter {
grok {
match => { "message" => "%{NGINXACCESS}" } #對應nginx,上一題過濾正則
}
}
output {
elasticsearch {
hosts => "10.0.0.44:9200"
index => "logstash-%{+YYYY.MM.dd}"
}
}
systemctl start logstash
4、查看端口
四、elasticsearch:10.0.0.44
1、首先拉軟件包,基於java語言開發首先配置java環境,推薦1G運行內存
2、首先安裝elasticsearch-6.6.0.rpm
rpm -ivh elasticsearch-6.6.0.rpm
3、修改elasticsearch配置,並啓動elasticsearch
vim /etc/elasticsearch/elasticsearch.yml
systemctl start elasticsearch
五、kibana:10.0.0.45
1、首先拉軟件包,推薦1G運行內存,不需要java環境
2、安裝kibana
rpm -ivh kibana-6.6.0-x86_64.rpm
3、修改kibana配置、並啓動kibana
vim /etc/kibana/kibana.yml
systemctl start kibana
4、效果出現索引,並且過濾成功,如果過濾報警號,刪除索引重啓