日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Prometheus+Grafana微服務(wù)監(jiān)控告警系統(tǒng)

無論是使用SpringBootAdmin還是使用Prometheus+Grafana都離不開SpringBoot提供的核心組件Actuator。提到Actuator,又不得不提Micrometer,從SpringBoot2.x開始,Actuator的功能實(shí)現(xiàn)都是基于Micrometer的。Micrometer通過儀表客戶端為各種健康監(jiān)控系統(tǒng)提供了一個(gè)簡單的外觀Facade(Facade模式是23種設(shè)計(jì)模式中的一種,也叫外觀模式 / 門面模式,F(xiàn)acade(外觀)模式為子系統(tǒng)中的各類(或結(jié)構(gòu)與方法)提供一個(gè)簡明一致的界面,隱藏子系統(tǒng)的復(fù)雜性,使子系統(tǒng)更加容易使用。它是為子系統(tǒng)中的一組接口所提供的一個(gè)一致的界面。)。類似于SLF4J,我們可以自由選擇log4j2、logback等日志框架一樣,Micrometer支持靈活切換或者多種并存的健康監(jiān)控系統(tǒng)檢測基于 JVM 的應(yīng)用程序。

新寧ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

Micrometer提供的功能:

  • 尺寸指標(biāo)(Dimensional Metrics):Micrometer 為計(jì)時(shí)器、儀表、計(jì)數(shù)器、分布摘要和長任務(wù)計(jì)時(shí)器提供了與供應(yīng)商無關(guān)的接口,具有維度數(shù)據(jù)模型,當(dāng)與維度監(jiān)控系統(tǒng)配對(duì)時(shí),允許有效訪問特定命名的度量,并具有向下鉆取的能力跨越其維度。
  • 預(yù)配置綁定(Pre-configured Bindings):開箱即用的緩存、類加載器、垃圾收集、處理器利用率、線程池等工具,更適合可操作的洞察力。
  • Spring集成(Integrated into Spring):Micrometer 是一個(gè)檢測庫,支持從 Spring Boot 應(yīng)用程序交付應(yīng)用程序指標(biāo)。

Micrometer支持的監(jiān)控系統(tǒng):

AppOptics, Azure Monitor, Netflix Atlas, CloudWatch, Datadog, Dynatrace, Elastic, Ganglia, Graphite, Humio, Influx/Telegraf, JMX, KairosDB, New Relic, Prometheus, SignalFx, Google Stackdriver, StatsD, and Wavefront。

上文中我們說明了如何搭建Spring Boot Admin的微服務(wù)健康檢查監(jiān)控系統(tǒng),簡單的應(yīng)用使用Spring Boot Admin即可,復(fù)雜的集群應(yīng)用建議使用Micrometer 支持的多種靈活可配的監(jiān)控系統(tǒng),這里我們選擇目前使用比較廣泛的Prometheus+Grafana監(jiān)控系統(tǒng)。兩種方式都能夠?qū)崿F(xiàn)微服務(wù)的健康檢查統(tǒng)計(jì)展示和告警,Prometheus+Grafana在功能和界面美觀上更強(qiáng)大一些,并且可以查看歷史數(shù)據(jù),而SpringBootAdmin優(yōu)點(diǎn)是部署十分簡單,不需要部署太多的環(huán)境軟件,本身就是一個(gè)微服務(wù)。在兩種方式的選擇上,如果是小的項(xiàng)目,比如單體應(yīng)用,雙擊熱備,前期可以先使用SpringBootAdmin,隨著業(yè)務(wù)的發(fā)展,可以考慮使用Prometheus+Grafana。

一、Prometheus+Grafana相關(guān)介紹

1、Prometheus介紹

