ELK:一套組件
1:安裝elasticsearch,需要先安裝jdk
(1)這里我安裝的是jdk11.0.1
鏈接: https://pan.baidu.com/s/1E1MTgTyNFskHbahzBgNfjg 提取碼: iutb
解壓jdk,解壓命令為#tar -zxvf openjdk-11.0.1_linux-x64_bin.tar.gz
為了使后續使用將解壓的文件夾改名為jdk:#mv jdk-12.0.2/ jdk
(2):配置環境變量,輸入命令
#vim /etc/profile
在文件尾部加入以下內容:
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=/$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
修改完成后,保存文件,退出。
通過source命令重新加載/etc/profile文件,使得修改后的內容生效,命令如下。
# source /etc/profile
輸入java –version查看jdk版本,輸出成功,這代表安裝成功。
值得注意的是:export JAVA_HOME=/usr/local/jdk 這個路徑是看你吧你的jdk安裝在那個路徑下,改為你安裝的路徑。
2:elasticsearch的安裝
(1)去官網下載7.3版本的elasticsearch,其他組件也建議使用相同版本。選擇linux版本然后上傳至服務器,選擇你要上傳的目錄,然后解壓
tar -zxvf elasticsearch-7.3.0-linux-86_64.tar.gz
(2)修改配置文件
-
network.host: 0.0.0.0 這樣寫是全局訪問,你也可以寫成讓某個主機訪問,全局訪問需要打開防火牆的端口,或者關閉防火牆
-
http.port: 9200
(3)啟動elasticsearch需要非root用戶
useradd test #創建用戶test
groupadd test#創建組test
useradd test-g test#將用戶添加到組
然后需要把該組建的權限賦予新建的非root用戶
chown test:test /elasticsearch/* 這是我得文件夾
(4)啟動elasticsearch
進入到elasticsearch,cd /elasticsearch/bin
然后 ./elasticsearch & 掛后台執行
注意容易出錯:
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[3]:the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
解決:【1】:編輯 /etc/security/limits.conf,追加以下內容;
* soft nofile 65536
* hard nofile 65536
此文件修改后需要重新登錄用戶,才會生效
【2】:編輯 /etc/sysctl.conf,追加以下內容:
vm.max_map_count=655360
保存后,執行:
sysctl -p
重新啟動,成功。
【3】:
在配置文件里面
取消注釋保留一個節點
cluster.initial_master_nodes: ["node-1"]
這個的話,這里的node-1是上面一個默認的記得打開就可以了
3:安裝filebeat
(1)filebeat是安裝在客戶端用來搜集日志的,然后把收集的日志送到logstash
(2)把壓縮包上傳至指定目錄,解壓 tar -zxvf filebeat-7.3.0.tar.gz
(3)修改配置文件 vim /filebeat/filebeat.yml
在文件末尾加上這些
塗畫的地方是logstash的ip和端口
path:是你要搜集日志的路徑
需要注意的是:在配置文件里面需要把
這兩行注釋掉,關掉一個出口
如果報-bash: ./filebeat: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory錯誤
解決:
sudo yum install glibc-common glibc
sudo yum install glibc.i686
4:安裝logstash
(1)上傳壓縮包到指定目錄,解壓
tar -zxvf logstash-7.3.0.tar.gz
(2)新建一個配置文件,用來使用此文件啟動logstash vim test.conf
塗掉的地方是elasticsearch的地址和端口 指定輸出到哪里
這是簡單的配置,input是來接收filebeat傳送過來的日志文件,,如果有更多需求,可以使用filter過濾功能
(3)啟動
在logstash的bin目錄下
./logstash -f ../test.conf & 這里我的test.conf是和bin為同級目錄
5:安裝kibana
(1)上傳壓縮包到指定目錄,解壓 tar -zvxf ********
(2)修改配置文件
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
如果需要漢化kibana
i18n.locale: "zh-CN"
(3)啟動 在bin目錄下 ./kibana & 需要注意的是 kibana也是要在非root用戶下啟動
(4)界面使用,
所有組件都啟動后會看到在elasticsearch下的索引管理里面有你自己建立的索引,也就是在logstash配置文件里,
然后在kibana里面創建索引模式,點進去,你會看到你的索引,然后定義索引模式,例如logstash-* 點擊下一步
最后需要在日志界面的配置源中,把該索引加進去
這些都是索引。
產看日志過濾使用,可以在搜索框中使用多條件聯合查詢
(6)告警到zabbix
(1)安裝
logstash-output-zabbix是一個社區維護的插件,它默認不安裝,但是它安裝起來也很容易,直接在logstash中運行即可:
bin/logstash-plugin install logstash-output-zabbix
(2)配置logstash文件
input { beats { port => 5044 } } filter { grok { match => { "message" => "%{IP:remote_addr} (?:%{DATA:remote_user}|-) \[%{HTTPDATE:timestamp}\] %{IPORHOST:http_host} %{DATA:request_method} %{DATA:request_uri} %{NUMBER:status} (?:%{NUMBER:body_bytes_sent}|-) (?:%{DATA:request_time}|-) \"(?:%{DATA:http_referer}|-)\" \"%{DATA:http_user_agent}\" (?:%{DATA:http_x_forwarded_for}|-) \"(?:%{DATA:http_cookie}|-)\""} } mutate { add_field => [ "[@metadata][zabbix_key]" , "logstash-api-access" ] 在消息中添加zabbix中item的key值 add_field => [ "[@metadata][zabbix_host]" , "EIP_weixin" ] 在消息中添加zabbix中的host值,主機名 } } output { elasticsearch { hosts => ["10.1.129.101:9200"] index => "logstash-wxself.gtafe.com_10.1.134.60" } if [message] =~ /(ERR|error|ERROR|Failed)/ { zabbix { zabbix_host => "[@metadata][zabbix_host]" zabbix_key => "[@metadata][zabbix_key]" zabbix_server_host => "10.1.134.220" zabbix_server_port => "10051" zabbix_value => "message" } } stdout { codec => rubydebug } }
(3)然后在zabbix web界面建立模板。監控項,觸發器
需要注意的是,監控項要設置成zabbix采集器,設置成字符類型(設置文本類型不行,不知道什么原因),觸發器設置為
設置完后可以測試一下,需要你在采集日志的主機上安裝zabbix agent,命令如下:
/usr/local/zabbix/bin/zabbix_sender -z 10.1.134.220 -vv -s "EIP_weixin" -k logstash-api-access -o "Aug"
-z代表是 zabbix server 地址 -vv 是 詳細顯示 -s 是主機名 -k 是鍵值 -o 是 傳輸值