1. 程式人生 > >10-28質量監控ELK

10-28質量監控ELK

-c n) path 文字 search 否則 https 發現 配置文件

質量監控平臺ELK

1.安裝方法:

  • ELK鏡像 https://store.docker.com/community/images/sebp/elk
  • 文檔:https://elk-docker.readthedocs.io/
  • 方法1: docker pull sebp/elk
  • 方法2: docker pull registry.docker-cn.com/sebp/elk

2..啟動elk

sysctl -w vm.max_map_count=262144

docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -d --name elk sebp/elk

3交互頁面直接輸入日誌

此時會將input的內容,當作日誌輸出

方法1:進入elk終端,進入日誌輸入命令行

```#shell
docker exec -it e4d3aa4921b6 /bin/bash
/opt/logstash/bin/logstash --path.data /tmp/logstash/data -e ‘input { stdin { } } output { elasticsearch { hosts => ["localhost"] } }‘
此時輸入任意文字
技術分享圖片
在Kibana中進入DIscover,然後Create index pattern,寫入他所發現的索引,設置時間字段就可以創建了
檢索
技術分享圖片

方法2:不進入終端,直接進入日誌輸入命令行

docker run -it --name logstash --rm logstash --path.data /tmp/logstash/data -e ‘input { stdin { type=> "doc"} } output { elasticsearch { hosts => ["172.16.40.200"] } }‘
註意:此處一定要填寫IP,不能填寫localhost或者127.0.0.1,否則錯誤如下
技術分享圖片

4.批量傳入本地數據

4.1新建配置文件conf/csv.conf,註意IP地址:ifconfig en0

input {
    file {
        path => "/data/*.csv"
        start_position => beginning
    }
}
filter {
   csv{
        columns =>[ "log_time", "user", "api", "status", "version"]
   }
  date {
        match => ["log_time", "yyyy-MM-dd HH:mm:ss"]
        timezone => "Asia/Shanghai"
    }
}
output {
    elasticsearch {
        hosts => ["172.16.40.200:9200"]
        index => "logstash-seveniruby-%{+YYYY.MM.dd}"
    }
}

4.2創建數據:data/demo.csv

2018-10-28 11:29:00,chenshanju,topics.json,200,7.4
2018-10-28 11:29:01,chenshanju,topics.json,200,7.4
2018-10-28 11:29:02,chenshanju,topics/3.json,200,7.4
2018-10-28 11:30:01,chenshanju,topics/4.json,200,7.4
2018-10-28 11:30:20,chenshanju,topics/1.json,200,7.4
2018-10-28 11:40:20,chenshanju,topics/5.json,200,7.4

4.3 執行

docker run -it --name logstash --rm -v $PWD/conf:/conf -v /Users/chenshanju/Desktop/docker/data/:/data logstash -f /conf/csv.conf

4.4註意

data和conf在同意目錄下,命令也在該目錄下執行

4.4持續日誌

另開終端,執行以下腳本

#註意:此腳本不要忘記傳入user
while true
do
version=$([ $((RANDOM%5)) -ge 1 ] && echo debug || echo test)
version=${version}_3.$((RANDOM%3))
userList=(chenshanju chenyi csj java python)
user=${userList[$((RANDOM%5))]}
api=api/$((RANDOM%5)).json
status=$((RANDOM%5))00
ip=192.168.0.1$((RANDOM%5))$((RANDOM%5))
echo $(date +"%Y-%m-%d %H:%M:%S"),${user},${ip},${api},${status},${version} | tee -a $(
date +%Y%m%d%H%M).csv
sleep 0.$((RANDOM%5))
done

FAQ:

1.elk啟動成功,但傳入data時失敗。因為elk需要4G內存,但我給docker只提供了2G。將內存調整為4G即可

技術分享圖片
技術分享圖片

10-28質量監控ELK