Prometheus: 是一款開源的系統(tǒng)和服務(wù)監(jiān)控系統(tǒng),屬于云原生計(jì)算基金會(huì)項(xiàng)目。它可以通過設(shè)置的時(shí)間間隔從配置的目標(biāo)系統(tǒng)采集指標(biāo)數(shù)據(jù),保存指標(biāo)數(shù)據(jù)(時(shí)序數(shù)據(jù)庫),評(píng)估規(guī)則表達(dá)式,顯示結(jié)果,并在檢測到指定條件時(shí)觸發(fā)警報(bào)。

  • 多維數(shù)據(jù)模型:Prometheus 實(shí)現(xiàn)了一個(gè)高維數(shù)據(jù)模型,它從根本上將所有數(shù)據(jù)存儲(chǔ)為時(shí)間序列:屬于同一指標(biāo)和同一組標(biāo)記維度的時(shí)間戳值。 除了存儲(chǔ)的時(shí)間序列,Prometheus 可能會(huì)生成臨時(shí)派生的時(shí)間序列作為查詢的結(jié)果。
  • 高效存儲(chǔ):Prometheus 以高效的自定義格式將時(shí)間序列存儲(chǔ)在內(nèi)存和本地磁盤上(內(nèi)置TSDB數(shù)據(jù)庫,同時(shí)也提供了遠(yuǎn)程存儲(chǔ)接口),擴(kuò)展是通過功能分片和聯(lián)合來實(shí)現(xiàn)的。
  • PromQL:一種強(qiáng)大且靈活的查詢語言,PromQL 允許對(duì)收集的時(shí)間序列數(shù)據(jù)進(jìn)行切片和切塊,以生成臨時(shí)圖形、表格和警報(bào)。
  • 不依賴分布式存儲(chǔ),操作簡單:每臺(tái)服務(wù)器的可靠性都是獨(dú)立的,僅依賴于本地存儲(chǔ)。用 Go 編寫,所有二進(jìn)制文件都是靜態(tài)鏈接的,易于部署。
  • HTTP拉取模型: 通過抓取HTTP端點(diǎn)采集時(shí)序數(shù)據(jù)。
  • 通過用于批處理作業(yè)的中間網(wǎng)關(guān)支持推送時(shí)間序列數(shù)據(jù)。
  • 通過服務(wù)發(fā)現(xiàn)或靜態(tài)配置發(fā)現(xiàn)目標(biāo)。
  • 出色的可視化:Prometheus 有多種數(shù)據(jù)可視化模式,內(nèi)置表達(dá)式瀏覽器、Grafana 集成和控制臺(tái)模板語言。
  • 支持分層和水平聯(lián)合。

2、Grafana介紹

雖然Prometheus也支持可視化界面展示,但是界面不美觀,更多人選擇使用Grafana來展示Prometheus的監(jiān)控?cái)?shù)據(jù)。

Grafana:Grafana是一款開源的數(shù)據(jù)可視化工具。它提供對(duì)數(shù)據(jù)指標(biāo)的查詢、可視化和告警,它可以實(shí)現(xiàn)無論數(shù)據(jù)存儲(chǔ)在哪里,都可以與您的團(tuán)隊(duì)創(chuàng)建、探索和共享十分美觀的儀表盤數(shù)據(jù)可視化,并培養(yǎng)數(shù)據(jù)驅(qū)動(dòng)的文化。

  • 可視化:具有多種選項(xiàng)的快速靈活的客戶端圖表。面板插件提供了許多不同的方式來可視化指標(biāo)和日志。
  • 動(dòng)態(tài)儀表板:使用在儀表板頂部顯示為下拉列表的模板變量創(chuàng)建動(dòng)態(tài)和可重復(fù)使用的儀表板。
  • 探索指標(biāo):通過即席查詢(是用戶根據(jù)自己的需求,靈活地選擇查詢條件,系統(tǒng)能夠根據(jù)用戶的選擇生成相應(yīng)的統(tǒng)計(jì)報(bào)表)和動(dòng)態(tài)鉆取探索您的數(shù)據(jù)。拆分視圖并并排比較不同的時(shí)間范圍、查詢和數(shù)據(jù)源。
  • 探索日志:體驗(yàn)從指標(biāo)切換到帶有保留標(biāo)簽過濾器的日志的魔力??焖偎阉魉腥罩净?qū)崟r(shí)流式傳輸它們。
  • 告警:為您最重要的指標(biāo)直觀地定義告警規(guī)則。Grafana 將持續(xù)評(píng)估并向 Slack、PagerDuty、VictorOps、OpsGenie 等系統(tǒng)發(fā)送通知。
  • 混合數(shù)據(jù)源:在同一個(gè)圖中混合不同的數(shù)據(jù)源!您可以基于每個(gè)查詢指定數(shù)據(jù)源。這甚至適用于自定義數(shù)據(jù)源。

二、使用Docker安裝配置Prometheus+Grafana

