ELKBR部署檢測項目日誌

  • 2019 年 10 月 3 日
  • 筆記

ELK

  • filebeat:具有日誌收集功能,相比logstash,+filebeat更輕量,佔用資源更少,適合客戶端使用。
  • redis消息隊列選型:Redis 伺服器通常都是用作 NoSQL 資料庫,不過這裡的 redis 只是用來做消息隊列,海量日誌建議使用kafka。
  • logstash:主要是用來日誌的搜集、分析、過濾日誌的工具,支援大量的數據獲取方式。一般工作方式為c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一併發往elasticsearch上去。
  • elasticsearch:Elasticsearch是個開源分散式搜索引擎,提供搜集、分析、存儲數據三大功能。它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多數據源,自動搜索負載等。
  • kibana:Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 介面,可以幫助匯總、分析和搜索重要數據日誌。
主機名 配置 角色 軟體版本
filebeat 日誌搜集客戶端 https://www.elastic.co/cn/downloads/beats/filebeat
redis 2 vCPU 8 GiB 消息隊列 redis-stable.tar.gz
logstash 4 vCPU 16 GiB 日誌搜集 https://www.elastic.co/cn/downloads/logstash
elasticsearch 4 vCPU 16 GiB 日誌搜索引擎 https://www.elastic.co/cn/downloads/elasticsearch
kibana 2 vCPU 4 GiB 日誌數據展示 https://www.elastic.co/cn/downloads/kibana

ES激活白金版:https://www.jianshu.com/p/1ff67bb363dd

1 redis部署

  • 上傳部署包至/usr/local/src/redis/,依賴安裝及環境配置

  • mkdir -p /usr/local/src/redis/  yum -y install gcc-c++ make tcl  service iptables stop && chkconfig iptables off  echo 511 > /proc/sys/net/core/somaxconn  echo never > /sys/kernel/mm/transparent_hugepage/enabled  echo "echo 511 > /proc/sys/net/core/somaxconn" >> /etc/rc.local  echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local  echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf && modprobe bridge && sysctl -p
  • 編譯安裝redis server

  • mkdir -p /usr/local/src/redis/{data,log}  cd /usr/local/src/redis && tar -zxvf redis-stable.tar.gz -C . && cd redis-stable && make && make install  (此處可一路回車選擇默認配置,配置文件在cat /etc/redis/6379.conf)  ./utils/install_server.sh
  • 啟動redis

  • chkconfig redis_6379 on  service redis_6379 start
  • 檢查啟動後服務是否正常

  • redis-cli -h 本機IP

    localhost:6379> keys *
    (empty list or set)
    localhost:6379> set test abc
    OK
    localhost:6379> get test
    "abc"
    localhost:6379> del test
    (integer) 1

    localhost:6379> quit

2 filebeat

  • 上傳filebeat包,解壓修改配置

  • mkdir /usr/local/src/filebeat  #上傳壓縮包  tar -zxvf filebeat-7.3.1-linux-x86_64.tar.gz  cd filebeat-7.3.1-linux-x86_64  vim filebeat.yml

(paths:對應日誌位置)

enabled: true

paths:

  • /tomcat/apache-tomcat-7.0.72/logs/*.out

multiline.pattern: ^[

multiline.negate: false

multiline.match: after

(tags:變數TEMPLATE_TAG用於部署到對應伺服器後批量替換為對應實例名稱)

tags: ["192.168.192.10"]

注釋掉Elasticsearch相關的配置

—————————– Redis output ——————————–

(key變數為保存到redis中的鍵名,用於部署到對應伺服器後批量替換為對應應用名)

output.redis:
hosts: ["localhost:6379"]
db: 0
timeout: 5
key: "project-name"

================================ Global =====================================

filebeat.global:
filebeat.spool_size: 64
filebeat.idle_timeout: 5s

  • 啟動

  • ./filebeat -e -c filebeat.yml
  • 查看redis是否已有日誌記錄

  • redis-cli -h 本機IP  #查看所有KEY  keys *  #查看日誌長度  LLEN project-name  #查看某一行日誌  INDEX project-name 1  

3 ElasticSearch

ElasticSearch啟動問題:

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
切換到root用戶,編輯limits.conf添加如下內容(需要重啟生效)
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536

[2]: max number of threads [3818] for user [es] is too low, increase to at least [4096]
最大執行緒個數太低。修改配置文件etc/security/limits.conf,增加配置
* soft nproc 4096
* hard nproc 4096

[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
修改/etc/sysctl.conf文件,增加配置vm.max_map_count=262144
vi /etc/sysctl.conf
sysctl -p
執行命令sysctl -p生效

問題原因:因為Centos6不支援SecComp,而ES5.2.1默認bootstrap.system_call_filter為true進行檢測,所以導致檢測失敗,失敗後直接導致ES不能啟動
解決方法:在elasticsearch.yml中配置bootstrap.system_call_filter為false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

4 Logstash

  • 下載解壓

  • mkdir /usr/local/src/logstash  #上傳壓縮包  tar -zxvf logstash-7.3.1.tar.gz
  • 創建一個配置文件

  • vim logstash.conf

    input {

    ​ redis {
    ​ host => "redis所在機器"
    ​ data_type => "list"
    ​ port => "6379"
    ​ key => "project-name"
    ​ type => "project-name"
    ​ }

    }

    output {

    ​ if[type == "project-name"]{

    ​ elasticsearch {
    ​ hosts => "es所在機器:9200"
    ​ user => "elastic"
    ​ password => "剛剛es環境設置的密碼"
    ​ codec => "json"
    ​ index => "project-name-%{+YYYY.MM.dd}"
    ​ }

    ​ }

    }

  • 啟動

  • bin/logstash -f logstash.conf

5 kibana

  • 下載解壓

  • mkdir /usr/local/src/kibana  #上傳壓縮包  tar -zxvf kibana-7.3.1-linux-x86_64.tar.gz    cd kibana-7.3.1-linux-x86_64  mkdir logs  #進入kibana配置下  cd config  #修改配置文件  vim kibana.yml 

server.port: 5601
server.host: "本機IP"
elasticsearch.hosts: ["http://ES伺服器IP:9200"]
kibana.index: ".kibana"
elasticsearch.username: "kibana"
elasticsearch.password: "es環境設置的kibana密碼"
pid.file: /var/run/kibana.pid
logging.dest: /usr/local/src/kibana/kibana-7.3.1-linux-x86_64/logs/kibana.log

  • 啟動(kibana不建議以root用戶啟動,如果用root啟動,需要加–allow-root)

  • bin/kibana  #bin/kibana  --allow-root  (觀察配置的日誌)
  • 訪問5601埠(使用es用戶)(以下沒有更新,參考使用)

  • 創建日誌索引

  • 查看日誌量等資訊