ELK介紹
ELK是ElasticSerach缎患、Logstash借笙、Kibana三款產(chǎn)品名稱的首字母集合,用于日志的搜集和搜索较锡。
Elasticsearch:是一個(gè)開源分布式搜索引擎业稼,提供搜集、分析蚂蕴、存儲(chǔ)三大功能低散,特點(diǎn)是分布式俯邓、零配置、自動(dòng)發(fā)現(xiàn)熔号、索引自動(dòng)分片稽鞭、索引副本機(jī)制,restful風(fēng)格接口引镊,多數(shù)據(jù)源朦蕴,自動(dòng)搜索負(fù)載等。
Logstash:主要用來日志收集弟头、分析吩抓、過濾日志的工具,支持大量數(shù)據(jù)獲取方式赴恨。一般工作方式為C\S架構(gòu)疹娶,Client端安裝在需要收集日志的主機(jī)上,server端負(fù)責(zé)將收集到的各個(gè)節(jié)點(diǎn)日志進(jìn)行過濾伦连、修改等操作雨饺,然后一并發(fā)給elasticsearch。
Kibana:可以作為Logstash和elasticsearch提供的日志分析友好的UI界面惑淳,可以幫助匯總额港、分析和搜索重要數(shù)據(jù)日志。
Filebeat:輕量級(jí)數(shù)據(jù)收集引擎歧焦,ELK Stack 在 Agent 的第一選擇移斩。
1.系統(tǒng)配置
? 設(shè)置hostname,打開文件/etc/hostname倚舀,將內(nèi)容改為elk-server
? 關(guān)閉防火墻(如果因?yàn)槠渌虿荒荜P(guān)閉防火墻叹哭,也請(qǐng)不要禁止80端口)
systemctl stop firewalld.service
? 禁止防火墻自動(dòng)啟動(dòng)
systemctl disable firewalld.service
? 打開文件vim /etc/security/limits.conf,添加下面四行內(nèi)容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
? 打開文件vim /etc/sysctl.conf痕貌,添加下面一行內(nèi)容:
vm.max_map_count=655360
? 加載sysctl配置风罩,執(zhí)行命令:sysctl -p
2.部署ELK
? 配置jdk環(huán)境
1.檢查一下系統(tǒng)中的jdk版本
java -version
2.檢測jdk安裝包
# rpm -qa | grep java
3.如果有卸載
比如: rpm -e --nodeps tzdata-java-2018c-1.el7.noarch
4.將jdk包拷貝到/usr/java下
mv jdk-8u161-linux-x64.tar.gz /usr/java
cd /usr/java
tar -xzvf jdk-8u161-linux-x64.tar.gz
cd jdk1.8.0_161/
5.設(shè)置環(huán)境變量
vim /etc/profile
在最前面添加:
export JAVA_HOME=/usr/java/jdk1.8.0_161
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
使環(huán)境變量生效
source /etc/profile
? 部署Elasticsearch
單機(jī)版
1.創(chuàng)建目錄
mkdir /usr/local/elk
2.將ElasticSerach、Logstash舵稠、Kibana安裝包拷貝到此目錄并解壓
3.創(chuàng)建用戶組
groupadd elk
4.創(chuàng)建用戶加入用戶組
useradd elk -g elk
5.創(chuàng)建日志文件
touch touch /usr/local/elk/elasticsearch-6.7.2/logs/elasticsearch.log
6.單獨(dú)創(chuàng)建數(shù)據(jù)存放路徑
mkdir /mnt/esdata
修改主配置文件中數(shù)據(jù)存放位置(若安裝完成后需要修改超升,可以將elasticsearch-6.7.2/data/目錄下所有文件復(fù)制到新創(chuàng)建的文件下)cp -Rp
7.設(shè)置ElasticSerach文件夾為用戶elk所有:
chown -R elk. /usr/local/elk/elasticsearch-6.7.2/
若修改了數(shù)據(jù)存放路徑,則創(chuàng)建的文件夾也需要修改
chown -R elk. /mnt/esdata/
8.執(zhí)行啟動(dòng)命令
su - elk -c "/usr/local/elk/elasticsearch-6.7.2/bin/elasticsearch -d"
9.查看日志是否有報(bào)錯(cuò)
tail -f /usr/local/elk/elasticsearch-6.7.2/logs/elasticsearch.log
至此單機(jī)版es安裝完成哺徊∈易粒可用curl 127.0.0.1:9200 查看返回值
集群版
1.創(chuàng)建目錄
mkdir /usr/local/elk
2.將ElasticSerach、Logstash落追、Kibana安裝包拷貝到此目錄并解壓
3.創(chuàng)建用戶組
groupadd elk
4.創(chuàng)建用戶加入用戶組
useradd elk -g elk
5.創(chuàng)建日志文件
touch touch /usr/local/elk/elasticsearch-6.7.2/logs/elasticsearch.log
6.單獨(dú)創(chuàng)建數(shù)據(jù)存放路徑
mkdir /mnt/esdata
修改主配置文件中數(shù)據(jù)存放位置(若安裝完成后需要修改盈滴,可以將elasticsearch-6.7.2/data/目錄下所有文件復(fù)制到新創(chuàng)建的文件下)cp -Rp
7.設(shè)置ElasticSerach文件夾為用戶elk所有:
chown -R elk. /usr/local/elk/elasticsearch-6.7.2/
若修改了數(shù)據(jù)存放路徑,則創(chuàng)建的文件夾也需要修改
chown -R elk. /mnt/esdata/
8.修改es主配置文件
vim /usr/local/elk/elasticsearch-6.7.2/config/elasticsearch.yml
加入如下內(nèi)容
cluster.name: elk? ###保證三臺(tái)服務(wù)器節(jié)點(diǎn)集群名稱相同
node.name: node-1 #### 每個(gè)節(jié)點(diǎn)名稱不一樣 其他兩臺(tái)為node-1 ,node-2
network.host: 0.0.0.0 #### 實(shí)際服務(wù)器ip地址
discovery.zen.ping.unicast.hosts: ["172.16.3.158", "172.16.3.157"]
discovery.zen.minimum_master_nodes: 1
9.執(zhí)行啟動(dòng)命令
su - elk -c "/usr/local/elk/elasticsearch-6.7.2/bin/elasticsearch -d"
10.查看日志是否有報(bào)錯(cuò)
tail -f /usr/local/elk/elasticsearch-6.7.2/logs/elasticsearch.log
可用curl 127.0.0.1:9200 查看返回值
查看集群狀態(tài)(另外一臺(tái)重復(fù)上述操作)
curl -u USER:PASS http://127.0.0.1:9200/_cat/nodes?v
11.修改內(nèi)存大小 ,一般為服務(wù)器內(nèi)存大小一半
vim /usr/local/elk/elasticsearch-6.7.2/config/jvm.options?
后面安裝Kibana后可以查看到
? 部署Logstash
1.退出當(dāng)前用戶巢钓,回到root用戶
在目錄/usr/local/elk/logstash-6.7.2下創(chuàng)建文件vim default.conf病苗,內(nèi)容如下:
# 監(jiān)聽5044端口作為輸入
input {
????beats {
????????port => "5044"
????????}
}
# 數(shù)據(jù)過濾
filter {
????grok {
????????match => { "message" => "%{COMBINEDAPACHELOG}" }
????????}
????geoip {
source => "clientip"
????????}
}
# 輸出配置為本機(jī)的9200端口,這是ElasticSerach服務(wù)的監(jiān)聽端口
output {
????elasticsearch {
????????hosts => ["127.0.0.1:9200"]
????}
}
后臺(tái)啟動(dòng)Logstash服務(wù)
nohup bin/logstash -f default.conf --config.reload.automatic &
查看啟動(dòng)日志
tail -f logs/logstash-plain.log
?部署Kibana
1.打開Kibana的配置文件vim /usr/local/elk/kibana-6.7.2-linux-x86_64/config/kibana.yml症汹,到第七行左右修改server.host
2.運(yùn)行Kibana
進(jìn)入Kibana的目錄:/usr/local/elk/kibana-6.7.2-linux-x86_64 ;執(zhí)行啟動(dòng)命令:nohup bin/kibana &
nohup /usr/local/elk/kibana-6.7.2-linux-x86_64/bin/kibana &
查看啟動(dòng)日志
tail -f /usr/local/elk/kibana-6.7.2-linux-x86_64/nohup.out?
在瀏覽器訪問http://ip:5601硫朦,看到如下頁面
?部署Filebeat
1.安裝nginx
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx
systemctl enable nginx
systemctl start nginx
2.安裝FileBeat
vim /usr/local/elk/filebeat-6.7.2-linux-x86_64/filebeat.yml
24 enabled: true
28 - /var/log/nginx/*.log
148 #output.elasticsearch:
150 # hosts: ["localhost:9200"]
161 output.logstash:
163 hosts: ["10.0.0.175:5044"]
3.啟動(dòng)FileBeat
nohup ./filebeat -e -c filebeat.yml &>/dev/null &
4.驗(yàn)證
3.kibana平臺(tái)增加安全認(rèn)證
kibana是nodejs開發(fā)的,本身并沒有任何安全限制背镇,直接瀏覽url就能訪問咬展,如果公網(wǎng)環(huán)境非常不安全,可以通過nginx請(qǐng)求轉(zhuǎn)發(fā)增加認(rèn)證
1.安裝nginx并修改配置文件:
yum install nginx
systemctl enable nginx
vim /etc/nginx.conf
user root;
worker_processes? 4;
events {
worker_connections? 1024;
}
http {
include? ? ? mime.types;
default_type application/octet-stream;
sendfile? ? ? ? on;
keepalive_timeout? 65;
server {
listen? ? ? 80;
server_name? 127.0.0.1;
auth_basic "Kibana Auth";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://127.0.0.1:5601;
proxy_redirect off;
}
}
}
2.安裝生成密碼工具
yum install httpd-tools
生成密碼瞒斩,用戶名為admin
htpasswd -c /usr/local/nginx/.htpasswd admin
提示輸入2遍密碼
New password:
Re-type new password:
Adding password for user admin
3.啟動(dòng)nginx
systemctl start nginx
4.驗(yàn)證
4.漢化kibana
1.安裝git
yum install -y git
2.下載漢化包
git clone https://github.com/anbai-inc/Kibana_Hanization.git
3.進(jìn)行漢化
修改kibana配置文件vim /usr/local/elk/kibana-6.7.2-linux-x86_64/config/kibana.yml中的配置項(xiàng):i18n.locale: "zh-CN" 并重啟kibana