我們使用Docker來安裝需要的Prometheus+Grafana,通常情況下,我們會(huì)根據(jù)業(yè)務(wù)需求來安裝需要的組件,在這里健康監(jiān)控系統(tǒng)也是這樣,如果我們的微服務(wù)部署在Docker容器中,那么我們需要安裝cAdvisor組件來監(jiān)控Docker相關(guān)數(shù)據(jù)指標(biāo),如果要采集系統(tǒng)環(huán)境數(shù)據(jù),那么需要安裝 Node Exporter 組件,而且告警組件也是和Prometheus分開的,如果需要告警功能,同樣需要安裝Alertmanager組件,這一連串組件的組合,自然讓我們想到使用docker-compose來安裝我們需要所有組件。

參考:
https://github.com/stefanprodan/dockprom 我們編寫兩個(gè)docker-compose文件。

  • 服務(wù)端:數(shù)據(jù)采集、展示、告警,安裝 prometheus、grafana、cadvisor、alertmanager、node-exporter、caddy。
  • 客戶端: 只需安裝 cadvisor、node-exporter用于采集本機(jī)數(shù)據(jù)。

1、準(zhǔn)備Docker宿主主機(jī)的安裝部署目錄

# 創(chuàng)建prometheus掛在目錄mkdir /data/monitor/prometheuscd /data/monitor/prometheustouch prometheus.ymlmkdir /data/monitor/prometheus_data# 創(chuàng)建alertmanager掛在目錄mkdir -p /data/monitor/alertmanager# 創(chuàng)建grafana掛在目錄mkdir -p /data/monitor/grafana_datamkdir -p /data/monitor/grafana/provisioning/dashboardsmkdir -p /data/monitor/grafana/provisioning/datasources

2、編寫docker-compose-prometheus-server.yml,此處為服務(wù)編排模板參考,因某些原因docker鏡像倉庫無法訪問,需切換到能夠訪問到的鏡像倉庫

docker-compose-prometheus-server.yml:

version: '3.2'networks:  monitor-net:    driver: bridgevolumes:    prometheus_data: {}    grafana_data: {}services:  prometheus:    image: prom/prometheus:latest    container_name: prometheus    volumes:      - /data/monitor/prometheus:/etc/prometheus      - /data/monitor/prometheus_data:/prometheus    command:      - '--config.file=/etc/prometheus/prometheus.yml'      - '--storage.tsdb.path=/prometheus'      - '--web.console.libraries=/etc/prometheus/console_libraries'      - '--web.console.templates=/etc/prometheus/consoles'      - '--storage.tsdb.retention.time=200h'      - '--web.enable-lifecycle'    restart: unless-stopped    expose:      - 9090    networks:      - monitor-net    labels:      org.label-schema.group: "monitoring"  alertmanager:    image: prom/alertmanager:latest    container_name: alertmanager    volumes:      - /data/monitor/alertmanager:/etc/alertmanager    command:      - '--config.file=/etc/alertmanager/config.yml'      - '--storage.path=/alertmanager'    restart: unless-stopped    expose:      - 9093    networks:      - monitor-net    labels:      org.label-schema.group: "monitoring"  nodeexporter:    image: prom/node-exporter:latest    container_name: nodeexporter    volumes:      - /proc:/host/proc:ro      - /sys:/host/sys:ro      - /:/rootfs:ro    command:      - '--path.procfs=/host/proc'      - '--path.rootfs=/rootfs'      - '--path.sysfs=/host/sys'      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'    restart: unless-stopped    expose:      - 9100    networks:      - monitor-net    labels:      org.label-schema.group: "monitoring"  cadvisor:    image: gcr.io/cadvisor/cadvisor:latest    container_name: cadvisor    privileged: true    devices:      - /dev/kmsg:/dev/kmsg    volumes:      - /:/rootfs:ro      - /var/run:/var/run:ro      - /sys:/sys:ro      - /var/lib/docker:/var/lib/docker:ro      #- /cgroup:/cgroup:ro #doesn't work on MacOS only for Linux    restart: unless-stopped    expose:      - 8080    networks:      - monitor-net    labels:      org.label-schema.group: "monitoring"  grafana:    image: grafana/grafana:latest    container_name: grafana    volumes:      - /data/monitor/grafana_data:/var/lib/grafana      - /data/monitor/grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards      - /data/monitor/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources    environment:      - GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin}      - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}      - GF_USERS_ALLOW_SIGN_UP=false    restart: unless-stopped    expose:      - 3000    networks:      - monitor-net    labels:      org.label-schema.group: "monitoring"  pushgateway:    image: prom/pushgateway:latest    container_name: pushgateway    restart: unless-stopped    expose:      - 9091    networks:      - monitor-net    labels:      org.label-schema.group: "monitoring"  caddy:    image: caddy:latest    container_name: caddy    ports:      - "3000:3000"      - "9090:9090"      - "9093:9093"      - "9091:9091"    volumes:      - ./caddy:/etc/caddy    environment:      - ADMIN_USER=${ADMIN_USER:-admin}      - ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}      - ADMIN_PASSWORD_HASH=${ADMIN_PASSWORD_HASH:-JDJhJDE0JE91S1FrN0Z0VEsyWmhrQVpON1VzdHVLSDkyWHdsN0xNbEZYdnNIZm1pb2d1blg4Y09mL0ZP}    restart: unless-stopped    networks:      - monitor-net    labels:      org.label-schema.group: "monitoring"

