K linux 部署手機 centos6.5

ELK平臺搭建
系統環境
System: Centos release 6.7 (Final)
ElasticSearch: 2.3.3
Logstash: 2.1.1
Kibana: 4.3.0
Java: openjdk version "1.8.0_65"
Eelasticsearch
============elasticsearch 安裝
cd /usr/local
mkdir elk ### 把安裝包上傳到這個目錄
tar -zxvf elasticsearch-2.1.0.tar.gz
cd elasticsearch-2.1.0
mv elasticsearch-2.1.0 elasticsearch
可視化ela-head組件安裝
cd elasticsearch
./bin/plugin install mobz/elasticsearch-head
Paramedic工具 es監控插件
./bin/plugin install karmi/elasticsearch-paramedic
查詢 Elasticsearch 中的數據工具 同ela-head
./bin/plugin install lmenezes/elasticsearch-kopf
vim config/elasticsearch.yml
-----------------修改配置文件
cluster.name: es_cluster
node.name: node0
path.data: /tmp/elasticsearch/data
path.logs: /tmp/elasticsearch/logs
#當前hostname或IP,我這裏是centos2 #原文博客說的 host或者ip,可是我寫本機的ip的話,除了服務器本機能夠正常訪問9200之外,其餘電腦沒法訪問,網上說改爲0.0.0.0,試了好用。
network.host: 0.0.0.0
network.port: 9200
 
這時候執行 ./bin/elasticsearch 報錯
查看錯誤信息,大概說是,不能以root用戶的身份執行,那好吧。。添加用戶,分配權限
 
