Elastic Stack(ELK)-1 elasticsearch+logstash+kibana

監控規劃

現有監控主要以zabbix為主,監控服務器的磁盤、CPU、內存、網絡等,拉取部分錯誤日志,業務進程、端口等監控。對線上的其他日志并未拉取。關于zabbix使用可以參考相關文檔,本文主要是針對ELK的日志監控和展示部署和測試。以及ELK自帶的APM監控測試。


監控

1、ELK 部署

一個完整的集中式日志系統,需要包含以下幾個主要特點:
收集-能夠采集多種來源的日志數據
傳輸-能夠把日志數據傳輸到存儲系統
存儲-存儲日志數據
分析-可以支持日志分析,并提供高效的檢索
警告-能夠提供錯誤告警機制
而ELK則提供了一整套解決方案,并且都是開源軟件,之間互相配合使用,完美銜接,高效的滿足了很多場合的應用。是目前主流的一種日志系統。
ELK分別為:Elasticsearch 、 Logstash以及Kibana 。新增加的Beats占用資源少,適合于在各個服務器上搜集日志,官方也推薦此工具。
Elastic Stack包含:
Elasticsearch是個開源分布式搜索引擎,提供搜集、分析、存儲數據三大功能。它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。詳細可參考Elasticsearch權威指南
Logstash 主要是用來日志的搜集、分析、過濾日志的工具,支持大量的數據獲取方式。負責將收到的各節點日志進行過濾、修改等操作在一并發往elasticsearch上去。(現在基本只使用sever端,客戶端建議使用Beats)
Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助匯總、分析和搜索重要數據日志。
Beats是一個輕量級日志采集器, 目前Beats包含六種工具:
Packetbeat: 網絡數據(收集網絡流量數據)
Metricbeat: 指標 (收集系統、進程和文件系統級別的 CPU 和內存使用情況等數據)可以用來做服務器監控采集工具
Filebeat: 日志文件(收集文件數據)(常用)
Winlogbeat: windows事件日志(收集 Windows 事件日志數據)
Auditbeat:審計數據 (收集審計日志)
Heartbeat:運行時間監控 (收集系統運行時的數據)
MySQLbeat: 收集mysql數據性能*(第三方工具)
x-pack工具:
x-pack在 Elastic Stack6.3.1后已經集成到ELK安裝包中不在需要重新安裝。提供了安全、警報、監控、報表、圖表于一身的擴展包,是收費的。網絡上有破解教程,本文暫時不涉及破解,只試用30天。
參考:
https://blog.51cto.com/zero01/2079879
https://blog.51cto.com/zero01/2082794
官網:https://www.elastic.co/cn/
Elasticsearch權威指南:https://www.gitbook.com/book/chenryn/elk-stack-guide-cn/details
性能監控(APM):https://blog.51cto.com/kbsonlong/2312113
展示:https://grafana.com/
Kafka:https://www.cnblogs.com/likehua/p/3999538.html
其他搜索關鍵詞:ELK,ELK+filebeat+kafka,filebeat ,logstash
如果想弄明白某一功能只需要使用相關關鍵詞查找,遇到的各種報錯也是需要搜索就可以,你不是第一個遇到此問題的人(可以查詢到)、你不是最后一個遇到此問題的人(記錄下解決辦法)
在測試部署過程遇到過一些問題,并未在此文檔中記錄,此文檔只做簡單說明,并且是安裝文檔,不是問題收集文檔,所有問題都有解決辦法在互聯網。

1.1 、ElasticSearch部署配置

elasticsearch安裝方式

  elk需要使用java運行環境,在此之前需要安裝jdk1.8(建議1.8以上)
  根據官網可以看到有多種安裝方式可以選擇,在linux系統下部署本文選擇rpm方式,在rpm方式下又有rpm包安裝和yum安裝兩種。
Yum安裝方式:

1.  導入公鑰:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
若出現報錯ssl類的報錯可以yum -y update nss,多嘗試添加幾次
2.  編輯yum源:
vim /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages  
baseurl=https://artifacts.elastic.co/packages/7.x/yum 
#使用不同版本這里添加不同數字,并且確認是否可用
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

檢查是否可用

yum list |grep elasticsearch #檢查
yum install elasticsearch #安裝,由于文件比較大所以下載需要很長時間

RPM包:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.1-x86_64.rpm 
rpm --install elasticsearch-7.0.1-x86_64.rpm

可用使用RPM查看安裝的默認位置:rpm -ql elasticsearch

安裝位置

