ELK部署:
介紹:
ELK是Elasticsearch + Logstash + Kibana 這種架構的簡寫。這是一種日誌分平臺析的架構。從前咱們用shell三劍客(grep, sed, awk)來分析日誌, 雖然也能對付大多數場景,但當日志量大,分析頻繁,而且使用者可能不會shell三劍客的狀況下, 配置方便,使用簡單,而且分析結果更加直觀的工具(平臺)就誕生了,它就是ELK。 ELK是開源的,而且社區活躍,用戶衆多
架構說明:
一、 Elasticsearch + Logstash + Kibana
這是一種最簡單的架構。這種架構,經過logstash收集日誌,Elasticsearch分析日誌,而後在Kibana(web界面)中展現。這種架構雖然是官網介紹裏的方式,可是每每在生產中不多使用。
2 、Elasticsearch + Logstash + filebeat + Kibana
與上一種架構相比,這種架構增長了一個filebeat模塊。filebeat是一個輕量的日誌收集代理,用來部署在客戶端,優點是消耗很是少的資源(較logstash), 因此生產中,每每會採起這種架構方式,可是這種架構有一個缺點,當logstash出現故障, 會形成日誌的丟失。
三、 Elasticsearch + Logstash + filebeat + redis(也能夠是其餘中間件,好比kafka) + Kibana
這種架構是上面那個架構的完善版,經過增長中間件,來避免數據的丟失。當Logstash出現故障,日誌仍是存在中間件中,當Logstash再次啓動,則會讀取中間件中積壓的日誌。目前我司使用的就是這種架構,我我的也比較推薦這種方式。html
步驟:
java
1、安裝jdk環境 (elasticsearch、logstash服務都須要jdk環境)python
jdk介紹:
a、JDK (Java Development Kit) 是 Java 語言的軟件開發工具包(SDK)。在JDK的安裝目錄下有一個jre目錄,裏面有兩個文件夾bin和lib,在這裏能夠認爲bin裏的就是jvm,lib中則是jvm工做所須要的類庫,而jvm和 lib合起來就稱爲jre。
b、JRE(Java Runtime Environment,Java運行環境),包含JVM標準實現及Java核心類庫。JRE是Java運行環境,並非一個開發環境,因此沒有包含任何開發工具(如編譯器和調試器)
c、JVM 是Java Virtual Machine(Java虛擬機)的縮寫,JVM是一種用於計算設備的規範,它是一個虛構出來的計算機,是經過在實際的計算機上仿真模擬各類計算機功能來實現的。
1. 下載JDK
JDK官網下載地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
請根據本身服務器狀況下載對應版本,linux是下載tar.gz結尾的包linux
2. 上傳linux服務器
把JDK包上傳服務器有多種方法,我是用Xshell自帶的ftp功能上傳服務器,比較簡單,這邊很少講。
上傳完成後,解壓到/usr/local/nginx
tar xf jdk-8u191-linux-x64.tar.gz -C /usr/local/ #在/usr/local/下會生成一個jdk的目錄
3.設置環境變量
在/etc/profile配置文件中,在底部添加以下配置git
vim /etc/profile #set java environment JAVA_HOME=/usr/local/jdk1.8 CLASSPATH=.:$JAVA_HOME/lib.tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH [root@localhost ~]# source /etc/profile #加載新聲明的環境變量
4.查看版本:github
[root@localhost ~]# java -version java version "1.8.0_162" Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
#獲取以上信息,表示安裝完成web
2、安裝redisredis
介紹:
REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存儲系統。
Redis是一個開源的使用ANSI C語言編寫、遵照BSD協議、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。shell
它一般被稱爲數據結構服務器,由於值(value)能夠是字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型
安裝步驟:
一、安裝環境,下載,解壓,編譯
二、修改配置
三、啓動,登陸
安裝環境、下載、解壓、編譯
# 下載
wget http://download.redis.io/redis-stable.tar.gz yum -y install gcc tar xf redis-stable.tar.gz -C /usr/local/ cd /usr/local/redis-stable
# 編譯安裝
make && make install
修改配置:
cd /usr/local/redis-stable vim redis.conf # 表示只能夠本機訪問,要是遠程訪問須要註釋掉(前面加#號) bind 127.0.0.1 # 改成no 能夠不用輸入密碼登錄 protected-mode yes # 修改端口 port 6379 # 改成 yes 後臺運行 daemonize no # 鏈接密碼修改,foobared密碼 requirepass foobared
啓動登陸:
cd /usr/local/redis-stable # 啓動 ./src/redis-server ./redis.conf # 關閉 ./src/redis-cli -p 6379 shutdown # 登陸 ./src/redis-cli -h 127.0.0.1 -p 6379
3、安裝elasticsearch
介紹
Elasticsearch 是一個分佈式可擴展的實時搜索和分析引擎,一個創建在全文搜索引擎 Apache Lucene(TM) 基礎上的搜索引擎.固然 Elasticsearch 並不只僅是 Lucene 那麼簡單,它不只包括了全文搜索功能,還能夠進行如下工做:
1.分佈式實時文件存儲,並將每個字段都編入索引,使其能夠被搜索。
2.實時分析的分佈式搜索引擎。
3.能夠擴展到上百臺服務器,處理PB級別的結構化或非結構化數據。
安裝步驟
1.下載,解壓
2.修改linux內核,設置資源參數
3.修改配置
4.啓動elasticsearch、自啓動腳本
5.安裝中文分詞
下載,解壓
# 下載
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.1.tar.gz cd /data tar xf elasticsearch-6.6.1.tar.gz
# 建立用戶,須要以普通用戶啓動
useradd elk
# 建立目錄,用於存放數據和日誌
cd /data/elasticsearch-6.6.1 mkdir data logs
修改linux內核,設置資源參數
vim /etc/sysctl.conf # 增長 vm.max_map_count=655360
# 執行如下命令,確保生效配置生效:
sysctl -p
設置資源參數
vim /etc/security/limits.conf # 修改 * soft nofile 65536 * hard nofile 131072 * soft nproc 65536 * hard nproc 131072
# 設置用戶資源參數
vim /etc/security/limits.d/20-nproc.conf # 設置elk用戶參數 elk soft nproc 65536
修改配置
cd /data/elasticsearch-6.6.1 vim config/elasticsearch.yml #修改,取消如下配置註釋 path.data: /data/elasticsearch-6.6.1/data #數據目錄 path.logs: /data/elasticsearch-6.6.1/logs network.host: 0.0.0.0 #容許哪一個IP訪問,0表明全部 http.port: 9200
chown -R elk:elk elasticsearch-6.6.1
啓動elasticsearch
su elk cd /data/elasticsearch-6.6.1 # 加-d:後臺啓動 ./bin/elasticsearch
自啓動腳本
#!/bin/bash su - elk /data/elasticsearch-6.6.1/bin/elasticsearch -d
安裝中文分詞
# 下載 wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.1/elasticsearch-analysis-ik-6.6.1.zip # 建立ik目錄 mkdir /data/elasticsearch-6.6.1/plugins/ik mv elasticsearch-analysis-ik-6.6.1.zip elasticsearch-6.6.1/plugins/ik cd /data/elasticsearch-6.6.1/plugins/ik unzip elasticsearch-analysis-ik-6.6.1.zip
4、安裝kibana(將日誌以web界面形式展現)
cd /data # 下載 wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.1-linux-x86_64.tar.gz # 解壓 tar xf kibana-6.6.1-linux-x86_64.tar.gz cd kibana-6.6.1-linux-x86_64
配置
vim config/kibana.yml # 取消如下注釋,並修改對應IP # 服務端口 server.port: 5601 # 指明服務運行的地址 server.host: "10.10.10.20" # 指明elasticsearch運行的地址和端口 elasticsearch.hosts: ["http://10.10.10.20:9200"] # 指明kibana使用的索引,這個是自定義的 kibana.index: ".kibana"
# 啓動,若是elasticsearch有kibana數據,則配置成功
/data/kibana-6.6.1-linux-x86_64/bin/kibana
5、安裝filebeat
#該組件爲日誌收集服務,安裝在須要收集日誌的服務器上
# 下載
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.1-linux-x86_64.tar.gz
# 解壓
tar xf filebeat-6.6.1-linux-x86_64.tar.gz cd filebeat-6.6.1-linux-x86_64
配置
vim filebeat.yml # 配置如下設置 ##該配置在input中定義多個日誌路徑,用於以後的logstash過濾,匹配不一樣索引 filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log fields: log_source: sys - type: log enabled: true paths: - /var/log/httpd/*_log fields: log_source: nginx output.redis: hosts: ["10.10.10.20:6379"] password: "" db: 0 key: "syslog"
日誌輸入{
filebeat.inputs: 模塊用來指定日誌文件的來源
type: 指定日誌類型,在這裏是log, 應該也能夠是json。
paths指定日誌文件路徑。
fields: 是打標記,主要爲了後面日誌分析查找的方便,存儲的時候也會根據fields分類存儲,相同fields的數據存在同一個redis key中
}
日誌輸出{
output.redis:指定輸出到redis
hosts:指定redis主機,能夠指定多臺。
password:redis密碼,redis默認沒有密碼,在這裏設爲空就行
key:指定存入redis中的key
db: 指定存在redis中的db編號(redis默認安裝有16個databases,0~15, 默認是存儲在db0中的)
}
# 啓動
./filebeat -e -c filebeat.yml
6、安裝logstash(日誌收集)
# 下載並解壓
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.6.1.tar.gz tar xf logstash-6.6.1.tar.gz cd logstash-6.6.1
# 建立配置文件,配置如下設置
vim config/syslog.conf #該配置在output中使用fields標籤匹配不一樣索引,從而建立倆個不一樣的索引給kibana使用 input { redis { host => "10.10.10.20" port => 6379 data_type => "list" key => "syslog" db => 0 } } output { if [fields][log_source] == 'sys' { elasticsearch { hosts => ["http://10.10.10.20:9200"] index => "syslog-%{+YYYY.MM.dd}" id => "syslog_id" } } if [fields][log_source] == 'nginx' { elasticsearch { hosts => ["http://10.10.10.20:9200"] index => "nginxlog-%{+YYYY.MM.dd}" id => "nginx_id" } } }
1.key => 「syslog」 對應filebeat.yml配置中,redis設置的key
2.if [fields][log_source] == ‘sys’ 對應filebeat.yml配置中,input設置fields標籤
3.index => 「nginxlog-%{+YYYY.MM.dd}」 建立elasticsearch索引
# 啓動
./bin/logstash -f config/syslog.conf
訪問kibana,並添加索引
訪問:IP:5601,沒有密碼,密碼認證須要收費,可使用nginx代理認證
建立索引:
點擊 management
點擊 Index Patterns
點擊 Create index pattern
在當前配置頁中會顯示能添加的索引,若是沒有顯示,請查看logstash和filebeat配置
添加索引:nginxlog-* , 該索引爲elasticsearch中的索引
下一步:選擇@timestamp
點擊:Create index pattern 建立成功
查看日誌:
點擊:Discover
當前頁就是搜索日誌頁面,有切換索引,添加搜索標籤,選擇時間範圍等功能
kibana漢化
Kibana在6.7版本以上,支持了多種語言。而且自帶在安裝包裏,以前版本須要下載中文包安裝
Kibana在6.7版本如下
wget https://mirrors.yangxingzhen.com/kibana/Kibana_Hanization.tar.gz tar xf Kibana_Hanization.tar.gz cd Kibana_Hanization/old/ python main.py /data/kibana-6.6.1-linux-x86_64 Kibana在6.7版本以上 vim /data/kibana-6.6.1-linux-x86_64/config/kibana.yml # 取消註釋 i18n.locale: "zh-CN"