elk(一)

ELK第一天

第一章: ELK簡介
E: elasticsearch java 復制存儲收集過來的日志
L: logstash java
K: kibana java 負責過濾,分析,繪圖展示日志數據
F: filebeat go 負責收集日志

第二章: 傳統(tǒng)日志分析需求
1.統(tǒng)計排名前10的IP地址
2.統(tǒng)計排名前10的URL
3.查詢上午11點-14點之間的排名情況
5.對比今天11點-12點和昨天相同時間段的訪問差別
6.找出各個廣告渠道今天分別訪問了多少次
7.找出各個爬蟲來的次數,爬的最多的頁面
8.找出偽造的爬蟲IP并查封
9.找出具體的某個URL的訪問次數
10.找出訪問最慢的前十個頁面,對比昨天也這么慢嗎
11.5分鐘之內告訴我結果
12.一天不定時的會有這些需求

第三章: 日志收集分類
代理層: nginx haproxy
web層: nginx tomcat java php
db層: mysql mongo redis es
系統(tǒng)層: message secure

第四章: ELK安裝部署
ES
kibana
es-head

0.更新系統(tǒng)時間
ntpdate time1.aliyun.com

1.安裝nginx 
[root@db-01 ~]# cat /etc/yum.repos.d/nginx.repo 
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

yum makecache fast
yum install nginx -y
systemctl start nginx

2.安裝filebeat 
rpm -ivh filebeat-6.6.0-x86_64.rpm
rpm -qc filebeat

3.配置filebeat 
[root@db-01 /data/soft]# cat /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
  enabled: true 
  paths:
    - /var/log/nginx/access.log

output.elasticsearch:
  hosts: ["10.0.0.51:9200"]

4.啟動并檢查
systemctl start filebeat
tail -f /var/log/filebeat/filebeat

5.查看日志結果
es-head查看

第五章: filebeat收集nginx的json格式日志
1.上面方案不完善的地方
日志都在一個字段的valuse里,不能拆分單獨顯示

2.理想中的情況
將日志里每一個選項的內容都拆分出來
拆分成key-valuse形式,json格式
理想中存在ES里的數據格式

{
    $remote_addr : 192.168.12.254
    - : -
    $remote_user : -
    [$time_local]: [10/Sep/2019:10:52:08 +0800]
    $request: GET /jhdgsjfgjhshj HTTP/1.0
    $status : 404
    $body_bytes_sent : 153
    $http_referer : -
    $http_user_agent :ApacheBench/2.3
    $http_x_forwarded_for:-
}

3.目標如何使nginx日志格式轉換成我們想要的json格式
修改nginx配置文件使日志轉換成json

log_format json '{ "time_local": "$time_local", '
                          '"remote_addr": "$remote_addr", '
                          '"referer": "$http_referer", '
                          '"request": "$request", '
                          '"status": $status, '
                          '"bytes": $body_bytes_sent, '
                          '"agent": "$http_user_agent", '
                          '"x_forwarded": "$http_x_forwarded_for", '
                          '"up_addr": "$upstream_addr",'
                          '"up_host": "$upstream_http_host",'
                          '"upstream_time": "$upstream_response_time",'
                          '"request_time": "$request_time"'
    ' }';

    access_log  /var/log/nginx/access.log  json;

4.nginx轉換成json之后仍然不完善的地方
通過查看發(fā)現,雖然nginx日志變成了json,但是es里還是存儲在message里仍然不能拆分
目標: 如何在ES里展示的是json格式

5.修改filebeat配置文件

[root@db-01 ~]# cat /etc/filebeat/filebeat.yml 
filebeat.inputs:
- type: log
  enabled: true 
  paths:
    - /var/log/nginx/access.log
  json.keys_under_root: true
  json.overwrite_keys: true

output.elasticsearch:
  hosts: ["10.0.0.51:9200"]

重啟filebeat
systemctl restart filebeat   
  
6.清空nginx日志
>/var/log/nginx/access.log 
nginx -t 
systemctl restart nginx 

問題總結:
1.不知道es-head怎么查看數據
2.filebeat直接復制粘貼,沒有修改IP地址
3.以前的索引沒有刪除,nginx日志沒有清空
4.沒有訪問Nginx產生日志

第六章: 沒日志生成問題總結

11:00 收集的普通日志 
es-head   filebeat
kibana    filebeat
nginx     log  