使用上述安裝方式無法再一臺主機實現多實例功能,可用使用源碼方式,在不同文件夾中拷貝解壓出來的文件,修改配置文件參數,可用在一臺機器運行多實例,繼而在一臺機器測試集群功能。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.1-linux-x86_64.tar.gz 
tar -xzf elasticsearch-7.0.1-linux-x86_64.tar.gz
cd elasticsearch-7.0.1/ 

配置文件

/etc/elasticsearch/elasticsearch.yml
/etc/sysconfig/elasticsearch
elasticsearch.yml 文件用于配置集群節點等相關信息的
elasticsearch 文件則是配置服務本身相關的配置,可用用來指定java文件位置
jvm.options配置程序運行虛擬java參數包括堆內存等優化
配置文件
vi  /etc/elasticsearch/elasticsearch.yml

# ---------------------------------- Cluster -----------------------------------
cluster.name: test   #設置集群名稱,在同一個網絡環境下相同集群名稱會添加到一起
#
# ------------------------------------ Node ------------------------------------
node.name: node-1 #節點名稱,在相同的集群下,加點叫什么名字,不要重復
node.master: true  # 節點功能,建議查看https://www.cnblogs.com/37yan/p/9928748.html
node.data: true
#node.ingest: true
#index.number_of_shards: 1 #數據分片數,默認為5,有時候設置為3 在測試中發現安裝的7.0 版本默認為1
# ----------------------------------- Paths ------------------------------------
path.data: /var/lib/elasticsearch  #數據存儲位置
path.logs: /var/log/elasticsearch #日志存儲位置
# ----------------------------------- Memory -----------------------------------
bootstrap.memory_lock: false 
bootstrap.system_call_filter: false #此處特別注意,centos6.0 不支持SecComp,如果此處是ture會報錯
# ---------------------------------- Network -----------------------------------
network.host: 172.16.15.53 #綁定網卡信息
http.port: 9200 #服務端口信息
transport.tcp.port: 9300 #集群傳輸端口
# --------------------------------- Discovery ----------------------------------
discovery.seed_hosts: ["172.16.15.53","172.16.15.26","172.16.15.44" ] #集群中自動發現的機器
cluster.initial_master_nodes: ["172.16.15.53","172.16.15.26","172.16.15.44"]
#機器中可以作為主節點的機器

以上是配置是常用配置文件,設置完成以后可以使用命令啟動:

service elasticsearch start #(yum和rpm安裝)
#xxx/bin/elasticsearch start #解壓位置啟動

啟動后查看需要注意兩個端口都需要在防火墻開通
如果啟動出現報錯,根據報錯信息查找解決方案。可以參考:
https://www.cnblogs.com/configure/p/7479988.html
特別注意:elasticsearch是需要java環境的,所以在安裝前需要安裝配置JDK1.8 安裝比較簡單
如果是集群在多臺機器上都需要安裝部署,配置文件根據需要修改對應參數:
例如相同的集群名稱,不同的節點信息等
如果是在單機部署多實例只能使用源碼安裝,并配置多個端口
可以在瀏覽器中查看ES集群情況:http://172.16.15.53:9200/_cluster/health?pretty

查看es集群情況

瀏覽器中查看單個節點情況:http://172.16.15.53:9200
單個節點

關于elasticsearch-head插件https://github.com/mobz/elasticsearch-head
elasticsearch-head插件

可以看到有多種方式,本文選擇了Chrome插件方式,比較簡單也不需要在服務器部署運行等。
elasticsearch-head

elasticsearch-head

1.2 、Logstash部署配置

與elasticsearch類似也分三種安裝方式:yum,rpm,源碼二進制
Yum安裝:
設置yum源和elasticsearch一樣,如果是相同的機器不需要設置:
yum install logstash –y
下載頁面:https://www.elastic.co/cn/downloads/logstash

下載界面

配置文件:
logstash配置文件

vim /etc/logstash/logstash.yml #此配置文件主要用來配置logstash本身,下屬三個參數根據需要配置即可。

path.data: /var/lib/logstash
http.host: "172.16.15.53"
path.logs: /var/log/logstash

logstash主要配置文件是需要新建
測試:

vim /etc/logstash/conf.d/syslog.conf
input { # 定義日志源
 syslog {
  type => "system-syslog" # 定義類型
  port => 10514 # 定義監聽端口
           }
      }
output { # 定義日志輸出
 elasticsearch {
 hosts => ["172.16.15.53:9200"] # 定義es服務器的ip
 index => "system-syslog-%{+YYYY.MM}" # 定義索引
 }
}

在配置主機上rsyslog轉發系統日志到10514端口即可

vim /etc/rsyslog.conf
*.* @@172.16.15.53:10514 #根據自己情況修改ip和端口 @@代表使用tcp端口

