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首月免費