在Ubuntu中配置Node.js日志告警可以通過多種方式實現,以下是一些常見的方法和步驟:
PM2是一個流行的Node.js進程管理器,它不僅可以管理Node.js應用程序的啟動、停止和重啟,還可以監控應用程序的日志并提供告警功能。
安裝PM2:
sudo apt-get install pm2
啟動應用程序:
pm2 start app.js
查看日志: 使用以下命令查看應用程序的日志:
pm2 logs myapi
設置自動重啟: PM2默認會監視應用程序的狀態并在發生異常時自動重啟。你可以通過以下命令設置重啟策略:
pm2 set pm2hasrestartdelay 1000
pm2 set pm2restartdelay 1000
pm2 set pm2maxrestarts 5
pm2 set pm2memoryrestart 100M
ELK Stack(Elasticsearch, Logstash, Kibana)是一個強大的日志收集和分析解決方案。
安裝ELK Stack:
Elasticsearch:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch
Logstash:
sudo apt-get install logstash
Kibana:
sudo apt-get install kibana
配置Logstash:
創建一個名為 logstash.conf
的配置文件,內容如下:
input {
file {
path "/path/to/your/logfile.log"
start_position "beginning"
}
}
filter {
grok {
match {
"message" "%{COMBINEDAPACHELOG}"
}
}
date {
match [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch {
hosts ["localhost:9200"]
}
stdout { codec rubydebug }
}
將 /path/to/your/logfile.log
替換為你的日志文件路徑。
啟動Logstash:
sudo systemctl start logstash@logstash.service
配置Kibana:
編輯 kibana.yml
文件,設置Elasticsearch的URL:
http.host: "localhost"
啟動Kibana:
sudo systemctl start kibana
使用Kibana進行日志分析和告警: 登錄Kibana界面,創建儀表板并設置告警規則。
Prometheus和Grafana是強大的監控和可視化工具,可以用于收集和分析Node.js應用程序的指標。
安裝Prometheus和Grafana:
Prometheus:
sudo apt-get install prometheus
Grafana:
sudo apt-get install grafana
配置Prometheus:
編輯 prometheus.yml
文件,添加Node.js應用程序的監控配置:
scrape_configs:
- job_name: 'nodejs'
static_configs:
- targets: ['localhost:9090']
安裝Node.js的Prometheus客戶端:
npm install prom-client
在Node.js應用程序中集成Prometheus:
const client = require('prom-client');
const httpRequestDurationMicroseconds = new client.Histogram({
name: 'http_request_duration_seconds',
help: 'Duration of HTTP requests in seconds',
labelnames: ['method', 'route', 'code'],
buckets: [0.10, 5, 15, 50, 100, 200, 300, 400, 500]
});
app.use((req, res, next) => {
const start = Date.now();
res.on('finish', () => {
const duration = Date.now() - start;
httpRequestDurationMicroseconds
.labels(req.method, req.route, res.statusCode)
.observe(duration / 1000);
});
next();
});
使用Grafana進行可視化: 將Prometheus數據連接到Grafana并創建自定義儀表板以可視化請求率、延遲和內存使用等指標。
通過以上方法,你可以在Ubuntu中配置Node.js日志的告警功能,確保應用程序的穩定性和高效運行。