監視您的JHipster應用程式
JHipster提供了幾個選項來監視您執行應用程式。
摘要
生成的儀表板
對於monoliths和閘道器,JHipster會生成多個儀表板來監視每個應用程式。這些儀表板在執行時可用,並且是進行一些簡單監視的最簡單方法。
指標儀表板
指標儀表板使用Micrometer來提供應用程式效能的詳細檢視。
它提供以下指標:
- JVM
- HTTP請求
- 快取使用率
- 資料庫連線池
透過單擊JVM執行緒指標旁邊的Expand按鈕,您將獲得正在執行的應用程式的執行緒轉儲,這對於找出阻塞的執行緒非常有用。
健康狀況儀表板
健康狀況儀表板使用Spring Boot Actuator的執行狀況端點來提供有關應用程式各個部分的執行狀況訊息。Spring Boot Actuator提供了許多開箱即用的健康檢查,您可以新增特定於應用程式的執行狀況檢查。
日誌儀表板
日誌儀表板允許在執行時管理正在執行的應用程式的Logback設定。 您可以透過單擊按鈕來更改Java軟體套件的日誌級別,這在開發和生產中都非常方便。
JHipster Registry
JHipster Registry在此處具有自己單獨的文件頁面。
它主要提供與上一部分相同的監視儀表板,但可在單獨的伺服器上工作。因此,設定起來有點複雜,但是強烈建議讓儀表板與正在執行的應用程式隔離執行:否則,當應用程式出現故障時,它們將不可用。
ELK (Elasticsearch, Logstash, Kibana) Stack
ELK技術棧通常用於日誌聚合和搜尋,它由以下元件組成:
- Elasticsearch 用於索引資料(日誌和指標)
- Logstash 管理和處理從應用程式收到的日誌
- Kibana 用一個漂亮的介面視覺化日誌
將日誌轉發到Logstash
要設定JHipster應用程式將其日誌轉發到Logstash,請在它們的application-dev.yml
或application-prod.yml
中啟用logstash日誌記錄:
jhipster:
logging:
logstash:
enabled: true
host: localhost
port: 5000
queueSize: 512
為了收集這些日誌,可以在Logstash端提供一個簡單的logstash.conf
檔案:
input {
tcp {
port => "5000"
type => syslog
codec => json_lines
}
}
output {
elasticsearch {
hosts => ["${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}"]
index => "logs-%{+YYYY.MM.dd}"
}
}
}
有關如何設定ELK技術棧的更多訊息,請參考官方Elastic文件 。
將指標轉發到受支援的第三方監視系統(JMX,Prometheus)
預設情況下,JHipster以Prometheus 格式公開應用程式指標。
它在management/prometheus
下公開。
還可以透過spring boot actuator 將指標轉發到備用系統。
如果您想停用暴露指標端點,可以在src/main/resources/application.yml
中停用它。
management:
metrics:
export:
prometheus:
enabled: false
Prometheus端點預設情況下不受保護。 如果您想透過Spring Security保護它,則可以透過向Prometheus端點新增基本身份驗證來實現,因為Prometheus可以與受基本身份驗證保護的抓取端點一起使用。
建立一個新的設定檔案(例如BasicAuthConfiguration.java
)。
@Configuration
@Order(1)
@ConditionalOnProperty(prefix = "management", name = "metrics.export.prometheus.enabled")
public class BasicAuthConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/management/prometheus/**")
.authorizeRequests()
.anyRequest().hasAuthority(AuthoritiesConstants.ADMIN)
.and()
.httpBasic().realmName("jhipster")
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().csrf().disable();
}
}
您可以使用預設的admin/admin
登入。您必須在prometheus設定中新增以下設定,以便prometheus仍然可以抓取您的應用程式。
basic_auth:
username: "admin"
password: "admin"
您可以透過docker-compose -f src/main/docker/monitoring.yml up -d
在本地電腦上啟動預設定的Grafana和Prometheus實例,
以檢視預設定的jvm/micrometer儀表板 。
注意:與以前的JHipster版本不同,JHipster 5.8指標報告開箱即用僅支援JMX和Prometheus。 請檢視Metrics官方文件,以獲取有關如何設定其他報告程式(如Graphite 的說明。。
Zipkin
JHipster應用程式可以透過Spring Cloud Sleuth與Zipkin整合,從而為您的微服務架構提供分散式跟蹤。要啟用Zipkin跟蹤,請使用 zipkin
maven/gradle設定檔案打包您的應用程式,並將spring.zipkin.enabled
屬性設定為true。這將觸發向Zipkin伺服器的跨度報告,並且還將向請求標頭和日誌新增相關性ID(TraceId,SpanId和ParentId)。
Zipkin還提供了服務依賴關係圖功能,使您可以直觀地觀察微服務之間的依賴關係。
有關如何設定您的應用程式以將跟蹤記錄報告給Zipkin的更多訊息,請遵循官方的Spring Cloud Sleuth文件 。