今天給你們帶來的是開源實時日誌分析 ELK , ELK 由 ElasticSearch 、 Logstash 和 Kiabana 三個開源工具組成。官方網站:https://www.elastic.cojava
其中的3個軟件是:node
Elasticsearch 是個開源分佈式搜索引擎,它的特色有:分佈式,零配置,自動發現,索引自動分片,索引副本機制, restful 風格接口,多數據源,自動搜索負載等。linux
Logstash 是一個徹底開源的工具,他能夠對你的日誌進行收集、分析,並將其存儲供之後使用(如,搜索)。nginx
kibana 也是一個開源和免費的工具,他 Kibana 能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助您彙總、分析和搜索重要數據日誌bootstrap
系統 | 系統須要安裝的軟件 | ip | 描述 |
centos6.4 | Elasticsearch/test5 | 192.168.48.133 | 搜索存儲日誌 |
centos6.4 | Elasticsearch/test4 | 192.168.48.131 | 搜索存儲日誌 |
centos6.4 | Logstash/nginx/test1 | 192.168.48.129 | 用來收集日誌給上面 |
centos6.4 | kibana,nginx/test2 | 192.168.48.130 | 用來後端的展現 |
軟件下載:連接:連接:http://share.weiyun.com/3b6c27e33cbf4d0acc0ccfa14877bd05 (密碼:IWLe)後端
架構原理圖:centos
1、先安裝elasticsearch集羣,並測試經過再進行其餘軟件安裝。安全
在test5,test4上安裝分別安裝elasticsearch-2.3.3.rpm 前提要安裝java1.8 步驟以下: ruby
yum remove java-1.7.0-openjdk rpm -ivh jdk-8u91-linux-x64.rpm yum localinstall elasticsearch-2.3.3.rpm
配置elasticsearch 在目錄/etc/elasticsearch目錄下面 lasticsearch.yml elasticsearch.yml.bak logging.yml scriptsbash
編輯lasticsearch.yml
修改以下配置
cluster.name: myelk #設置集羣的名稱,在一個集羣裏面都是這個名稱,必須相同
node.name: test5 #設置每個節點的名,每一個節點的名稱必須不同。
path.data: /path/to/data #指定數據的存放位置,線上的機器這個要放到單一的大分區裏面。
path.logs: /path/to/logs #日誌的目錄
bootstrap.mlockall: true #啓動最優內存配置,啓動就分配了足夠的內存,性能會好不少,測試我就不啓動了。
network.host: 0.0.0.0 #監聽的ip地址,這個表示全部的地址。
http.port: 9200 #監聽的端口號
discovery.zen.ping.unicast.hosts: ["192.168.48.133", "192.168.48.131"] #知道集羣的ip有那些,沒有集羣就會出現就一臺工做
創建目錄
mkdir -pv /pach/to/{data,logs} chown elasticsearch.elasticsearch /path -R
啓動服務器 service elasticsearch start 並查看監控端口啓動
訪問9200端口查看服務
兩臺的配置都同樣就是上面的IP和note名稱要配置不同就行
安裝插件 head和kopf 以後訪問 ip:9200/_plugin/head 和ip:9200/_plugin/kopf (插件能夠圖形查看elasticsearch的狀態和刪除建立索引)
/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
2、安裝nginx和logstash軟件
在test1上安裝好nginx服務 就是收集它的日誌呢
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel ./configure --prefix=/usr/local/nginx --with-pcre --with-openssl= --with-zlib= make && make install
日誌在/usr/local/nginx/logs/access.log
而後在test1上安裝logstash-2.3.3-1.noarch.rpm
yum remove java-1.7.0-openjdk rpm -ivh jdk-8u91-linux-x64.rpm rpm -ivh logstash-2.3.3-1.noarch.rpm /etc/init.d/logstash start #啓動服務 /opt/logstash/bin/logstash -e "input {stdin{}} output{stdout{ codec=>"rubydebug"}}" #檢測環境 執行這個命令檢測環境正常否,啓動完成後 直接輸入東西就會出現
以後輸入 /opt/logstash/bin/logstash -e 'input {stdin{}} output{ elasticsearch { hosts => ["192.168.48.131:9200"] index => "test"}}'
就是輸入東西到48.131的elasticsearch上 會在/path/to/data/myelk/nodes/0/indices 生成你名稱test索引文件目錄 能夠多輸入幾個到48.131的目錄看看有沒有文件有就證實正常。
以後在/etc/logstash/conf.d 創建以.conf結尾的配置文件,我收集nginx就叫nginx.conf了內容以下;
###########################################################################################
input {
file {
type => "accesslog"
path => "/usr/local/nginx/logs/access.log" #日誌的位置
start_position => "beginning" #日誌收集文件,默認end
}
}
output {
if [type] == "accesslog" {
elasticsearch {
hosts => ["192.168.0.87"] ###elasticearch的地址
index => "nginx-access-%{+YYYY.MM.dd}" #生成的索引和剛纔的test同樣會在那裏生成後面的是日期變量。
}
}
}
##########################################################################################
必定要仔細,以後運行/etc/init.d/logstash configtest檢測配置是否正常。
查看進程是否啓動
以後在elasticearch查看有沒有索引生成。多訪問下nginx服務
若是沒有就修改這個文件
vi /etc/init.d/logstash
######################################################################################################
LS_USER=root ###把這裏換成root或者把訪問的日誌加個權限可讓logstash能夠讀取它 重啓服務就會生成索引了
LS_GROUP=root
LS_HOME=/var/lib/logstash
LS_HEAP_SIZE="1g"
LS_LOG_DIR=/var/log/logstash
LS_LOG_FILE="${LS_LOG_DIR}/$name.log"
LS_CONF_DIR=/etc/logstash/conf.d
LS_OPEN_FILES=16384
LS_NICE=19
KILL_ON_STOP_TIMEOUT=${KILL_ON_STOP_TIMEOUT-0} #default value is zero to this variable but could be updated by user request
LS_OPTS=""
#######################################################################################################
看logstash的日誌有下面的信息就成功了
3、安裝kibana軟件
上面的都安裝完成後在test2上面安裝kibana
rpm -ivh kibana-4.5.1-1.x86_64.rpm
編輯配置文件在這裏/opt/kibana/config/kibana.yml 就修改下面幾項就行
#######################################################################################################
server.port: 5601 端口
server.host: "0.0.0.0" 監聽
elasticsearch.url: "http://192.168.48.131:9200" elasticsearch地址
######################################################################################################
/etc/init.d/kibana start 啓動服務
訪問kibana http://ip:5601
添加展現的索引,就是在上面定義的 nginx-access-2016.07.03
4、其餘的一些配置。
kibana是直接訪問的比較不安全,咱們須要用nginx訪問代理,並設置權限用戶名和密碼訪問
先在kibana服務器上安裝nginx 不介紹了
在nginx裏面配置
#################################################################################
server
{
listen 80;
server_name localhost;
auth_basic "Restricted Access";
auth_basic_user_file /usr/local/nginx/conf/htpasswd.users; #密碼和用戶
location / {
proxy_pass http://localhost:5601; #代理kibana的5601以後就能夠直接80訪問了
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
####################################################################################
建立密碼和用戶文件:htpasswd.users
須要安裝httpd-tool包先安裝它
htpasswd -bc /usr/local/nginx/conf/htpasswd.users admin paswdadmin #前面是用戶後面是密碼
##################################################################################
以後經過訪問須要密碼和用戶而且是80端口了
到這裏就完成了,謝謝你的閱讀。