ELK是對Elasticsearch、Logstash、Kibana整合平台的簡稱。在日常的運維工作中,要實時監控伺服器的業務、系統和硬體狀态,除了使用監控之外,還需要搜集大量的日志來進行分析。但是在面對海量的伺服器和叢集時,通過單台登入查詢的方式顯然是不可能的,對于不同時間段和叢集日志的分析僅僅通過簡單的腳本來統計也是難以實作。ELK日志平台通過日志搜集,查詢檢索和前端展示的方式幫我們實作了這樣的功能。
Logstash是一個完全開源的工具,他可以對日志進行收集、分析,并将其存儲.
Kibana 是一個開源和免費的工具,可以為 Logstash 和 ElasticSearch 提供的日志分析友的 Web 界面.
ELKStack 部署
Elasticsearch部署
Elasticsearch 需要安裝java環境,首先需要安裝JDK.
1
2
3
4
5
<code>[root@node1]</code><code># yum install -y java-1.8.0-openjdk </code>
<code>[root@node1]</code><code># java -version</code>
<code>openjdk version </code><code>"1.8.0_111"</code>
<code>OpenJDK Runtime Environment (build 1.8.0_111-b15)</code>
<code>OpenJDK 64-Bit Server VM (build 25.111-b15, mixed mode)</code>
安裝Elasticsearch,可以通過在官方下載下傳rpm包進行安裝,由于yum安裝的版本比較老,推薦使用在官方下載下傳rpm包的方式安裝。
推薦下載下傳使用5.6的版本:
yum 安裝Elasticsearch:
<code>yum </code><code>install</code> <code>-y elasticsearch</code>
LogStash部署
和Elasticsearch一樣,在開始部署LogStash之前也需要你的環境中正确的安裝的JDK。可以下載下傳安裝Oracle的JDK或者使用 yum安裝openjdk.這裡部署node2上。同樣的,如果是在不同的機器上安裝Logstash,需要再次下載下傳安裝PGP key:
<code>rpm --</code><code>import</code> <code>https:</code><code>//packages</code><code>.elastic.co</code><code>/GPG-KEY-elasticsearch</code>
添加YUM倉庫:
6
7
<code>[root@node2 ~]</code><code># vim /etc/yum.repos.d/logstash.repo</code>
<code>[logstash-2.3]</code>
<code>name=Logstash repository </code><code>for</code> <code>2.3.x packages</code>
<code>baseurl=https:</code><code>//packages</code><code>.elastic.co</code><code>/logstash/2</code><code>.3</code><code>/centos</code>
<code>gpgcheck=1</code>
<code>gpgkey=https:</code><code>//packages</code><code>.elastic.co</code><code>/GPG-KEY-elasticsearch</code>
<code>enabled=1</code>
安裝Logstash:
<code>[root@node2 ~]</code><code># yum install -y logstash</code>
Kibana部署
如果是在不同的機器上部署Kibana,需要安裝PGP key.這裡部署在node1上,是以不必再次安裝。
添加yum倉庫:
<code>[root@node1 ~]</code><code># vim /etc/yum.repos.d/kibana.repo </code>
<code>[kibana-4.5]</code>
<code>name=Kibana repository </code><code>for</code> <code>4.5.x packages</code>
<code>baseurl=http:</code><code>//packages</code><code>.elastic.co</code><code>/kibana/4</code><code>.5</code><code>/centos</code>
<code>gpgkey=http:</code><code>//packages</code><code>.elastic.co</code><code>/GPG-KEY-elasticsearch</code>
安裝Kibana:
<code>[root@node1 ~]</code><code># yum install -y kibana</code>
在實際的生産環境,可以建立本地的YUM倉庫,使用Cobbler來建立自己的YUM倉庫:
<code>[root@log-node1 ~]</code><code># cobbler repo add --name=logstash-2.3 \</code>
<code> </code><code>--mirror=http:</code><code>//packages</code><code>.elastic.co</code><code>/logstash/2</code><code>.3</code><code>/centos</code> <code>--arch=x86_64 --breed=yum</code>
<code>[root@log-node1 ~]</code><code># cobbler repo add --name=elasticsearch2 \</code>
<code> </code><code>--mirror=http:</code><code>//packages</code><code>.elastic.co</code><code>/elasticsearch/2</code><code>.x</code><code>/centos</code> <code>--arch=x86_64 --breed=yum</code>
<code>[root@log-node1 ~]</code><code># cobbler repo add --name=kibana4.5 \</code>
<code> </code><code>--mirror=http:</code><code>//packages</code><code>.elastic.co</code><code>/kibana/4</code><code>.5</code><code>/centos</code> <code>--arch=x86_64 --breed=yum</code>
<code>[root@log-node1 ~]</code><code># cobbler reposync</code>
配置Elasticsearch
修改elasticsearch的配置檔案:
8
9
<code>[root@node1 ~]</code><code># cd /etc/elasticsearch/</code>
<code>[root@node1 elasticsearch]</code><code># grep "^[a-Z]" elasticsearch.yml </code>
<code>cluster.name: myes </code><code>#自定義cluster名稱</code>
<code>node.name: node1 </code><code>#本地節點主機名</code>
<code>path.data: </code><code>/data/es-data</code> <code>#資料路徑,如果是自定義的,需要修改目錄權限elasticsearch</code>
<code>path.logs: </code><code>/var/log/elasticsearch</code> <code>#日志路徑</code>
<code>bootstrap.memory_lock: </code><code>true</code> <code>#在啟動時鎖定記憶體,提升性能</code>
<code>network.host: 172.16.10.20 </code><code>#本地主機名</code>
<code>http.port: 9200 </code><code>#監聽的端口</code>
修改es記憶體參數,使最大記憶體和最小記憶體保持一緻: (這裡一般設定es記憶體為不超過伺服器總記憶體的50%,最大不超過32G,最小應該大于2G)
vim /etc/elasticsearch/jvm.options
<code># Xms represents the initial size of total heap space</code>
<code># Xmx represents the maximum size of total heap space</code>
<code>-Xms4g</code>
<code>-Xmx4g</code>
要使設定的記憶體生效,需要修改啟動腳本的參數:
<code> </code><code>vim </code><code>/usr/lib/systemd/system/elasticsearch</code><code>.service</code>
<code> </code><code>LimitNOFILE=65536 </code>
<code> </code><code>LimitMEMLOCK=infinity </code><code># 設定記憶體不限制</code>
修改資料目錄的權限,并啟動:
<code>chown</code> <code>-R elasticsearch.elasticsearch </code><code>/data/es-data</code>
<code>systemctl start elasticsearch</code>
驗證是否啟動:
10
11
12
13
14
<code>[root@node1 elasticsearch]</code><code># curl 172.16.10.20:9200</code>
<code>{</code>
<code> </code><code>"name"</code> <code>: </code><code>"node1"</code><code>,</code>
<code> </code><code>"cluster_name"</code> <code>: </code><code>"myes"</code><code>,</code>
<code> </code><code>"cluster_uuid"</code> <code>: </code><code>"0lJjtxjBRfeMO9WY8bl3-Q"</code><code>,</code>
<code> </code><code>"version"</code> <code>: {</code>
<code> </code><code>"number"</code> <code>: </code><code>"2.4.3"</code><code>,</code>
<code> </code><code>"build_hash"</code> <code>: </code><code>"d38a34e7b75af4e17ead16f156feffa432b22be3"</code><code>,</code>
<code> </code><code>"build_timestamp"</code> <code>: </code><code>"2016-12-07T16:28:56Z"</code><code>,</code>
<code> </code><code>"build_snapshot"</code> <code>: </code><code>false</code><code>,</code>
<code> </code><code>"lucene_version"</code> <code>: </code><code>"5.5.2"</code>
<code> </code><code>},</code>
<code> </code><code>"tagline"</code> <code>: </code><code>"You Know, for Search"</code>
<code>}</code>
<code>[root@node1 elasticsearch]</code><code># curl -i -XGET 'http://172.16.10.20:9200/_count?'</code>
<code>HTTP</code><code>/1</code><code>.1 200 OK</code>
<code>Content-Type: application</code><code>/json</code><code>; charset=UTF-8</code>
<code>Content-Length: 59</code>
<code>{</code><code>"count"</code><code>:0,</code><code>"_shards"</code><code>:{</code><code>"total"</code><code>:0,</code><code>"successful"</code><code>:0,</code><code>"failed"</code><code>:0}}</code>
安裝head:
下載下傳此zip包到伺服器。同時需要安裝npm, NPM的全稱是Node Package Manager,是随同NodeJS一起安裝的包管理和分發工具,它很友善讓JavaScript開發者下載下傳、安裝、上傳以及管理已經安裝的包。
<code>[root@node1 ~]</code><code># git clone git://github.com/mobz/elasticsearch-head.git </code>
<code>[root@node1 ~]</code><code># yum install -y npm</code>
<code>[root@node1 ~]</code><code># cd elasticsearch-head</code>
<code>[root@node1 elasticsearch-</code><code>head</code><code>]</code><code># npm install grunt -save</code>
<code>[root@node1 elasticsearch-</code><code>head</code><code>]</code><code># ll node_modules/grunt #确認生成檔案</code>
<code>[root@node1 elasticsearch-</code><code>head</code><code>]</code><code># npm install #執行安裝 </code>
<code>[root@node1 elasticsearch-</code><code>head</code><code>]</code><code># npm run start & 背景啟動</code>
使用9100端口登入,此時無法檢視到節點的狀态:
這時,需要開啟跨域通路支援,然後重新開機elasticsearch服務:
[root@node2 elk]# vim /etc/elasticsearch/elasticsearch.yml ,末尾添加:
<code># 允許使用es-head插件通路,在5.6的版本中需要添加這兩項參數</code>
<code>http.cors.enabled: </code><code>true</code>
<code>http.cors.allow-origin: </code><code>"*"</code>
<code>[root@node2 elk]</code><code># systemctl restart elasticsearch</code>
兩個節點都修改配置檔案後,顯示節點已經加入叢集:
添加Elasticsearch叢集
當使用head通路Elasticsearch時,由于隻有一個主分片,是以顯示的yellow的狀态,為了保證可靠性,我們需要再添加一個副分片。
同理,在node2上也安裝上Elasticsearch,配置檔案修改為本地的參數,同時,配置單點傳播參數,自動發現node2,隻需在node2上配置單點傳播即可。
<code>[root@node2 elasticsearch]</code><code># grep "^[a-Z]" elasticsearch.yml </code>
<code>cluster.name: myes</code>
<code>node.name: node2</code>
<code>path.data: </code><code>/data/es-data</code>
<code>path.logs: </code><code>/var/log/elasticsearch</code>
<code>bootstrap.memory_lock: </code><code>true</code>
<code>network.host: 172.16.10.21</code>
<code>http.port: 9200</code>
<code>discovery.zen.</code><code>ping</code><code>.unicast.hosts: [</code><code>"172.16.10.20"</code><code>, </code><code>"172.16.10.21"</code><code>]</code>
重新啟動node2上的Elasticsearch,在node1上使用head登入,添加索引值:
此時,發現node1和node2分片資訊已經加入進來,圖中産生的分片,需要在"any request" 中添加對應的索引。
<a href="http://s1.51cto.com/wyfs02/M00/8C/28/wKiom1hjgZSRuH-pAADOCc-dt2A969.jpg" target="_blank"></a>
帶的為master 節點,主節點會展示目前的狀态。
Elasticsearch的健康檢查
Elasticsearch提供了自身用于健康檢查的API,會傳回一組JSON的資料:
15
16
17
18
19
<code># curl -XGET http://172.16.10.20:9200/_cluster/health </code>
<code># curl -XGET http://172.16.10.20:9200/_cluster/health?pretty=true</code>
<code> </code><code>"status"</code> <code>: </code><code>"green"</code><code>,</code>
<code> </code><code>"timed_out"</code> <code>: </code><code>false</code><code>,</code>
<code> </code><code>"number_of_nodes"</code> <code>: 2,</code>
<code> </code><code>"number_of_data_nodes"</code> <code>: 2,</code>
<code> </code><code>"active_primary_shards"</code> <code>: 11,</code>
<code> </code><code>"active_shards"</code> <code>: 22,</code>
<code> </code><code>"relocating_shards"</code> <code>: 0,</code>
<code> </code><code>"initializing_shards"</code> <code>: 0,</code>
<code> </code><code>"unassigned_shards"</code> <code>: 0,</code>
<code> </code><code>"delayed_unassigned_shards"</code> <code>: 0,</code>
<code> </code><code>"number_of_pending_tasks"</code> <code>: 0,</code>
<code> </code><code>"number_of_in_flight_fetch"</code> <code>: 0,</code>
<code> </code><code>"task_max_waiting_in_queue_millis"</code> <code>: 0,</code>
<code> </code><code>"active_shards_percent_as_number"</code> <code>: 100.0</code>
同時,官方還提供了多樣監控資訊,可以通過cat API的方式來傳回需要的資料:
<code># curl -XGET http://172.16.10.20:9200/_cat/health</code>
<code>1482981911 11:25:11 myes green 2 2 22 11 0 0 0 0 - 100.0%</code>
對叢集中的任意一個節點去查詢,此節點都會從搜集到整個叢集的資訊進行傳回:
<code># curl -XGET http://172.16.10.20:9200/_cat/nodes?v</code>
<code>host ip heap.percent </code><code>ram</code><code>.percent load node.role master name </code>
<code>172.16.10.20 172.16.10.20 5 93 0.83 d * node1 </code>
<code>172.16.10.21 172.16.10.21 3 74 0.03 d m node2</code>
<code># curl -XGET http://172.16.10.21:9200/_cat/nodes?v</code>
<code>172.16.10.20 172.16.10.20 5 93 0.92 d * node1 </code>
<code>172.16.10.21 172.16.10.21 3 74 0.01 d m node2</code>
Elasticsearch有<code>green</code>/<code>yellow</code>/<code>red</code> 三種不同的狀态級别,green 表示所有節點分片正常,yellow 表示主節點分片正常,副本節點分片存在故障或丢失,red 表示主節點分片丢失,在搜尋時隻能傳回部分結果。
提示: 在生産環境部署前,需要調整檔案描述符數量和maximum map count 數量,否則, 在修改之後需要重新開機Elasticsearch。
如: sysctl -w vm.max_map_count=262144
Logstash日志搜集
Logstash可以使用多種方式處理資料。其中常用的是使用INPUT,OUTPUT,FILTER等功能對資料進行搜集和處理。可以使用TCP,file, rsyslog等方式來搜集不同的日志。
簡單示例:
<code># /opt/logstash/bin/logstash -e 'input { stdin{} } output { stdout{} }'</code>
<code>Settings: Default pipeline workers: 1</code>
<code>Pipeline main started</code>
<code>hello</code>
<code>2016-12-29T04:00:39.937Z node2 hello</code>
指定格式輸出:
<code># /opt/logstash/bin/logstash -e 'input { stdin{} } output { stdout{ codec => rubydebug} }' </code>
<code>errttt</code>
<code> </code><code>"message"</code> <code>=> </code><code>"errttt"</code><code>,</code>
<code> </code><code>"@version"</code> <code>=> </code><code>"1"</code><code>,</code>
<code> </code><code>"@timestamp"</code> <code>=> </code><code>"2016-12-29T07:24:41.016Z"</code><code>,</code>
<code> </code><code>"host"</code> <code>=> </code><code>"node2"</code>
Logstash使用插件将資料輸入輸出到不同的對象。
使用elasticsearch插件,output到Elasticsearch中:
手動測試:
<code># /opt/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["172.16.10.20:9200"] index => "logstash-%{+YYYY.MM.dd}" } }'</code>
<code>rrrrr</code>
<code>ooooooooooooo</code>
在web界面顯示收取的資訊:
<a href="http://s4.51cto.com/wyfs02/M01/8C/31/wKiom1hkuJaTZ3CKAAEg3NKAhqQ073.jpg" target="_blank"></a>
Logstash-Input-file
在實際的生産環境中,如果要使用Logstash來搜集檔案需要在每台主機上安裝Logstash,因為隻有使用logstash才能讀取本地的INPUT file,當然,也可以通過網絡和其他方式将檔案内容發送給Logstash.
按照上面手動執行的方式實作是不現實的,通常會編輯一個配置檔案,在啟動logstash的時候指定此配置檔案,就可以将檔案輸出記錄到系統中。
<code># vim /etc/logstash/conf.d/demo.conf # 預設檔案的存放目錄,可以在logstash的啟動腳本中更改</code>
<code>input{</code>
<code> </code><code>stdin{} </code><code># input 插件</code>
<code>filter{ </code><code># filter可以沒有,可以為空</code>
<code>output{</code>
<code> </code><code>elasticsearch {</code>
<code> </code><code>hosts => [</code><code>"172.16.10.21:9200"</code><code>] </code><code># output中的插件 => 表示等于,[]表示數組,此處可以加多個IP</code>
<code> </code><code>index => </code><code>"logstash-%{+YYYY.MM.dd}"</code> <code># output中的index插件</code>
<code> </code><code>stdout{</code>
<code> </code><code>codec => rubydebug</code>
<code> </code><code>}</code>
啟動logstash,并使用 -f 指定檔案:
<code># /opt/logstash/bin/logstash -f /etc/logstash/conf.d/demo.conf </code>
<code>test1 </code><code>#手動輸入</code>
<code> </code><code>"message"</code> <code>=> </code><code>"test1"</code><code>,</code>
<code> </code><code>"@timestamp"</code> <code>=> </code><code>"2016-12-29T07:55:12.738Z"</code><code>,</code>
這樣在Elastic上就可以看到需要展示的資料。
使用Logstash搜集本地日志檔案,并output到Elasticsearch
在node2主機上編輯Logstash的配置檔案:
<code># cat /etc/logstash/conf.d/file.conf </code>
<code> </code><code>file</code> <code>{</code>
<code> </code><code>path => [</code><code>"/var/log/messages"</code><code>,</code><code>"/var/log/secure"</code><code>]</code>
<code> </code><code>type</code> <code>=> </code><code>"system-log"</code>
<code> </code><code>start_position => </code><code>"beginning"</code>
<code>filter{}</code>
<code> </code><code>elasticsearch {</code>
<code> </code><code>hosts => [</code><code>"172.16.10.20:9200"</code><code>]</code>
<code> </code><code>index => </code><code>"system-log-%{+YYYY-MM}"</code>
啟動Logstash:
<code># /opt/logstash/bin/logstash -f /etc/logstash/conf.d/file.conf</code>
啟動之後如下圖:
<a href="http://s3.51cto.com/wyfs02/M00/8C/33/wKiom1hkz_Wh54dPAAHdRtzoI-c680.jpg" target="_blank"></a>
上面的啟動方式是前台啟動,也可以使用系統預設的背景啟動方式 :
<code>/etc/init</code><code>.d</code><code>/logstash</code> <code>start</code>
Logstash if條件判斷
在需要搜集多種日志到不同的index中時,需要使用If條件判斷的方式,将對應的不同日志,放到不同的索引中,如:
20
21
22
23
24
25
26
27
28
<code>[root@node2 ~]</code><code># cat /etc/logstash/conf.d/file.conf </code>
<code> </code><code>type</code> <code>=> </code><code>"system-log"</code> <code># 指定TYPE,被監控的檔案不能有type字段</code>
<code> </code><code>path => </code><code>"/var/log/nginx/access.log"</code>
<code> </code><code>type</code> <code>=> </code><code>"nginx-log"</code>
<code>filter { }</code>
<code>output {</code>
<code> </code><code>if</code> <code>[</code><code>type</code><code>] == </code><code>"system-log"</code> <code>{ </code><code># 根據type判斷寫入哪個index</code>
<code> </code><code>if</code> <code>[</code><code>type</code><code>] == </code><code>"nginx-log"</code> <code>{</code>
<code> </code><code>index => </code><code>"nginx-log-%{+YYYY-MM}"</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
Logstash 正則比對多行日志
在搜集日志的時候,預設是以事件的形式來逐條收集,但是如果同一事件日志内容有多行,如java日志,依舊使用預設的逐條收集的話,會造成日志格式支離破碎難以閱讀,是以根據日志每段開始或者結尾的規律進行正則比對,來收集日志也是非常重要的。
<code>input {</code>
<code> </code><code>stdin {</code>
<code> </code><code>codec => multiline{ </code><code># 在INPUT區域加入這四行,表示比對以“[” 頭的</code>
<code> </code><code>pattern => </code><code>"^\["</code> <code># 日志内容為一個整體,進行記錄</code>
<code> </code><code>negate => </code><code>true</code>
<code> </code><code>what => </code><code>"previous"</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code>filter{</code>
<code> </code><code>stdout{</code>
<code> </code><code>}</code>
上面的比對規則為:當遇到目前行以“[” 開頭時,就重新生成一行内容,這樣在Kibana上展示的日志就和本地日志格式相同了。
Logstash格式化收集Nginx日志
在收集nginx通路日志時,由于要對整個日志做分析,是以對日志的字段進行拆分的方式可以更加便捷的搜尋和統計,nginx 支援将日志以JSON的格式列印出來進行處理,在Kibana上展示時就将各個字段以類似表格的形式展現出來。
修改nginx配置檔案,以JSON格式對輸出日志:
<code>log_format access_log_json '{</code><code>"user_ip"</code><code>:</code><code>"$http_x_real_ip"</code><code>,</code><code>"lan_ip"</code><code>: \</code>
<code>"$remote_addr"</code><code>,</code><code>"log_time"</code><code>:</code><code>"$time_iso8601"</code><code>,</code><code>"user_req"</code><code>:</code><code>"$request"</code><code>, \</code>
<code>"http_code"</code><code>:</code><code>"$status"</code><code>,</code><code>"body_bytes_sent"</code><code>:</code><code>"$body_bytes_sent"</code><code>,</code><code>"req_time"</code><code>: \</code>
<code>"$request_time"</code><code>,</code><code>"user_ua"</code><code>:</code><code>"$http_user_agent"</code><code>}';</code>
<code>access_log </code><code>/var/log/nginx/access</code><code>.log access_log_json;</code>
編寫logstash的配置檔案,當有多項配置時,需要使用指定type,用if 語句去執行不同的動作,對日志指定json格式:
vim /etc/logstash/conf.d/file.conf
<code> </code><code>type</code> <code>=> </code><code>"nginx-access-log"</code>
<code> </code><code>codec => </code><code>"json"</code> <code># 指定json格式 </code>
<code> </code><code>if</code> <code>[</code><code>type</code><code>] == </code><code>"system-log"</code> <code>{</code>
<code> </code><code>if</code> <code>[</code><code>type</code><code>] == </code><code>"nginx-access-log"</code> <code>{</code>
<code> </code><code>hosts => [</code><code>"172.16.10.21:9200"</code><code>]</code>
<code> </code><code>index => </code><code>"nginx-access-log-%{+YYYY-MM-dd}"</code>
測試檔案是否有文法錯誤:
<code> </code><code>/opt/logstash/bin/logstash</code> <code>-t -f </code><code>/etc/logstash/conf</code><code>.d</code><code>/file</code><code>.conf </code>
<code>Configuration OK</code>
指定檔案啟動:
<code> </code><code>/opt/logstash/bin/logstash</code> <code>-f </code><code>/etc/logstash/conf</code><code>.d</code><code>/file</code><code>.conf</code>
如果在Elasticsearch沒有顯示新的index,可以删除舊的.sincedb檔案,重新開機logstash. 預設情況下.sincedb的檔案是存放在/var/lib/logstash/,如果是指定檔案啟動的情況也可能會存放在家目錄。
在背景啟動時,會自動去讀取/etc/logstash/conf.d目錄下的配置檔案:
<a href="http://s2.51cto.com/wyfs02/M02/8C/3F/wKiom1hmFW2ynhOjAAEUOIxL-3M266.jpg" target="_blank"></a>
Kibana前端展示
Kibana是用于Elasticsearch前端友好展示和搜尋功能的界面,隻需要配置和Elasticsearch相關聯即可。
Kibana配置:
<code>[root@node1 ~]</code><code># vim /opt/kibana/config/kibana.yml</code>
<code>[root@node1 ~]</code><code># grep "^[a-Z]" /opt/kibana/config/kibana.yml</code>
<code>server.port: 5601</code>
<code>server.host: </code><code>"0.0.0.0"</code>
<code>elasticsearch.url: " </code><code># Elasticsearch的主機位址 </code>
<code>kibana.index: </code><code>".kibana"</code>
啟動Kibana:
<code>[root@node1 ~]</code><code># /etc/init.d/kibana start</code>
<code>kibana started</code>
登入Kibana WEB界面,建立一個system-log的index,Kibana會自動比對上目前已存在的INDEICES(事件):
<a href="http://s5.51cto.com/wyfs02/M00/8C/30/wKioL1hk1e-w8TyCAAHAuis5Cbs656.jpg" target="_blank"></a>
添加完之後,就可以在主界面檢視目前index的日志資訊了,提供了各種篩選日志的方式:
<a href="http://s4.51cto.com/wyfs02/M00/8C/31/wKioL1hk2TeTYlDaAAD9_OKRETU620.jpg" target="_blank"></a>
本文轉自 酥心糖 51CTO部落格,原文連結:http://blog.51cto.com/tryingstuff/1887647