今天給大家帶來的是開源實時日誌分析 ELK , ELK 由 ElasticSearch 、 Logstash 和 Kiabana 三個開源工具組成。官方網站:https://www.elastic.co
其中的3個軟件是:
Elasticsearch 是個開源分佈式搜索引擎,它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制, restful 風格接口,多數據源,自動搜索負載等。
Logstash 是一個完全開源的工具,他可以對你的日誌進行收集、分析,並將其存儲供以後使用(如,搜索)。
kibana 也是一個開源和免費的工具,他 Kibana 可以爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌
系統 | 系統需要安裝的軟件 | 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)
架構原理圖:
一、先安裝elasticsearch集羣,並測試通過再進行其他軟件安裝。
在test5,test4上安裝分別安裝elasticsearch-2.3.3.rpm 前提要安裝java1.8 步驟如下:
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 scripts
編輯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
二、安裝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的日誌有下面的信息就成功了
三、安裝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
四、其他的一些配置。
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端口了
到這裏就完成了,謝謝你的閱讀。