S小魚仔S 網誌搜尋

顯示具有 ELK 標籤的文章。 顯示所有文章
顯示具有 ELK 標籤的文章。 顯示所有文章

2019年1月3日 星期四

S小魚仔S ELK 6.5.3 安裝 Elastic App Search

隨著 ELK 不斷更新版本,目前已經到「6.5.4」這次要安裝是「Elastic」提供的「Elastic App Search」功能,系統環境需求「Java 8」和「Elasticsearch 6.4」以上版本。

官方提供的這項產品的功能說明大致如下

如果您只想在應用程序中提供搜索 - 索引數據,然後從中構建應用程序或產品 - 您將對 Elastic App Search 最感興趣。 它是Elasticsearch 前面的智能,優化的API包裝器...等,如果沒有猜錯應該是透過 JavaScript、Node.js、Python、RubyJava 這些語言透過  API 接口 獲取數據並自行開發產品。

測試環境「ELK」與「Elastic App Search」安裝在同一台 服務器上。

接下來就是重點安裝「流程

#開啟「防火牆」TCP 3002
sudo firewall-cmd --add-port=3002/tcp --permanent

#更新「防火牆」令其生效
sudo firewall-cmd --reload

#解壓縮「Appsearch
tar -xzf /opt/appsearch-0.1.0-beta1.tar.gz -C /opt/

vi /opt/appsearch-0.1.0-beta1/config/env.sh
PS. env.sh 這是連線相關配置文檔
#允許「任意」主機「IP」連線
export APP_SEARCH_HOST=${APP_SEARCH_HOST:-0.0.0.0}

#加入「appsearch」系統環境變量
ALLOW_ES_SETTINGS_MODIFICATION=true
DISABLE_ES_SETTINGS_CHECKS=true

#加入「appsearch」功能,編輯「elasticsearch.yml」(放入最後面)
vi /opt/elasticsearch-6.5.3/config/elasticsearch.yml

action.auto_create_index: ".app-search-*-logs-*,-.app-search-*,+*"


#查詢「elasticsearch」端口
netstat -ltunp | grep "9200"

#刪除「elasticsearch」進程
kill -9 pid

#背景執行「elasticsearch
su elk -c 'nohup /opt/elasticsearch-6.5.3/bin/elasticsearch &'

#確認 elasticsearch 端口是/否」啟動
 netstat -ltunp | grep "9200"

#背景執行「appsearch
nohup /opt/appsearch-0.1.0-beta1/bin/app-search &

通常看到「Started @xxx ms」這一行就表示成功了


#確認 Elastic App Search 端口是/否」啟動
 netstat -ltunp | grep "3002"


登入「http://ip:3002」(Web)  
default email: [email protected]
default password: changeme

接下來就是 配置「Elastic App Search

搭建後續不知道如何應用..暫時先這樣嚕。

參考資料
www.elastic.co」-「Elastic App Search Beta Released

2018年7月17日 星期二

S小魚仔S ELK 5.6.8 支持 sentinl 告警服務 ( E-mail、Wechat....等)

在「Github」發現「sentinl」套件 並支持「Elasticsearch」、「Logstash」、「Kibana」5.6.8 版本,「sentinl」依賴於「kibana」角色並安裝「plugin」。
PS. 「sentinl」與「elk」版本必須對應否則安裝起來會無法使用。

如何安裝「sentinl」?

切換至 kibana 內 bin 資料夾
 cd /opt/kibana-5.6.8-linux-x86_64/bin

執行「安裝」plugin  (在線安裝)
./kibana-plugin install https://github.com/sirensolutions/sentinl/releases/download/prerelease/sentinl-v5.6.8.zip

離線安裝方式
/opt/kibana-5.6.8-linux-x86_64/bin/kibana-plugin install file:/opt/sentinl-v5.6.8.zip

安裝完成會顯示如下畫面

編輯「kibana.yml」(加入最後面即可)



                     #====設定「sentinl plugin」===
                      sentinl:
                         es:
                         host: localhost                      elasticsearch server
                         port: 9200                             # elasticsearch port
                      settings:
                         email:
                              active: true
                              user: "456839"                  #使用「QQ」帳號
                              password: "scdiosdcm3"  #使用「QQ」密碼
                              host: smtp.qq.com           #設定「QQ」smtp
                              ssl: true                             #使用「SSL」加密
                              timeout: 100000                #mail server  timeout

接著重啟「kibana

netstat -ltunp | grep "5601"

kill -9 3409

/opt/kibana-5.6.8-linux-x86_64/bin/kibana &

登入「kibana Web UI

接下來就是 Sentinl Web Ui 相關設置 和 告警服務

建立新的「Watchers」(觀察者)

點選「Watcher

1. 點選「General」建立「標題」和「循環執行時間

這裡就是最關鍵也是最困難,初學者一定看不懂這是什麼意思,簡單的話就是把 需要查詢 ES 條件語句 ( JSON ) 寫入進去,這個預設語句是查詢所有筆數。

多少筆數發生告警

 在「Action」建立「email

輸入「E-mail」相關資訊