----------------新增elsearch用戶和組`
建立elsearch用戶組及elsearch用戶
groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch
passwd 設置密碼 這裏是123456
更改elasticsearch文件夾及內部文件的所屬用戶及組爲elsearch:elsearch
chown -R elsearch:elsearch elasticsearch
-------------切換到新用戶
su elsearch
123456
--------------運行
./bin/elasticsearch & 或
./bin/elasticsearch -d
 
這時候會報錯以下:
 
好吧。目測是 elasticsearch.yml裏的data和log的目錄權限沒有給elsearch,那麼接着。。
 
首先 切換到root用戶,
su root
123456
 
而後增長文件夾的權限chown -R elsearch:elsearch /tmp/elasticsearc
 
而後再切換到elsearch用戶
執行 ./bin/elasticsearch 而後訪問 ip:9200 ,訪問ok
這裏有一點須要說明:執行 ./bin/elasticsearch 以後,你會發現壓根退不出去有沒有。。
其實 :這就是 ./bin/elasticsearch 和 ./bin/elasticsearch -d 的區別,執行./bin/elasticsearch -d,你會發現,命名窗口是不輸出 東西的
 
由此。其實我開啓了兩個elasticsearch
netstat -tnlp
 
這時候須要 kill -9 PID 殺掉多餘的,通常是保留 9200
 
重點:ElasticSearch安裝ik分詞插件
 
IK Analyzer是一個開源的,基於java語言開發的輕量級的中文分詞工具包。從2006年12月推出1.0版開始, IKAnalyzer已經推出了4個大版本。最初,它是以開源項目Luence爲應用主體的,結合詞典分詞和文法分析算法的中文分詞組件。從3.0版本開 始,IK發展爲面向Java的公用分詞組件,獨立於Lucene項目,同時提供了對Lucene的默認優化實現。在2012版本中,IK實現了簡單的分詞 歧義排除算法,標誌着IK分詞器從單純的詞典分詞向模擬語義分詞衍化。
 
 
注意:ik分詞插件的版本與ElasticSearch的版本是有對應關係的,筆者第一次安裝用的是ElasticSearch2.1.0 ,IK 1.9.1 結果報錯,大概的意思1.9.1是在ElasticSearch2.3.1的版本上開發的,須要下載匹配版本,因此後來我把版本換成了ElasticSearch 2.3.3,IK 1.9.3,能夠查看地址 https://github.com/medcl/elasticsearch-analysis-ik/releases?after=v1.10.0,這裏有完整的對應關係。
 
關於IK的安裝,筆者主要是對照git的安裝步驟說明來的,官網的步驟是:
經過git clone https://github.com/medcl/elasticsearch-analysis-ik,下載分詞器源碼,而後進入下載目錄,執行命令:mvn clean package 打包生成 zip包,zip包的生成u目錄是 target/releases/elasticsearch-analysis-ik-{version}.zip ,而後再 elasticsearch的plugins下新建ik文件夾,將 target/releases/elasticsearch-analysis-ik-{version}.zip 拷貝被 elasticsearch/plugins/ik 目錄下,執行unzip 解壓縮便可。
推薦:筆者發現了一個簡單的方式,不須要安裝maven 執行打包的過程,直接到 https://github.com/medcl/elasticsearch-analysis-ik/releases 找對應版本的zip文件,而後上傳便可。
另外:按理說 ik組件的 安裝也能夠 參照 ela-head組件的安裝方式安裝,
./bin/plugin install mobz/elasticsearch-head 紅色部分與 紅框對應,可是報錯,
plugin-descriptor.properties 找不到。。。因此這種方式pass了,可是要會看。
 
ctrl z 暫停當前切換到控制
bg 後臺執行
fg 前臺
 
 
Logstash
 
關於這部分請先查看:【轉】Logstash的安裝部署 文章,其實主要仍是參照了上面的博客。
 
個人實際配置Logstash:
tar -zxvf logstash-2.1.1.tar.gz cd logstash-2.1.1
編寫配置文件(名字和位置能夠隨意,這裏我放在config目錄下,取名爲log4j_to_es.conf):
 
mkdir config vi config/log4j_to_es.conf # Set: https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html input { redis{ host => "127.0.0.1" port => 6379 type => "weds-pay-api" data_type => "list" key => "weds-pay-api" } } filter { date { match => ["addtime", "yyyy-MM-dd HH:mm:ss"] target => "@timestamp" } } output{ stdout { codec => rubydebug } elasticsearch { index => "%{type}-%{+YYYY.MM}" hosts => "192.168.30.129:9200" workers => 5 } }
 
啓動方式:./bin/logstash agent -f config/log4j_to_es.conf &
加了&是後臺啓動,不加是直接啓動
 
解釋:配置鏈接reids,項目程序將請求的日誌信息寫入到redis,而後logstash監聽redis的list,redis裏list的key爲weds-pay-api,logstash會監聽redis的list,當發現數據之後就會批量的經過logstash寫入到elasticsearch。
 
附java代碼的實現 重寫Appender
 
package com.weds.framework.utils.elk; import java.util.Map; import java.util.concurrent.CompletableFuture; import org.apache.log4j.AppenderSkeleton; import org.apache.log4j.spi.LocationInfo; import org.apache.log4j.spi.LoggingEvent; import com.weds.framework.core.utils.JsonUtil; import com.weds.framework.core.utils.redis.RedisService; /** * * <p>Title: ApiAppender</p> * <p>Description: 重寫Appender 調用log4就時,將記錄存入redis</p> * <p>Company: Leyou(China) Chain Store Co.,Ltd</p> * <p>版權全部: Copyright?1999-2016 leyou.com. All Rights Reserved</p> * @author Illidan * @date 2016年5月19日 上午10:25:59 * @version V1.0 */ public class ApiAppender extends AppenderSkeleton{ /** * Jredis鏈接redis的client */ private RedisService redisService; /** * 記錄接口方法調用次很多天志須要先寫入redis中,redis的key不能爲空,這個key須要同步在logstash配置文件中配置 */ private String writeLogKey; @Override public void close() { // TODO Auto-generated method stub } @Override public boolean requiresLayout() { // TODO Auto-generated method stub return false; } /** * 重寫日誌輸出輸出 */ @Override protected void append(LoggingEvent event) { LocationInfo locationInfo = event.getLocationInformation(); Map<String,Object> map =(Map<String,Object>)event.getMessage(); map.put("levl", event.getLevel().toString()); writeLogAsync(writeLogKey,map); } /** * 異步記錄日誌 * @param key 記錄到redis的中key,key須要同步在logstash配置文件中配置 * @param value 日誌的值,Map格式 */ public void writeLogAsync(String key,Map<String,Object> map){ CompletableFuture.runAsync(() -> { writeLog(key,map); }); } /** * * @Title: writeLogAsync * @Description: 異步存儲日誌 * @param * @return void 返回類型 * @throws * @author Illidan * @date 2016年5月18日 下午1:51:56 */ public void writeLogAsync(String key,String value){ CompletableFuture.runAsync(() -> { writeLog(key,value); }); } /** *記錄日誌到redis的List集合中,值爲Map集合方式 * @param key 記錄redis的key,key須要同步在logstash配置文件中配置 * @param map value爲Map值 */ public void writeLog(String key,Map<String,Object> map){ String value = JsonUtil.obj2string(map); writeLog(key, value); } /** * 記錄日誌到redis的List集合中 * @param key 記錄redis的key,key須要同步在logstash配置文件中配置 * @param value 記錄的值 */ public void writeLog(String key, String value) { if(key != null){ redisService =(RedisService)SpringContextUtil.getBean("redisService",RedisService.class); redisService.setList(key, value); } } public RedisService getRedisService() { return redisService; } public void setRedisService(RedisService redisService) { this.redisService = redisService; } public String getWriteLogKey() { return writeLogKey; } public void setWriteLogKey(String writeLogKey) { this.writeLogKey = writeLogKey; } }
 
log4j.properties 增長配置:
log4j.logger.weds-pay-Log=INFO,aip log4j.appender.aip=com.weds.framework.utils.elk.ApiAppender log4j.appender.aip.writeLogKey=weds-pay-api log4j.appender.aip.layout=org.apache.log4j.PatternLayout log4j.appender.aip.layout.ConversionPattern=%d %p [%c] - %m%n
 
注意:這裏 log4j_to_es.conf 中 redis的key 與 log4j.properties 的log4j.appender.aip.writeLogKey以及ApiAppender 的writeLogKey 屬性有對象關係。
 
java代碼的使用
protected static final Logger log = Logger.getLogger("weds-pay-Log"); log.info(map);//記錄日誌到 elk日誌中心
注意:這裏的weds-pay-Log與 log4j.properties的log4j.logger.weds-pay-Log是有關係的。
 
Kibana
這部分基本的參照文章頂部的鏈接便可:
===========================安裝kibana
tar -zxvf kibana-4.3.0-linux-x86.tar.gz
cd kibana-4.3.0-linux-x86
vim config/kibana.yml
-------修改配置
server.port: 5601
server.host: "192.168.30.129"
elasticsearch.url: "http://192.168.30.129:9200"
kibana.index: ".kibana"
-------運行
./bin/kibana &
 
加了&是後臺啓動,不加是直接啓動
相關文章
相關標籤/搜索