Nginx 是一種非常流行的開源 Web 服務器,為全球數百萬個應用程序提供服務。 Nginx僅次於Apache,這得益於它作為 Web 服務器,有效地提供靜態內容和整體性能的方式在全球流行(它還可以充當反向代理,HTTP緩存和負載平衡器)。而從操作和安全性的角度來看,由於Nginx處於應用程序體系結構的關鍵時刻,所以需要對其進行實時數據監控。
Nginx日誌記錄基礎
Nginx 為用戶提供了各種日誌記錄選項,包括日誌記錄到文件,條件日誌記錄和 syslog 日誌記錄。 Nginx將生成兩種可用於操作監視和故障排除的日誌類型:錯誤日誌和訪問日誌。
默認情況下,這兩個日誌通常都位於/var/log/nginx下,但是此位置可能因系統而異。
# cd /var/log/nginx/
# ls
access.log error.log
Nginx error logs
錯誤日誌包含可用於對操作問題進行故障診斷的診斷信息。 Nginx error_log指令可用於指定日誌文件的路徑和嚴重性,並可在主要,http,郵件,流,服務器,位置上下文(按此順序)中使用。
日誌示例:
2020/04/22 10:06:21 [error] 9289#0: *4128 connect() failed (111: Connection refused) while connecting to upstream, client: 101.133.213.44, server: notest004, request: "GET /admin/ HTTP/1.1", upstream: "http://121.41.222.215:3000/admin/", host: "121.41.222.215"
Nginx access logs
訪問日誌包含有關發送到 Nginx 並由 Nginx 服務的所有請求的信息。 因此,它們是用於性能監控以及安全性的寶貴資源。 Nginx 訪問日誌的默認格式是組合格式,但是在分發之間可能會有所不同。 與錯誤日誌一樣,您可以使用 access_log 偽指令來設置日誌文件路徑和日誌格式。
日誌示例
47.97.73.90 - - [22/Apr/2020:06:26:39 +0800] "GET / HTTP/1.1" 502 559 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/69.0.3494.0 Safari/537.36" "-"
準備工作
將 Nginx 日誌傳送到阿里雲 Elasticsearch 最簡單方法是使用 Filebeat。本次教程,將會在阿里雲服務環境下,通過在雲服務器ECS上安裝 Nodejs、Nignx、filebeat,同時開通阿里雲 Elasticsearch 服務。
• 開通阿里雲 ECS 服務,開通阿里雲 Elasticsearch 同一VPC下的 Centos 7.4 版本的 ECS 環境;
• 關閉防火牆以及selinux安全防護工具(ECS為默認關閉狀態);
• 開放 ECS 安全組端口,確保 Nodejs 訪問 3000 端口,Nginx 訪問 80 端口;
• 開通阿里雲 Elasticsearch 6.7 環境,確保控制檯開通自動創建索引功能,使用創建的賬號密碼登錄 Kibana;
• 監測阿里雲 Elasticsearch 安全配置是否開放白名單限制;
安裝 Nodejs
Nodejs 是一個簡單的基於Express框架的web服務器,我們可以在阿里雲ECS 服務器上寫入如下指令來安裝 Nodejs。
# yum install nodejs
# yum install -y npm
#####查看node及npm版本#######
# node -v
# npm -v
####部署nodejs 的web服務器,從git上下載一個簡單的nodejs代碼
# git clone https://github.com/liu-xiao-guo/samplenodejs
####進入samplenodejs根目錄運行如下命令####
# cd samplenodejs/
# npm install
# npm start
在 ECS 安全組中開啟3000 訪問端口,並在瀏覽器中輸入 ECS IP訪問地址:http://121.41.xx.xx:3000/hello
如果在控制檯及瀏覽器能看到如下輸出,表明 Nodejs 應用已經被成功運行。
安裝 Nignx 並設置為反向代理
我們在 阿里雲ECS 服務器上寫入如下指令來安裝 Nignx
# yum install nginx
####配置反向代理####
# vim /etc/nginx/nginx.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name notest004;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://121.40.100.115:3000;
index index.html index.htm;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
####啟動nignx###
# systemctl start nginx
如果我們想停止nginx,我們可以使用如下的命令:systemctl stop nginx
要在停止時啟動Web服務器,請鍵入:systemctl start nginx
要停止然後再次啟動該服務,請鍵入: systemctl restart nginx
下載並安裝 Filebeat
在阿里雲ECS環境中,下載filebeat安裝包,並解壓。
安裝
# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.7.0-linux-x86_64.tar.gz
# tar -zxvf filebeat-6.7.0-linux-x86_64.tar.gz
配置
修改filebeat-6.7.0-linux-x86_64/filebeat.yml
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["es-cn-0pp19tb10000688c8p.elasticsearch.aliyuncs.com:9200"]
username: "elastic"
password: "Elastic123"
setup.kibana:
host: "https://es-cn-0pp19tb1000888c8p.kibana.elasticsearch.aliyuncs.com:5601"
啟動 Nginx 模塊
# ./filebeat modules enable nginx
配置模塊
為了能夠使得我們的nginx模塊能夠正確地被 Kibana Dashboard 顯示,我們必須運行如下的命令。# ./filebeat setup
至此我們的安裝都已經完成。
Kibana Dashboard 展示
進入 Kibana,點擊 Dashboard 選擇已導入的 Nginx 模塊
我們點擊“【Filebeat Nginx】Overview”
至此,我們完成了對 Nginx 日誌的監控。在 Kibana Dashboard 我們可以看到 Nginx 的所有信息。
聲明:本文由“Beats:使用Elastic Stack對Nginx Web服務器監控”基於阿里雲服務環境授權改編
原文作者:Elastic 中國社區佈道師——劉曉國
合作編輯: Lettie/大禹
出處鏈接:https://me.csdn.net/UbuntuTouch
【阿里雲Elastic Stack】100%兼容開源ES,獨有9大能力
相關活動
更多折扣活動,請訪問阿里雲 Elasticsearch 官網
阿里雲 Elasticsearch 商業通用版,1核2G ,SSD 20G首月免費
阿里雲 Logstash 2核4G首月免費