在服務(wù)端安裝執(zhí)行安裝命令:

docker-compose -f docker-compose-prometheus-server.yml up -d

執(zhí)行會(huì)報(bào)錯(cuò),因無法訪問部分docker鏡像庫:Error response from daemon: Get “https://gcr.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers),請(qǐng)自行設(shè)置將docker切換到能夠訪問的云服務(wù)器。

3、編寫docker-compose-prometheus-client.yml,此處為服務(wù)編排模板參考,因某些原因docker鏡像倉庫無法訪問,需切換到能夠訪問到的鏡像倉庫

version: '3.2'services:  nodeexporter:    image: prom/node-exporter:latest    container_name: nodeexporter    volumes:      - /proc:/host/proc:ro      - /sys:/host/sys:ro      - /:/rootfs:ro    command:      - '--path.procfs=/host/proc'      - '--path.rootfs=/rootfs'      - '--path.sysfs=/host/sys'      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'    restart: unless-stopped    network_mode: host    labels:      org.label-schema.group: "monitoring"  cadvisor:    image: gcr.io/cadvisor/cadvisor:latest    container_name: cadvisor    privileged: true    devices:      - /dev/kmsg:/dev/kmsg    volumes:      - /:/rootfs:ro      - /var/run:/var/run:ro      - /sys:/sys:ro      - /var/lib/docker/:/var/lib/docker:ro      - /cgroup:/cgroup:ro    restart: unless-stopped    network_mode: host    labels:      org.label-schema.group: "monitoring"

在服務(wù)端安裝執(zhí)行安裝命令:

docker-compose -f docker-compose-prometheus-server.yml up -d

同在服務(wù)端執(zhí)行一樣,這里執(zhí)行會(huì)報(bào)錯(cuò),請(qǐng)自行切換可以訪問到的鏡像倉庫。

4、以上為生產(chǎn)環(huán)境所需的安裝方式配置參考,下面我們使用Docker進(jìn)行最小安裝,來測試運(yùn)行Prometheus+Grafana

執(zhí)行安裝Prometheus:

docker run -d \    --restart=always \    -u root \    --name prometheus \    -p 9090:9090 \    -v /etc/localtime:/etc/localtime \    -v /data/monitor/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \    -v /data/monitor/prometheus_data:/prometheus \    prom/prometheus

執(zhí)行安裝Grafana:

docker run -d \    --restart=always \    -u root \    --name grafana \    -p 3000:3000 \    -v /data/grafana_data:/var/lib/grafana \    -v /data/grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards \    -v /data/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources \    -e GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin} \    -e GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin} \    -e GF_USERS_ALLOW_SIGN_UP=false \    grafana/grafana

5、安裝成功后訪問鏈接查看是否成功

Prometheus: http://192.168.0.10:9090/:

Grafana:http://192.168.0.10:3000/ ,通過我們安裝時(shí)部署的用戶名密碼: admin / admin 登錄。

三、微服務(wù)相關(guān)配置及添加Prometheus支持

1、在gitegg-platform-bom工程中引入micrometer的prometheus依賴包

請(qǐng)注意,在選擇micrometer-registry-prometheus版本時(shí),一定要和框架中SpringBoot引入的micrometer相匹配的版本,否則不兼容。

