ELK 以前端 nginx+elasticsearch+ kibana 部署

以前有導讀部份內容,介紹了elk的及kafka的前世此生及優勢,各位客官能夠點擊這裏訪問,歡迎你們批評指正交流學習共同進步;(http://www.javashuo.com/article/p-pvezpors-ez.html)
OS:Centos 7
ELK Stack : 6.2.2
安裝方式:源碼安裝
個人日誌收集系統是基於這樣的架構來作,前端代理使用Nginx,而後是ELK 的全家桶,文件收集使用filebeat來搞定;
ELK  以前端 nginx+elasticsearch+ kibana 部署
一,系統優化,
在安裝ES 的主機上須要做以下系統級別的優化工做,否則啓動ElasticSearch 的時候會出現報錯,同時給將來的運維工做也埋下隱患,因此一開始作好優化以後,之後就不會被各類怪異問題纏繞了!
#最大文件打開數參數優化:
max file open
file-max的含義。man proc,可獲得file-max的描述:
This file defines a system-wide limit on the number of open files for all processes. (See
also setrlimit(2), which can be used by a process to set the per-process limit,
RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messages
about running out of file handles, try increasing this value:前端

#修改方法:
vi /etc/security/limits.conf
#在最下邊添加以下兩行java

  • soft nofile 65538
  • hard nofile 65538
    #修改完成以後,從新鏈接server,經過以下命令確認是否修改完成;
    [root@localhost ~]# ulimit -a |grep open
    open files (-n) 65538

#vm.max_map_count
虛擬內存(Virtual memory)
es默認使用 hybrid mmapfs / niofs 目錄來存儲索引。 默認操做系統對mmap計數的限制過低,可能引起內存不足的異常。在Linux中,能夠經過root運行下面的命令來放開限制:
#臨時設置的方法,
sysctl –w vm.max_map_count=262144
更新系統文件/etc/sysctl.conf的vm.max_map_count字段使得這個設置永久生效。
若是不優化會出現啓動es的時候會出現以下提示:
max virtual memory areas vm.max_map_count [65535] is too low, increase to at least [262144]
#編輯/etc/sysctl.conf 添加以下內容:
vm.max_map_count=262150node

加載到系統中:
sysctl -p --load /etc/sysctl.conflinux

查看是否成功:
[root@localhost ~]# sysctl -a |grep vm.max
vm.max_map_count = 262150nginx

二,環境及軟件包準備
#安裝openjdk
yum -y install java
#驗證,須要安裝java 1.8 版本
java -version
ELK  以前端 nginx+elasticsearch+ kibana 部署
#由於elasticsearch 不容許root 用戶啓動,同時爲了系統的安全考慮,最好仍是用非root 用戶來run這些程序,因此建立一個elk 用戶給elasticsearch,kibana,logstash 等用。
#建立用戶的時候經過 -d 指定home 目錄放到指定位置,我放到/opt/home 目錄下
useradd elk -d /opt/elk git

Tips:存放elasticsearch 的分區必定要有足夠的空間,由於elasticsearch 須要存放收集過來的數據,因此一開始就規劃好存放位置
我選擇把安裝包我統一放到 elk 的home目錄 /opt/elk/ 下,
#經過官網下載tar.gz 最新版的安裝包
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.8-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.2.tar.gzgithub

#解壓全部tar.gz 包,進入當前下載目錄,因爲安裝包比較多,一個個解壓比較費勁,使用for 循環一次性解決這個問題,解放雙手提升效率。。。!
for i in ls *.tar.gz;do tar -zxvf $i;doneweb

三,安裝ES,Kibana,Nginx,Logstash
#安裝配置elasticsearch-6.2.2
修改elasticsearch 目錄擁有者:
chown -R elk.elk elasticsearch-6.2.2
cd elasticsearch
vi config/elasticsearch.yml
#配置選項:chrome

Elasticsearch 集羣名稱。使用集羣可將單獨 Process Federation Server 綁定到單個分佈式系統中。參與集羣的全部服務器都必須具備相同的集羣名稱。

cluster.name: my-esapache

Elasticsearch 節點名。集羣中的每一個 Process Federation Server 都必須具備惟一節點名。

#node.name: node-1

數據存儲目錄(多個路徑用逗號分隔)

path.data: /opt/elk/elasticsearch-6.2.2/data

日誌目錄

path.logs: /opt/elk/elasticsearch-6.2.2/logs
#本機的ip地址
network.host: 0.0.0.0
#ES 集羣使用,提供其餘 Elasticsearch 服務節點的單點廣播發現功能。配置集羣中基於主機 TCP 端口的其餘 Elasticsearch 服務的逗號分隔列表。
例如:
#discovery.zen.ping.unicast.hosts="localhost:9300,localhost:9301,localhost:9302"

設置節點間交互的tcp端口(集羣),(默認9300)

#transport.tcp.port: 9300

監聽端口(默認)

http.port: 9200

增長參數,使head插件能夠訪問es

#若是啓用了 HTTP 端口,那麼此屬性會指定是否容許跨源 REST 請求。
http.cors.enabled: true
#若是 http.cors.enabled 的值爲 true,那麼該屬性會指定容許 REST 請求來自何處。
http.cors.allow-origin: "*"
#准許head 插件經過header 認證方式訪問
http.cors.allow-headers: Authorization
http.cors.enabled
true
若是啓用了 HTTP 端口,那麼此屬性會指定是否容許跨源 REST 請求。
http.cors.allowed.origin
localhost
若是 http.cors.enabled 的值爲 true,那麼該屬性會指定容許 REST 請求來自何處。
#啓動elasticsearch用後臺啓動
nohup su - elk -c /opt/elk/elasticsearch-6.2.2/bin/elasticsearch >> /dev/null 2>&1 &
#訪問web 記得 iptables 開放該端口
http://xxx:9200

ELK  以前端 nginx+elasticsearch+ kibana 部署
#可視化插件 elasticsearch-head 安裝
介紹:
elasticsearch-head是一個界面化的集羣操做和管理工具,是集羣管理、數據可視化、增刪改查、查詢語句可視化工具,能夠對集羣進行傻瓜式操做。
官方 GitHub 地址:https://github.com/mobz/elasticsearch-head。安裝也很簡單,安裝 README 步驟走就行了。
#下載包elasticsearch-head 若是沒有git 請使用 yum -y install git
git clone https://github.com/mobz/elasticsearch-head.git
cd /opt/elk/elasticsearch-head

#修改elasticsearch-head 中的ES鏈接地址,若是你的elasticsearch 中配置的訪問地址,這個地址就須要修改,若是不修改,經過web 界面訪問elasticsearch-head的時候沒法鏈接到elasticsearch
ELK  以前端 nginx+elasticsearch+ kibana 部署
#編輯配置文件,填寫elasticsearch server的地址
vi _site/app.js
init: function(parent) {
this._super();
this.prefs = services.Preferences.instance();
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://es_ip:9200";
if( this.base_uri.charAt( this.base_uri.length - 1 ) !== "/" ) {
// XHR request fails if the URL is not ending with a "/"
this.base_uri += "/";
}

#安裝node.js和 npm
yum -y install nodejs npm
#啓動程序
nohup npm run start >> /dev/null 2>&1 &

#訪問web,記得 iptables 開放該端口;
http://xxx:9100
ELK  以前端 nginx+elasticsearch+ kibana 部署
Tips:
ElasticSearch-head 有chrome 瀏覽器的插件能夠安裝一個很是方便,省着每次還須要輸入地址訪問;

#安裝kibana
#修改目錄屬性
chown -R elk.elk kibana-6.2.2-linux-x86_64
cd kibana-6.2.2-linux-x86_64
#修改配置文件
vi config/kibana.yml
server.host: "server-ip"
elasticsearch.url: "http://ES-IP:9200"
#啓動kibana
nohup su - elk -c /opt/elk/kibana-6.2.2-linux-x86_64/bin/kibana >>/dev/null 2>&1 &

#出現以下提示證實啓動成功
su - elk -c /opt/elk/kibana-6.2.2-linux-x86_64/bin/kibana
log [10:14:23.157] [info][status][plugin:kibana@6.2.2] Status changed from uninitialized to green - Ready
log [10:14:23.203] [info][status][plugin:elasticsearch@6.2.2] Status changed from uninitialized to yellow - Waiting for Elasticsearch
log [10:14:23.346] [info][status][plugin:timelion@6.2.2] Status changed from uninitialized to green - Ready
log [10:14:23.353] [info][status][plugin:console@6.2.2] Status changed from uninitialized to green - Ready
log [10:14:23.357] [info][status][plugin:metrics@6.2.2] Status changed from uninitialized to green - Ready
log [10:14:23.376] [info][listening] Server running at http://server-ip:5601
log [10:14:23.421] [info][status][plugin:elasticsearch@6.2.2] Status changed from yellow to green - Ready
#訪問web,記得 iptables 開放該端口;
http://xxx:5601
ELK  以前端 nginx+elasticsearch+ kibana 部署

Tips:
Kibana 的前端代理仍是要配置一下的,否則每次都訪問都要寫端口號,不是通常的麻煩,同時由於Kibana 沒有認證,能夠經過nginx 給它個簡單的認證;
前端nginx 安裝選擇使用openresty
爲openresty 運行建立用戶
useradd nginx -s /sbin/nologin
#安裝依賴包
yum install pcre-devel openssl-devel gcc curl
#安裝openresty
下載包:wget https://openresty.org/download/openresty-1.13.6.1.tar.gz
#解壓並進入安裝包
tar -zxvf openresty-1.13.6.1.tar.gz && cd openresty-1.13.6.1
安裝openresty
./configure --user=nginx --group=nginx && gmake && gmake install
#修改nginx 配置文件,指定nginx 執行用戶爲nginx
user nginx;
#在nginx 目錄下建立conf.d 目錄
cd /usr/local/openresty/nginx/
mkdir conf.d
#建立kibana 代理配置
cd conf.d
vi kibana
#把以下內容貼入
server {
listen 80;
server_name xxx.xxx.xxx.xxx; #當前主機名
auth_basic "Restricted Access";
auth_basic_user_file /usr/local/openresty/nginx/conf/htpasswd.users; #登陸驗證
location / {
proxy_pass http://kibana-host:5601; #轉發到kibana
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
#安裝httpd-tools
介紹:
什麼是 htpasswd ?
htpasswd 是開源 http 服務器 apache httpd 的一個命令工具,用於生成 http 基本認證的密碼文件。
加密方式有什麼區別?
MD5:使用MD5加密密碼。在Windows, Netware 和TPF上,這是默認的加密方式。
crypt:使用crypt()加密密碼。在除了Windows, Netware和TPF的平臺上,這是默認的。 雖然它在全部平臺上能夠爲htpasswd所支持, 可是在Windows, Netware和TPF上不能爲httpd服務器所支持。
SHA:使用SHA加密密碼。 它是爲了方便轉入或移植到使用LDAP Directory Interchange Format (ldif)的Netscape而設計的。
plain:不加密,使用純文本的密碼。雖然在全部平臺上 htpasswd 均可以創建這樣的密碼, 可是httpd後臺只在Windows, Netware和TPF上支持純文本的密碼。

yum -y install httpd-tools
生成祕鑰文件:
htpasswd -bc /usr/local/openresty/nginx/conf/htpasswd.users 用戶名 密碼
#修改nginx主配置文件導入配置,在文件最下} 符號上邊

vim /usr/local/openresty/nginx/conf/nginx.conf

include /usr/local/nginx/conf/conf.d/*.conf;

#檢查配置並啓動啓動openresty
/usr/local/openresty/nginx/sbin/nginx -t

#出現以下提示證實沒有問題:
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful

#啓動nginx
/usr/local/openresty/nginx/sbin/nginx

#用瀏覽器直接訪問80端口
http://IP地址
ELK  以前端 nginx+elasticsearch+ kibana 部署左側菜單欄介紹以下:discover:瀏覽數據visualize:可視化報表dashboard:儀表盤dev tools:開發者工具management: 設置和管理

相關文章
相關標籤/搜索