關于logstash配置文件使用可以參考:
Logstash 分為 Input、Output、Filter、Codec 等多種plugins。
Input:數據的輸入源也支持多種插件,如elk官網的beats、file、graphite、http、kafka、redis、exec等等等
Output:數據的輸出目的也支持多種插件,如本文的elasticsearch,當然這可能也是最常用的一種輸出。以及exec、stdout終端、graphite、http、zabbix、nagios、redmine等等
Filter:使用過濾器根據日志事件的特征,對數據事件進行處理過濾后,在輸出。支持grok、date、geoip、mutate、ruby、json、kv、csv、checksum、dns、drop、xml等等
Codec:編碼插件,改變事件數據的表示方式,它可以作為對輸入或輸出運行該過濾。和其它產品結合,如rubydebug、graphite、fluent、nmap等等。

參考測試的配置文件:
input {
  #file {#本機的文件 第一次建議使用這個拉取 數據,后續在考慮使用beats和kafka
  #path => "/home/app/tengine/logs/access.log"
  #type => "nginx" 
  #start_position => "beginning"
 # }
# beats { #beats 發送過來的文件
# port => 5044
# }
kafka { #-從kafka拉取數據
 bootstrap_servers => "172.16.15.26:9092"
consumer_threads => 1
 topics => ["system"]
 }
}
filter { #過濾
 json {
 source => "message"
 }
 if "nginx" in [tags]{
 grok {
 match => { "message" => "%{IPORHOST:http_host} %{IPORHOST:clientip} - %{USERNAME:remote_user} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:http_verb} %{NOTSPACE:http_request}(?: HTTP/%{NUMBER:http_version})?|%{DATA:raw_http_request})\" %{NUMBER:response} (?:%{NUMBER:bytes_read}|-) %{QS:referrer} %{QS:http_agent} %{QS:xforwardedfor} %{NUMBER:request_time:float}"} *#* *定義日志的輸出格式*
 }
geoip {
 source => "clientip"
 }
 }
}
output { # 定義日志輸出
 if "nginx" in [tags]{ #根據關鍵字區分不同類型數據,關鍵字在filebeat中配置
 elasticsearch {
 hosts => ["172.16.15.53:9200"] #定義es服務器的ip
 index => "nginx-%{+YYYY.MM.dd}"  # 定義索引
 }}
 else if "system" in [tags]{
 elasticsearch {
 hosts => ["172.16.15.53:9200"] #定義es服務器的ip
 index => "system-%{+YYYY.MM.dd}"  #定義索引
 }}
 else{
 elasticsearch {
 hosts => ["172.16.15.53:9200"] #定義es服務器的ip
 index => "mysql-%{+YYYY.MM.dd}"  #定義索引
 } }}

啟動logstash
在centos6 使用yum安裝的logstash7.0 啟動時有點問題請注意;參考官網文檔
https://www.elastic.co/guide/en/logstash/7.0/running-logstash.html
使用service logstash start/stop 是無法運行的。由于保護進程原因需要使用initctl 才能關閉,建議使用

ln -s /usr/share/logstash/bin/logstash /bin/
initctl stop logstash
nohup logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/filebeat.conf & #后臺運行指定配置文件
官方啟動說明

啟動后可以在elasticsearch-head中查看是否收到文件,需要注意系統中有日志產生才會生成的文件,可以看到索引文件和原始數據


elasticsearch

原始數據

1.3 、Kibana部署配置

在設置好yum源的機器yum -y install kibana

配置文件/etc/kibana/kibana.yml
server.port: 5601  #端口
server.host: 172.16.15.53  #綁定ip
elasticsearch.hosts: ["http://172.16.15.53:9200","http://172.16.15.26:9200"] #調用的es集群,可以寫多個
logging.dest: /var/log/kibana.log #日志
i18n.locale: "zh-CN" #設置中文

其他配置文件可以根據需要設置
啟動:service kibana start
啟動后注意防火墻設置,訪問http://172.16.15.53:5601
如果出現報錯,無法連接es等,可以稍等會
由于我們沒有啟動x-pack,不需要登錄名和密碼
1. 開始添加索引
左邊欄最后管理——索引模式-創建索引模式-輸入匹配的名稱(例如nginx-*)-下一步選擇時間-最后創建索引模式即可。

添加索引1

添加索引2

添加索引3

添加索引4字段信息

2. 查看剛剛匹配的文件
左側邊欄的dicover
查看索引1

查看索引2

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,412評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,514評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,373評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,975評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,743評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,199評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,262評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,414評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,951評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,780評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,527評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,218評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,649評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,889評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,673評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374