11:30 nginx轉換成json 
nginx.conf  json
nginx -t 
nginx -s reload nginx 
curl 127.0.0.1
cat /var/log/nginx/access.log   普通的和json的都有
> /var/log/nginx/access.log
systemctl restart filebeat 
es-head    刪除
kibana     刪除

es里沒有索引生成

結論: 
1.filebeat如果沒有新日志產生,就不會發(fā)送給ES
2.做實驗執(zhí)行的順序也會影響實驗結果 
3.如果修改了日志格式,做如下3步操作:
- 清空以前的日志
- 刪除以前存在的ES索引
- 刪除以前添加的kiaban的索引
4.kibana自己不能創(chuàng)建索引,他只能添加ES里已經存在的索引

第七章: filebeat工作模式
1.如果沒日志filebeat就不會發(fā)送給ES數據
2.重啟filebeat不會從頭開始讀日志
3.類似于tial -f
4.當filebeat停止的時候,會記錄停止那一刻記錄的行數,下次啟動的時候,從上次記錄的下一行開始讀數據
5.filebeat對于已經發(fā)送給ES的數據不關心

12:05 讀取nginx日志
nginx 100
停止了filebeat 100
es 100
es 刪除了

12:06 寫入了新的日志
nginx 120 20 100-最后一行
啟動filebeat
es 20

第八章: 自定義索引名稱并按月生成
理想中的情況:
nginx_access-xxxxx-年-月

1.配置filebeat實現自定義索引名稱
[root@db-01 ~]# cat /etc/filebeat/filebeat.yml 
filebeat.inputs:
- type: log
  enabled: true 
  paths:
    - /var/log/nginx/access.log
  json.keys_under_root: true
  json.overwrite_keys: true

output.elasticsearch:
  hosts: ["10.0.0.51:9200"]
  index: "nginx_access-%{[beat.version]}-%{+yyyy.MM}"
setup.template.name: "nginx"
setup.template.pattern: "nginx_*"
setup.template.enabled: false
setup.template.overwrite: true


2.重新filebeat后查看是否生成對應的索引
nginx_access-6.6.0-2019.09

第九章: 按日志分類存儲
理想中的情況:
nginx_access-6.6.0-2019.09
nginx_error-6.6.0-2019.09

1.配置filebeat實現根據不同條件存儲到不同的索引
[root@db-01 ~]# cat /etc/filebeat/filebeat.yml 
filebeat.inputs:
- type: log
  enabled: true 
  paths:
    - /var/log/nginx/access.log
  json.keys_under_root: true
  json.overwrite_keys: true
  tags: ["access"]

- type: log
  enabled: true 
  paths:
    - /var/log/nginx/error.log
  tags: ["error"]

output.elasticsearch:
  hosts: ["10.0.0.51:9200"]
  indices:
    - index: "nginx_access-%{[beat.version]}-%{+yyyy.MM}"
      when.contains:
        tags: "access"
    - index: "nginx_error-%{[beat.version]}-%{+yyyy.MM}"
      when.contains:
        tags: "error"

setup.template.name: "nginx"
setup.template.pattern: "nginx_*"
setup.template.enabled: false
setup.template.overwrite: true

2.刪除以前的舊索引并重啟filebeat
systemctl restart filebeat

第十章: 收集tomcat的json日志

1.安裝tomcat 
yum install tomcat tomcat-webapps tomcat-admin-webapps tomcat-docs-webapp tomcat-javadoc -y

2.配置tomcat日志格式為json
[root@db-01 /etc/tomcat]# sed -n '139p' server.xml 
           pattern="{"clientip":"%h","ClientUser":"%l","authenticated":"%u","AccessTime":"%t","method":"%r","status":"%s","SendBytes":"%b","Query?string":"%q","partner":"%{Referer}i","AgentVersion":"%{User-Agent}i"}"/>

3.啟動tomcat
systemctl start tomcat 

4.配置filebeat
[root@db-01 /etc/tomcat]# cat /etc/filebeat/filebeat.yml 
filebeat.inputs:

- type: log
  enabled: true 
  paths:
    - /var/log/tomcat/localhost_access_log.*.txt
  json.keys_under_root: true
  json.overwrite_keys: true
  tags: ["tomcat"]

output.elasticsearch:
  hosts: ["10.0.0.51:9200"]
  index: "tomcat_access-%{[beat.version]}-%{+yyyy.MM}"

setup.template.name: "tomcat"
setup.template.pattern: "tomcat_*"
setup.template.enabled: false
setup.template.overwrite: true
           
