syslog-ng部署: 用於接收交換機輸出的日誌。 syslog-ng安裝很簡單,可以順便搜一下,文章有很多。我是yum直接安裝的。 syslog-ng配置: 配置文件需要添加source 和destination 交換機上配置好log伺服器地址(部署syslog-ng、ELK的伺服器IP地址)即 ...
syslog-ng部署:
用於接收交換機輸出的日誌。
syslog-ng安裝很簡單,可以順便搜一下,文章有很多。我是yum直接安裝的。
syslog-ng配置:
vi /etc/syslog-ng/syslog-ng.conf
配置文件需要添加source 和destination
#設置接收日誌的協議和埠,localhost填寫本機IP地址 source s_remote { tcp(ip(localhost) port(514)); udp(ip(localhost) port(514)); }; #收到的日誌存放本地一份(elk搭建存不存本地都無所謂) destination d_file { file("/netlog/logs_${YEAR}-${MONTH}-${DAY}"); }; #收到的日誌交給logstash處理,定義傳輸協議udp,埠5144(這裡對應logstash的input) destination d_logstash { udp ("10.120.248.132" port(5144)); }; #多個目的,需要填寫進來,分號隔開 log { source(s_remote); destination(d_file); destination(d_logstash); };
交換機上配置好log伺服器地址(部署syslog-ng、ELK的伺服器IP地址)即可。
ELK搭建(非集群):
ELK分別是Elasticsearch、Logstash、Kibana三個開源框架縮寫。
Elasticsearch是個開源分散式搜索引擎,提供搜集、分析、存儲數據三大功能。
Logstash 主要是用來日誌的搜集、分析、過濾日誌的工具,支持大量的數據獲取方式。
Kibana 提供日誌分析的 Web 界面,幫助彙總、分析和搜索重要數據日誌。
1. 下載ELK(版本保持一致!):
這裡選擇下載了6.3.0版本。
Elasticsearch下載: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz
Kibana下載: https://artifacts.elastic.co/downloads/kibana/kibana-6.3.0-linux-x86_64.tar.gz
Logstash下載: https://artifacts.elastic.co/downloads/logstash/logstash-6.3.0.tar.gz
下載完成,使用rz命令上傳至centos7虛機,放在/home/目錄下。
2. 解壓
cd /home tar -zxvf elasticsearch-6.3.0.tar.gz tar -zxvf kibana-6.3.0-linux-x86_64.tar.gz tar -zxvf logstash-6.3.0.tar.gz
3. java環境搭建
推薦使用jdk1.8,為了方便安裝了java-1.8.0-openjdk,安裝方法見鏈接。
https://www.cnblogs.com/sitongyan/p/11262375.html
4. 部署elasticsearch,ELK的包解壓修改配置文件啟動即可使用,不需要安裝。
修改配置文件
vi /home/elasticsearch-6.3.0/config/elasticsearch.yml
# Set the bind address to a specific IP (IPv4 or IPv6): # network.host: 0.0.0.0 ##伺服器ip 本機 # # Set a custom port for HTTP: # http.port: 9200 ##服務埠 #
啟動elasticsearch:
/home/elasticsearch-6.3.0/bin/elasticsearch #命令窗運行 /home/elasticsearch-6.3.0/bin/elasticsearch -d #後臺線程運行
關閉elasticsearch:
ps -ef | grep elastic #後臺線程關閉 kill -9 4442 ##pid 4442為查處線程的pid
驗證elasticsearch啟動:
5. 安裝kibana
修改配置文件:
vi /home/kibana-6.3.0-linux-x86_64/config/kibana.yml
server.port: 5601 ##服務埠 server.host: "0.0.0.0" ##伺服器ip 本機 elasticsearch.url: "http://localhost:9200" ##elasticsearch服務地址 與elasticsearch對應
啟動kibana:
/home/kibana-6.3.0-linux-x86_64/bin/kibana #命令窗啟動 nohup ./kibana-6.3.0-linux-x86_64/bin/kibana & #後臺線程啟動
關閉kibana:
ps -ef | grep kibana #後臺線程關閉 kill -9 4525 ##pid 4525 為查處線程的pid
備註:常見問題多為 埠占用,以及目錄未授權,需要同elasticsearch 使用目錄運行執行的用戶去執行 未配置則為root用戶
驗證kibana啟動:
6. 安裝logstash
新建配置文件:
vi /home/logstash-6.3.0/config/logback-es.conf
0.0.0.0填寫本地IP地址,input標簽表示監聽udp協議的5144埠(此埠為syslog-ng設置的吐出日誌的目標埠),input日誌來源有很多種,udp是其中一種。
其他常見input標簽使用。
input {
udp {
host => "0.0.0.0"
port => 5144
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "switch-log-%{+YYYY.MM.dd}"
}
stdout {
codec => rubydebug
}
}
備註:上述文件複製時必須去除多餘空格,保持yml文件規範。
啟動logstash:
/home/logstash-6.3.0/bin/logstash -f /home/logstash-6.3.0/config/logback-es.conf ##命令窗形式 nohup /home/logstash-6.3.0/bin/logstash -f /home/logstash-6.3.0/config/logback-es.conf & ##後臺線程形式
關閉logstash:
ps -ef | grep logstash #後臺線程關閉 kill -9 4617 ##pid 4617 為查處線程的pid
7. 驗證ELK
查看elasticsearch索引,logstash收集到日誌後,會按照配置文件自動創建索引,並且根據時間YYYY.MM.dd切割數據建立一個一個的索引。
curl http://10.120.248.132:9200/_cat/indices?v ##查看自動創建的索引,能查看到說明elasticsearch存儲了從logstash output來的數據。 curl -XDELETE http://10.120.248.132:9200/索引名 ##清空無用索引
驗證kibana日誌展示是否正常:新建立的索引,kibana需要新建一下關聯。
Create Index Pattern創建索引
選擇時間戳,創建完成。
然後在Discover中查看日誌。如果看不見日誌,註意右上角的時間段選擇,選擇查看的時間長一些即可看見日誌。
註意:右上角的選擇查看日誌的時間段(例如today)是參照按照當前瀏覽器時間。例如,需要查看的日誌索引為7月1日,然而今天實際是7月2日,選擇區間為today就沒有日誌,因為today代表當前時間7月2日,7月1日的日誌中是不包含7月2日的。
8. kibana添加登錄認證
elk驗證完成之後,會發現kibana不需要用戶登錄直接即可訪問,這樣很不安全,需要添加登錄認證。
可以採用Nginx代理完成認證操作。
1.安裝Nginx完成之後,安裝Apache密碼生成工具:
yum install httpd-tools
2.生成密碼文件:
mkdir -p /etc/nginx/passwd htpasswd -c -b /etc/nginx/passwd/kibana.passwd user ****** ##-c表示創建一個加密文件,-b表示在htpassswd命令行中一併輸入用戶名和密碼而不是根據提示輸入密碼。
3.配置Nginx:
vi /usr/local/webserver/nginx/conf/nginx.conf
server { listen 5601; ##監聽用戶訪問的5601埠 server_name localhost:5601; ##本機IP:port #charset koi8-r; #access_log logs/host.access.log main; location / { auth_basic "kibana login auth"; auth_basic_user_file /usr/local/test/passwd/kibana.passwd; ##存儲用戶密碼文件 proxy_pass http://localhost:5602; #因為Nginx代理了kibana的5601埠,所以kibana需要換一個埠,我換成了5602,註意kibana的配置文件也需要改成5602埠 proxy_redirect off; } #error_page 404 /404.html;
4.修改Kibana配置文件:
vi /home/kibana-6.3.0-linux-x86_64/config/kibana.yml
# Kibana is served by a back end server. This setting specifies the port to use. server.port: 5602
5.重啟Kibana服務,配置文件生效:
ps -ef | grep kibana kii -9 進程號
cd /home/
nohup ./kibana-6.3.0-linux-x86_64/bin/kibana & ##後臺啟動
6.訪問kibana
後續會補充logstash時間戳問題的處理辦法。