點選「SAVE」這個很重要..不然之前做的設定會清空

點選「三角形」圖案 進行單次循環測試

 出現「Executed watcher」表示成功

檢查「信箱」確認 Sentinl Alarm 內容

相關參考資料
seeker的博客」-「Sentinl插件安装及使用
Truman's Blog」-「Sentinl-(Kibana Alert & Report App for Elasticsearch)
玖分博客」-「elk告警插件sentinl安装使用
ELK 6.2.3」-「Kibana 插件 sentinl 使用教程
ELK + Sentinl 日志实时监控报警 钉钉、邮件-「ELK + Sentinl 日志实时监控报警 钉钉、邮件

2018年3月24日 星期六

S小魚仔S CentOS 7 Install Docker ELK 簡易配置

因為工作需求常常到客戶端採集日誌,又不想繁瑣安裝 「ELK」,這次我們採用比較熱門 Docker 快速安裝「ELK」,採用「mcmoe and antoineco」作者搭建「Github Docker ELK」版本
PS. 「ELK」版本更新速度非常快,幾乎週一個版本號。


==關閉「selinux 」======
#關閉「Selinux」為「disabled」才不會阻擋「服務連線」服務
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

PS. 記得關閉「selinux」重開機

==更新「YUM Repository」==
;安裝「Docker」前, 更新「YUM」資源庫。
yum -y update

==安裝「Docker」======

;安裝「Docker
sudo yum install docker -y

;啟用「Docker
sudo service docker start

;開機自動「啟動」Docker
sudo chkconfig docker on

;啟用「Docker」狀態
sudo service docker status

==安裝「Docker ELK」======

#安裝「Git」套件
yum install git-all -y

#安裝「Docker Compose」套件
PS. 為什麼要安裝「Docker Compose」套件?
通過 Compose (基于*.YUML语法)文件,在這個檔上面描述應用的架構,如使用什麼鏡像、數據卷、網絡、綁定服務埠等等,然後再用一條命令就可以管理所有的服務 (如啟動、停止、重啓、日誌監控等等)。
sudo curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

#賦予「Docker Compose」執行權限
sudo chmod +x /usr/local/bin/docker-compose

#確認「Docker Compose」版本
docker-compose --version

#切換到「Opt」目錄
cd /opt

#下載「Git Hub」elk 套件
git clone https://github.com/deviantony/docker-elk.git

#切換「docker-elk」目錄
cd /opt/docker-elk

# docker-compose up 會執行「docker-compose.yml」( -d = 背景執行 )
docker-compose up -d


拉取鏡像...請稍後

#確認「ELK」三個「CONTAINER ID」容器 對應「IMAGE NAMES
sudo docker ps

接下來就是「ELK Docker」通訊端口對應關係
Logstash TCP Input - 5000
Elasticsearch HTTP - 9200
Elasticsearch TCP Transport - 9300
Kibana - 5601

查詢「CONTAINER ID」(容器) 與「Port」(端口) 映射關係
docker port IMAGE NAMES (以此類推)

透過網頁瀏覽「http://IP:5601」( Kibana Web UI )

如何進入「Docker ELK」容器 ( CONTAINER )

docker exec -it IMAGE NAMES bash

Docker ELK」三個( elasticsearch.yml、logstash.conf、kibana.yml ) 設定檔分別在「容器」裡面,必須進入「容器」才可以看到相關配置檔。

#「elasticsearch」設定檔
/usr/share/elasticsearch/config/elasticsearch.yml

#「logstash」設定檔
/usr/share/logstash/pipeline/logstash.conf

#「kibana」設定檔
/usr/share/kibana/config/kibana.yml

參考資料
Github.com」-「docker-filebeat

2017年10月27日 星期五

S小魚仔S Centos 7 搭建 ELK (ElasticSearch) 叢集 (Cluster )

Elasticsearch 叢集(Cluster) 中的三種角色

Master Node: 幾點主要用於元數據(metadata)的處理,比如索引的新增、刪除、分片分配等。

Data Node: 節點上保存了數據分片。它負責數據相關操作,比如分片的 CRUD,以及搜索和整合操作。這些操作都比較消耗 CPU、內存和 I/O 資源。

Client Node: 節點起到路由請求的作用,實際上可以看做負載均衡器。

搭建版本「ElasticSearch - 5.6.3」首先我們先看一下架構圖


搭建「ElasticSearch」Cluster 請先滿足下列條件
PS. 記憶體不能小於「4G

#==關閉「Selinux 」======

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

#====設定連線「最大值」默認「1024」====

echo "ulimit -SHn 65536" >> /etc/profile
source /etc/profile

#======開啟「最大線程」(262144)======

vi /etc/sysctl.conf

vm.max_map_count = 262144
vm.swappiness = 1

#重啟生效
sysctl -p

#==Elasticsearch - Firewall========

#ElasticSearch Mapping API  9200/TCP
sudo firewall-cmd --add-port=9200/tcp --permanent 

#ElasticSearch Unicast  9300/TCP
sudo firewall-cmd --add-port=9300/tcp --permanent 

#重新啟動「防火牆
sudo firewall-cmd --reload