5.重啟filebeat
systemctl restart filebeat

6.訪問tomcat查看是否有數據生成

第十一章: 收集JAVA日志

java日志的特點:
1.報錯信息巨多
2.報錯信息巨多還是一個事件.不能分開看

一段java報錯日志如下:
[2019-09-10T16:15:41,630][ERROR][o.e.b.Bootstrap          ] [CcJTI28] Exception
java.lang.IllegalArgumentException: unknown setting [nnode.name] did you mean [node.name]?
        at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:482) ~[elasticsearch-6.6.0.jar:6.6.0]
        at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettgs.java:427) ~[elasticsearch-6.6.0.jar:6.6.0]
        at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:398) ~[elasticsearch-6.6.0.jar:6.6.0]
        at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:369) ~[elasticsearch-6.6.0.jar:6.6.0]
        at org.elasticsearch.common.settings.SettingsModule.<init>(SettingsModule.java:148) ~[elasticsearch-6.6.0.jar:6.6.0]
[2019-09-10T16:18:16,742][INFO ][o.e.c.m.MetaDataIndexTemplateService] [node-1] adding template [kibana_index_template:.kibana] for index patterns [.kibana]
[2019-09-10T16:18:17,981][INFO ][o.e.c.m.MetaDataIndexTemplateService] [node-1] adding template [kibana_index_template:.kibana] for index patterns [.kibana]
[2019-09-10T16:18:33,417][INFO ][o.e.c.m.MetaDataIndexTemplateService] [node-1] adding template [kibana_index_template:.kibana] for index patterns [.kibana]

匹配思路: 
1.java報錯日志特點
正常日志是以[日期]開頭的
報錯日志行數多,但是不是以[
2.匹配以[開頭的行,一直到下一個以[開頭的行,中間所有的數據屬于一個事件,放在一起發(fā)給ES

filebeat配置多行匹配模式:
[root@db-01 ~]# cat /etc/filebeat/filebeat.yml 
filebeat.inputs:
- type: log
  enabled: true 
  paths:
    - /var/log/elasticsearch/elasticsearch.log
  multiline.pattern: '^\['
  multiline.negate: true
  multiline.match: after

output.elasticsearch:
  hosts: ["10.0.0.51:9200"]
  index: "es-%{[beat.version]}-%{+yyyy.MM}"

setup.template.name: "es"
setup.template.pattern: "es_*"
setup.template.enabled: false
setup.template.overwrite: true

自定義圖形
條形圖


image.png
image.png

image.png

image.png

扇形圖


image.png

根據生產需要吧需要的數據做成圖形痹扇,然后全部排版到一起

image.png

image.png

image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末茁彭,一起剝皮案震驚了整個濱河市堤撵,隨后出現的幾起案子地回,更是在濱河造成了極大的恐慌腿短,老刑警劉巖褥符,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扳还,死亡現場離奇詭異,居然都是意外死亡货裹,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門精偿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弧圆,“玉大人,你說我怎么就攤上這事笔咽∩υぃ” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵叶组,是天一觀的道長拯田。 經常有香客問我,道長甩十,這世上最難降的妖魔是什么船庇? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮枣氧,結果婚禮上溢十,老公的妹妹穿的比我還像新娘。我一直安慰自己达吞,他們只是感情好张弛,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著酪劫,像睡著了一般吞鸭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上覆糟,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天刻剥,我揣著相機與錄音,去河邊找鬼滩字。 笑死造虏,一個胖子當著我的面吹牛,可吹牛的內容都是我干的麦箍。 我是一名探鬼主播漓藕,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挟裂!你這毒婦竟也來了享钞?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤诀蓉,失蹤者是張志新(化名)和其女友劉穎栗竖,沒想到半個月后暑脆,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡狐肢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年添吗,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片处坪。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡根资,死狀恐怖,靈堂內的尸體忽然破棺而出同窘,到底是詐尸還是另有隱情玄帕,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布想邦,位于F島的核電站裤纹,受9級特大地震影響,放射性物質發(fā)生泄漏丧没。R本人自食惡果不足惜鹰椒,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呕童。 院中可真熱鬧漆际,春花似錦、人聲如沸夺饲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽往声。三九已至擂找,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浩销,已是汗流浹背贯涎。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留慢洋,地道東北人塘雳。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像普筹,于是被迫代替她去往敵國和親粉捻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容