ELK日誌可視化

ELK集中式日誌

ELK可以管理上百臺服務器的日誌信息。

  • Elasticsearch是一個開源的分佈式搜索引擎,提供搜索、分析和存儲數據三大功能。它的特點有:分佈式、自動發現、索引自動分片、索引副本機制、Restful風格接口、多數據源及自動搜索負載等。(存儲日誌)
  • Logstash是一個開源的用來收集、解析和過濾日誌的工具。支持幾乎任何類型的日誌,包括系統日誌、業務日誌和安全日誌。它可以從許多來源接收日誌,這些來源主要包括Syslog、消息傳遞(如RabbitMQ)和Filebeat;能夠以多種方式輸出數據,這些方式主要包括電子郵件、WebSockets和Elasticsearch.(收集日誌
    或者數據庫)
  • Kibana是一個基於Web的友好圖形界面,用於搜索、分析和可視化存儲在Elasticsearch中的數據。它利用Elasticsearch的RESTful接口來檢索數據,不僅允許用戶定製儀表板視圖,還允許用戶以特殊的方式查詢、彙總和過濾修改。(可視化日誌管理)
    在這裏插入圖片描述

ELK的實現

第一步:安裝Elasticsearch(適當降低JVM內存分配 避免工具宕機)

集羣環境下的核心配置
https://blog.csdn.net/wang_zhenwei/article/details/50385743(更詳細的配置)

cluster.name: aubin-cluster # 集羣名稱 
node.name: els1 # 節點名稱,僅僅是描述名稱,用於在日誌中區分 
network.host: 192.168.0.1 # 當前節點的IP地址 
http.port: 9200 # 對外提供服務的端口,9300爲集羣服務的端口 
transport.tcp.port:  9300  
discovery.zen.ping.unicast.hosts: ["172.18.68.11", "172.18.68.12","172.18.68.13"] # 集羣個節點IP地址,也可以使用els、els.shuaiguoxia.com等名稱,需要各節點能夠解析 
discovery.zen.minimum_master_nodes: 2 # 爲了避免腦裂,集羣節點數最少爲 半數+1

這下面是必配項
集羣中節點作爲負載器、協調器、搜索器節點設置

# 配置文件中給出了三種配置高性能集羣拓撲結構的模式,如下:
# 1. 如果你想讓節點從不選舉爲主節點,只用來存儲數據,可作爲負載器
# node.master: false
# node.data: true
#
# 2. 如果想讓節點成爲主節點,且不存儲任何數據,並保有空閒資源,可作爲協調器
# node.master: true
# node.data: false
#
# 3. 如果想讓節點既不稱爲主節點,又不成爲數據節點,那麼可將他作爲搜索器,從節點中獲取數據,生成搜索結果等
# node.master: false
# node.data: false

啓動es

#普通的  進入bin目錄下
./elasticsearch -d
#Docker容器中
systemctl enable elasticsearch.service
systemctl start elasticsearch

查看節點信息

curl -XGET 'http://47.94.101.75:9200/_cat/nodes?pretty'
curl -XGET 'http://192.168.25.100:9200/_cat/nodes?pretty'

第二步:安裝Elasticsearch-Head(用於往Elasticsearch中添加索引)

1.安裝npm
https://blog.csdn.net/Aaron_Zhang939/article/details/99234999
添加模塊

npm install grunt-contrib-jasmine

2.安裝Elasticsearch-Head

yum install -y epel git
yum install -y npm
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
# 後臺啓動npm run start &
npm run start  

檢查是否啓動成功:

http://192.168.25.100:9100

解決無法添加elasticsearch

需要在elasticsearch的elasticsearch.yml文件裏面添加

http.cors.enabled: true
http.cors.allow-origin: "*"

elasticsearch的查詢語句

http://IP:9200/indexName?q=123&pretty=true
http://IP:9200/indexName/_search?q=*123*pretty=true #模糊查詢
indexName是索引名字,  pretty=true表示格式化輸出
?q=123表示搜索123

在這裏插入圖片描述

第三步: 安裝Logstash

https://www.cnblogs.com/cjsblog/p/9459781.html
Logstash管道有兩個必需的元素,輸入和輸出,以及一個可選元素過濾器。
輸入插件從數據源那裏消費數據,過濾器插件根據你的期望修改數據,輸出插件將數據寫入目的地。
在這裏插入圖片描述
a.下載解壓

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.1.1.tar.gz
tar -zxvf logstash-7.1.1.tar.gz -C /usr/local/logstash

b.配置Logstash /usr/local/logstash/bin
vim stdin.conf #編寫配置文件

input{
        file {
               path => "/var/log/nginx/access.log_json"  #NGINX日誌地址 json格式
               codec => "json"  #json編碼
        }
}
filter {
        mutate {
                split => ["upstreamtime", ","]    
        }
        mutate {
                convert => ["upstreamtime", "float"]
        }
}
output{
        elasticsearch {
                hosts => ["192.168.25.100:9200"]   #elasticsearch地址
                index => "logstash-%{type}-%{+YYYY.MM.dd}"   #索引
                workers => 1
                template_overwrite => true   
        }

}

修改config/jvm.option

-Xms128m
-Xmx128m

啓動

./logstash -f stdin.conf &  #後臺啓動

建立軟連接便於操作

ln -s /usr/local/logstash/bin/logstash /bin/

測試

logstash -e 'input { stdin { } } output { stdout {} }'

第四步: 配置Nginx (作爲logstash的數據來源)

#user  nobody;
worker_processes  1;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
   worker_connections  1024;
}
http {
  
    upstream kibana4 {  #對Kibana做代理  
        server 127.0.0.1:5601 fail_timeout=0;
    }
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
                     
     log_format json '{"@timestamp":"$time_iso8601",'   #配置NGINX的日誌格式 json
                        '"host":"$server_addr",'
                        '"clientip":"$remote_addr",'
                        '"size":$body_bytes_sent,'
                        '"responsetime":$request_time,'
                        '"upstreamtime":"$upstream_response_time",'
                        '"upstreamhost":"$upstream_addr",'
                        '"http_host":"$host",'
                        '"url":"$uri",'
                        '"xff":"$http_x_forwarded_for",'
                        '"referer":"$http_referer",'
                        '"agent":"$http_user_agent",'
                        '"status":"$status"}';
     access_log /var/log/nginx/access.log_json json;   #配置日誌路徑 json格式
     error_log /var/log/nginx/error.log;  
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;

    server {
    listen               *:80;
    server_name          kibana_server;
    location / {
        root   /usr/local/nginx/html/;
        index  index.html  index.htm;
    }
  
}
}

啓動:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginxelk.conf

關閉:

ps -ef |grep nginx   (用戶ID 進程ID 父進程ID)
kill -9  進程號   

第五步 安裝Kibana(可視化日誌管理 注意版本要與elasticsearch匹配)

a.下載解壓

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.1.1-linux-x86_64.tar.gz
tar xf kibana-7.1.1-linux-x86_64.tar.gz

b.修改配置文件
cd /usr/local/kibana-7.1.1-linux-x86_64/config

vim ./config/kibana.yml
elasticsearch.url: "   只需要修改URL爲ElasticSearch的IP地址
server.host: "0.0.0.0" #開啓遠程訪問
i18n.locale: "zh-CN" #漢化

c.啓動

./kibana &  後臺啓動

啓動成功以後 會監聽 5601端口

netstat -tunlp|grep 5601
kill -9 進程號

d.測試(設置-創建索引模式)

http://192.168.25.100:5601

設置Kabana的自動刷新
在這裏插入圖片描述

最終演示結果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章