......                1.5.14......                                        io.micrometer                micrometer-registry-prometheus                ${micrometer.registry.prometheus.version}            ......

2、gitegg-cloud工程的父pom.xml統(tǒng)一引入prometheus依賴包,這樣,我們就可以統(tǒng)一靈活切換使用的監(jiān)控系統(tǒng)

                    io.micrometer            micrometer-registry-prometheus        

3、修改Nacos,開啟prometheus抓取端點(diǎn)

metrics.tags.application: ${spring.application.name} 設(shè)置tag方便Prometheus抓取數(shù)據(jù)時(shí)區(qū)分不同的服務(wù)。

# 性能監(jiān)控端點(diǎn)配置management:  security:    enabled: true    role: ACTUATOR_ADMIN  endpoint:    health:      show-details: always  endpoints:    enabled-by-default: true    web:      base-path: /actuator      exposure:        include: '*'metrics:    tags:      application: ${spring.application.name}    export:      prometheus:        enabled: true  server:    servlet:      context-path: /actuator  health:    mail:      enabled: false

4、查看啟動(dòng)結(jié)果 http://127.0.0.1:8002/actuator/prometheus

四、配置Prometheus+Grafana采集并展示微服務(wù)健康監(jiān)控?cái)?shù)據(jù)

1、編輯prometheus配置文件prometheus.yml,設(shè)置采集微服務(wù)端點(diǎn)

scrape_configs:  - job_name: 'actuator-gitegg'    basic_auth:      username: user      password: password    scrape_interval: 15s    scrape_timeout: 10s    metrics_path: '/actuator/prometheus'    static_configs:      - targets: ['192.168.0.2:80','192.168.0.2:8002']
  • basic_auth:設(shè)置采集端點(diǎn)的basic認(rèn)證信息。
  • metrics_path:設(shè)置prometheus采集端點(diǎn)的路徑。
  • static_configs.targets: 設(shè)置prometheus采集端點(diǎn)的地址。

2、重啟prometheus,訪問界面status -> targets,查看采集端點(diǎn)狀態(tài)。

3、配置Grafana,添加prometheus數(shù)據(jù)源并展示JVM監(jiān)控圖表

  • Configuration -> Data sources -> Add data source。
  • 添加Prometheus數(shù)據(jù)源地址 http://192.168.0.10:9090/。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-EtLyP44z-1659068873697)(https://upload-images.jianshu.io/upload_images/19669137-909fb58c88c3dd9c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]。

  • Import 儀表盤,Grafana提供了很多內(nèi)置的儀表盤模板,官方模板地址:https://grafana.com/grafana/dashboards , 我們這里選擇使用JVM (Micrometer)模板,輸入模板的地址https://grafana.com/grafana/dashboards/4701或者模板的編號(hào)4701,然后點(diǎn)擊Load進(jìn)行加載。
  • 執(zhí)行import后就可以看到我們導(dǎo)入的儀表盤模板了,點(diǎn)擊右上角的Save進(jìn)行保存。
    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-u2azr5Rj-1659068873698)(https://upload-images.jianshu.io/upload_images/19669137-ea886748260469e8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]。

通過以上步驟已經(jīng)能夠搭建和配置簡單的Actuator(Micrometer)+ Prometheus + Grafana 微服務(wù)健康監(jiān)控系統(tǒng),查看Prometheus / Grafana 官方文檔,我們可以知道其提供的功能非常豐富,在實(shí)際使用過程中,我們需要根據(jù)自己的業(yè)務(wù)需求進(jìn)行更細(xì)維度的部署和配置。

服務(wù)健康監(jiān)控系統(tǒng)是保障我們系統(tǒng)服務(wù)正常運(yùn)行的必要工具,配置部署非常方便,但是,我們生產(chǎn)環(huán)境一定要注意系統(tǒng)安全問題,不要把健康檢查的端點(diǎn)暴露出去,該做鑒權(quán)的做鑒權(quán),該做安全防護(hù)的做安全防護(hù),不要因?yàn)榉奖憬】当O(jiān)控而增加安全風(fēng)險(xiǎn)。


網(wǎng)站名稱:Prometheus+Grafana微服務(wù)監(jiān)控告警系統(tǒng)
文章出自:http://www.5511xx.com/article/cochcpj.html