第1章 Elasticsearch安裝部署
1.1 下載軟件包並創建工作目錄
程序下載地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.0-linux-x86_64.tar.gz
下載時間過長,建議登錄至服務器下載;
‘’’ # 下載官方新版本軟件包 # 解壓文件至指定目錄並重命名 # 創建用戶且將elasticsearch程序目錄屬主屬組設置為elasticsearch用戶 ‘’’ # wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.0-linux-x86_64.tar.gz # tar zxvf elasticsearch-7.5.0-linux-x86_64.tar.gz -C /mnt/elasticsearch # useradd elasticsearch && chown -R elasticsearch:elasticsearch /mnt/elasticsearch
1.2 安裝Elasticsearch Head插件
如果不安裝Head插件的話,查詢索引及數據等操作不太方便,所以此處安裝了Head插件
‘’’ 1.# 到官方下載最新版本的nodejs軟件包(https://nodejs.org/en/download/) 2.# 解壓壓縮包 3.# 在/etc/profile文件中配置好環境變量 4.# 執行驗證 5.# 下載head插件並修改配置文件 6.# 安裝服務啟動命令 7.# 啟動命令驗證 8.# 安裝相關程序 9.# 后台啟動head插件 10.# 查看服務是否啟動成功,端口是否存在 ‘’’
1 # 下載過程省略。。
2 # tar zxvf node-v11.10.0-linux-x64.tar.gz -C /usr/local/node-v11.10.0-linux-x64
3 # vim /etc/profile
export NODE_HOME=/usr/local/node-v11.10.0-linux-x64
export NODE_PATH=$NODE_HOME/lib/node_modules
export PATH=$NODE_HOME/bin:$PATH
export PATH
4 # node -v
v11.10.0
5 # cd /mnt/elasticsearch && git clone https://github.com/mobz/elasticsearch-head.git
5 # vim /mnt/elasticsearch/elasticsearch-head/_site/app.js (找到下列行進行修改)
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://ES_IP:PORT"
5 # vim /mnt/elasticsearch/elasticsearch-head/Gruntfile.js (找到下列行進行修改)
hostname: '0.0.0.0',
port: 9100,
base: '.',
keepalive: true
6 # npm install -g grunt
6 # npm install -g grunt-cli --registry=https://registry.npm.taobao.org --no-proxy
7 # grunt --version
grunt-cli v1.2.0
8 # npm install
9 # nohup grunt server &
10 # ss -nlt | grep 9100
1.3 Elasticsearch配置文件修改並啟動
# vim /mnt/elasticsearch/config/elasticsearch.yml cluster.name: my-elasticsearch // 集群名稱(單節點用不上,但集群的話另外的ES也要配置這個名稱) node.name: node-1 // 節點名稱 path.data: /mnt/elasticsearch/data // 數據存放路徑 path.logs: /mnt/logs/elasticsearch // 日志存放路徑 bootstrap.memory_lock: true // 防止es內存被交換出去,避免es使用swap交換分區 network.host: IP // ES的主機IP地址 http.port: 9200 // ES啟動后監聽的端口 cluster.initial_master_nodes: ["node-1"] // 候選主節點的設備地址,來開啟服務時就可以被選為主節點 gateway.recover_after_nodes: 1 // 要等幾個節點啟動完成后,開始初始化數據恢復 # 使head插件可以訪問ES http.cors.enabled: true http.cors.allow-origin: "*" #啟動LRU法則,回收老數據 indices.fielddata.cache.size: 20% #指定節點為master node.master: true # vim /mnt/elasticsearch/config/jvm.options // 調整ES可使用的內存大小 -Xms512M -Xms512M # vim /etc/sysctl.conf #Elasticsearch設置,在ES啟動時,限制ES可以擁有的VMA(虛擬內存區域)的數量 vm.swappiness=0 vm.max_map_count=262144 # sysctl -p // 使配置生效 # cd /mnt/elasticsearch/bin # ./elasticsearch // 前台啟動ES方便發現問題並調試 # nohup ./elasticsearch & (這條命令可等控制台啟動ES無報錯后使用) 訪問http://IP:9100(信息均為Head插件的信息) # 因為我這邊已經有了索引所以我的效果如下,默認應該是空的,但ES狀態為Green正常(黃色也不影響,與分片相關)
第2章 Logstash安裝部署
2.1 下載軟件包並創建工作目錄
程序下載地址:https://artifacts.elastic.co/downloads/logstash/logstash-7.5.0.tar.gz
下載時間過長,建議登錄至服務器下載;
‘’’ 1. # 從官方地址下載程序包 2. # 解壓到指定目錄且重命名 3. # 創建運行用戶並且修改程序目錄屬主屬組 ‘’’ # wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.0.tar.gz # tar zxvf logstash-7.5.0.tar.gz -C /mnt/logstash # useradd logstash && chown -R logstash:logstash /mnt/logstash
2.2 修改配置文件並啟動
# cd /mnt/logstash/config # cp logstash-sample.conf logstash.conf # vim logstash.conf input { tcp { host => "IP" // 本機IP地址 port => "5044" // Logstash所監聽端口號 mode => "server" // 我們為服務端,讓客戶端發送日志 codec => json_lines // 格式固定為json_lines,否則動態變量appname無法生效 } } output { elasticsearch { hosts => "http://IP:9200" // ES的IP+Port action => "index" // 行為是索引 index => "%{[appname]}-%{+YYYY.MM.dd}" // 索引名稱為”服務名+日期” } } # vim jvm.options // 限制logstash使用內存大小 -Xms512m -Xms512m # cd /mnt/logstash/bin # ./logstash -f /mnt/logstash/config/logstash.conf # nohub ./logstash -f /mnt/logstash/config/logstash.conf & (后台啟動logstash,如果擔心有問題也可以先前台啟動調試)
第3章 Logback服務配置
說明:我們的部署流程使用的是Jenkins+Gitlab+Ansible+Python來實現的,所以打包也是由Jenkins直接打包,服務較多,用的基本都是Spring boot框架,但日志方面使用的是Logback,所以以下配置使用的是Logback+Logstash這種方式;
3.1 修改服務配置並且重新編譯
首先在Jenkins的工作空間中找到服務目錄,臨時修改各配置
# cd .jenkins/workspace/$service_name/ # vim pom.xml // 新增下列行 <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>4.10</version> </dependency> # vim src/main/resource/log/logback.xml // logback相關配置文件,可咨詢開發人員,增加以下配置文件
<!-- logstash日志采集配置 --> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>IP:5044</destination> // IP為Logstash服務器的地址 <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"> <customFields>{"appname": "test"}</customFields> // “test”為此服務名稱,這是自定義的,服務名稱是什么就寫什么 </encoder> </appender> <root> // 下面這一段默認存在,所以只用添加省略號之間的那句話即可 <level value="${level}" /> <!--<appender-ref ref="STDOUT" />--> ...... <appender-ref ref="LOGSTASH" /> ...... </root> # mvn clean package // 重新打一個服務jar包上測試環境替換
3.2 登錄ES-Head插件驗證
訪問http://IP:9100,查看索引位置是否存在自己以服務名命名的索引,如果存在則可以進行下一步操作啦,如果沒有的話可以調整一下logstash的配置文件
# vim logstash.conf input { tcp { host => "IP" // 本機IP地址 port => "5044" // Logstash所監聽端口號 mode => "server" // 我們為服務端,讓客戶端發送日志 codec => json_lines // 格式固定為json_lines,否則動態變量appname無法生效 } } output { stdout { codec => json_lines } } # cd /mnt/logstash/bin # ./logstash -f /mnt/logstash/config/logstash.conf # 然后在測試環境重啟一下服務,查看一下logstash前台是否有日志收集過來,如果沒有的話,查看logback配置的logstash的地址及端口與服務所在的服務器之間是否能夠正常通訊;
第4章 Kibana安裝配置及使用
4.1 下載軟件包並創建工作目錄
下載時間過長,建議登錄至服務器下載;
‘’’ 1. # 從官方地址下載程序包 2. # 解壓到指定目錄且重命名 3. # 創建運行用戶並且修改程序目錄屬主屬組 ‘’’ # wget https://artifacts.elastic.co/downloads/kibana/kibana-7.5.0-linux-x86_64.tar.gz # tar zxvf kibana-7.5.0-linux-x86_64.tar.gz -C /mnt/kibana # useradd kibana && chown -R kibana:kibana /mnt/kibana
4.2 修改配置文件並啟動
# cd /mnt/kibana/config # vim kibana.yml server.port: 5601 // kibana監聽的端口號 server.host: "IP" // kibana所在的服務器IP地址 server.maxPayloadBytes: 1048576 // 最大請求負載(單位Byte) elasticsearch.hosts: ["http://IP:Port"] // ES的網絡地址 kibana.index: ".kibana" // kibana默認創建的索引 elasticsearch.requestTimeout: 30000 // 請求連接ES的最大超時時間(單位 ms) pid.file: /mnt/kibana/kibana.pid // pid存放位置 i18n.locale: "zh-CN" // 配置為中文界面 # cd /mnt/kibana/bin # ./kibana // 前台啟動方便發現問題 # nohub ./kibana & // 調試完成后可直接后台運行
4.3 驗證是否啟動成功
1.如果訪問http://IP:5601出現如下界面的話,則說明Kibana啟動成功
2. 創建索引模式用來匹配ES上的索引名稱
3. 紅框中填入你要匹配的規則,類似正則表達式;
4.默認以@timestamp作為篩選字段即可
5. 選中左邊的第一個則代表查看匹配到的數據,第二個紅框代表只看message這個字段的內容
至此,ES+Logstash+logback+Kibana就完成啦!