#=====Elasticsearch.yml 設定檔(Config)========

#=====Master 配置=======

# 叢集「名稱
cluster.name: es_cluster
 # Hostname(主機名)
node.name: Elasticsearch_M
# 允許連線 IP ,也可以使用「0.0.0.0
network.host: 192.168.8.28
 # 開啟「TCP-9200」協議
http.port: 9200

#如果「Elasticsearch」節點(Node)只有「2台」才需要配置,默認都是「True」。
# master =「主節點」,data =「存放資料
node.master: true
node.data: true

 #設定「自動發現節點主機」Unicast
discovery.zen.ping.unicast.hosts: ["192.168.8.28","192.168.8.29"] 

#防止「Node」節點故障,節點(Node)「2台」設定數值「1」。
#防止「Node」節點故障,節點(Node)「3台」設定數值「2」。
discovery.zen.minimum_master_nodes: 1

#支援「跨網段」連線 並 獲取「數據」
http.cors.enabled: true
http.cors.allow-origin: "*"




#=====節點 Node 配置 (以此類推) =======

配置完成以後透過下面指令確認「狀態

#==檢查「端口」===
netstat -ltunp | grep -e "9200" -e "9300"


#==查詢「群集」狀態=======

查询集群状态
curl -XGET 'http://192.168.8.28:9200/_cat/nodes?v'

查询集群中的「Master」
curl -XGET 'http://192.168.8.28:9200/_cat/master?v'

查询集群中的「健康狀態
curl -XGET 'http://192.168.8.28:9200/_cat/health?v'

到這邊為止「ElasticSearch」Cluster 基本搭建完成,後續可以依照需求搭建「Client Node - Load Blance」做「負載均衡

參考資料
www.cnblogs.com」-「ELK + KafKa 开发集群环境搭建
www.blog-wuchen.cn」-「ES集群安装

2017年9月6日 星期三

S小魚仔S ELK 配置 Logstash 收集 Nginx Access Log

因為一個機緣巧合下發現如何使用「Nginx」Log 傳送給「ELK」做分析,本篇文章並不會教各為如何搭建「ELK ( Elasticsearch )、( Logstash )、( Kibana )」和「Nginx」直接切入重點。

 一. 配置「Nginx」日誌為「JSON」格式。
PS. 建議先將「內容」貼到「Notepad++」編碼為「UTF-8」。

vi /etc/nginx/nginx.conf  (Default)


#==========Nginx Log Output=============

log_format main  '{"@timestamp":"$time_iso8601",'
                        '"@source":"$server_addr",'
                        '"hostname":"$hostname",'
                        '"ip":"$http_x_forwarded_for",'
                        '"client":"$remote_addr",'
                        '"request_method":"$request_method",'
                        '"scheme":"$scheme",'
                        '"domain":"$server_name",'
                        '"referer":"$http_referer",'
                        '"request":"$request_uri",'
                        '"args":"$args",'
                        '"size":$body_bytes_sent,'
                        '"status": $status,'
                        '"responsetime":$request_time,'
                        '"upstreamtime":"$upstream_response_time",'
                        '"upstreamaddr":"$upstream_addr",'
                        '"http_user_agent":"$http_user_agent",'
                        '"https":"$https"'
                        '}';


瀏覽「Nginx」網站「確認」Nginx Log 為「JSON」格式


二. 配置「Logstash」允許「input」為「JSON」搭配「Filter」插件功能。
PS. 建議先將「內容」貼到「Notepad++」編碼為「UTF-8」。
PS. 「filter」和「mutate」是「插件」功能,為了「字段」轉型。
PS. 「geoip」可以分析「國家、經緯度、省份....等」前提是「Internet」必須要通。

#==========Logstash Log Intput=============

input {
        beats {          #輸入「監聽」「TCP 5043」端口,接收来自 Filebeat 的 Log
        port =>  "5043"            
        codec => "json"
        }
}


filter {

        mutate {
        convert => [ "status","integer" ]
        convert => [ "size","integer" ]
        convert => [ "upstreatime","float" ]
        remove_field => "message"
        }

        geoip {
        source => "ip"
        }
}

output {
  elasticsearch { hosts => ["localhost:9200"] }  #輸出「結果」到「elasticsearch」「TCP 9200」端口。
  stdout { codec => rubydebug }
}



三. 配置「Filebeat」(ELK Agent) 傳送「Nginx Log」至「Logstash

filebeat.prospectors:
- input_type: log                      #輸入 type「log」
  paths:
    - /var/log/nginx/access.log        #指定推送日誌「Log」文件
  fields:
    host_ip: 192.168.8.24             #告知「來源」IP 位址
    tags: ["nginx"]                   #設定「標籤」
output.logstash:

  hosts: ["192.168.8.25:5043"]        #指定接收Logstash





最後就是檢查「ELK」數據日誌「結果

同時可以配合「Grafana Dashboards」展示「數據」。

參考資料
Blog.csdn.net」-「ELK测试笔记:Filebeat与 Logsmash 写入 Redis
ELK Web Site」-「Plugins-filters-mutate