一、拓撲圖
二、收集數據
2.1前期准備
創建共享目錄,即為了各節點都創建該目錄,有兩個文件,做數據共享 /home/target/prom-jvm-demo 1、下載文件 jmx_prometheus_javaagent-0.3.1.jar 2、創建文件 [root@manager prom-jvm-demo]# cat simple-config.yml --- rules: - pattern: ".*"
2.2啟動容器
注:6060作為java監控數據暴露端口,每一個服務單獨占用一個端口,即啟動java服務便伴隨着啟動java監控服務
2.2.1 docker 啟動(測試)
docker run -d \ --name tomcat-1 \ -v /home/target/prom-jvm-demo:/jmx-exporter \ -e CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" \ -p 6060:6060 \ -p 8012:8080 \ 10.0.0.194:4999/tomcat:8.5.61
2.2.2 docker 啟動
docker service create --name bj_ywjy_yxsmgr2 \ --publish 6061:6060 \ --publish 8081:8080 \ --mount type=bind,src=/home/target/bj_ywjy_yxsmgr,dst=/usr/local/tomcat/webapps \ --mount type=bind,src=/home/target/bj_ywjy_yxsmgr/logs,dst=/usr/local/tomcat/logs \ --mount type=bind,src=/home/target/prom-jvm-demo,dst=/jmx-exporter \ --env CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" \ --network springcloud-overlay \ --log-driver=gelf --log-opt gelf-address=udp://10.0.0.184:12201 \ --log-opt tag=bj_ywjy_yxsmgr2 10.0.0.194:4999/tomcat:8.5.61
2.2.3 訪問獲取到的數據
http://10.0.0.196:6060/metrics

三、prometheus配置
3.1 將獲取到的java數據關聯到prometheus中
[root@autodeploy prometheus-2.25.2]# cat prometheus.yml scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['10.0.0.189:9090'] - job_name: 'Container monitoring' static_configs: - targets: - "10.0.0.194:8888" - "10.0.0.195:8888" - "10.0.0.196:8888" - job_name: 'bj_ywjy_yxsmgr' static_configs: - targets: - "10.0.0.194:6060" - job_name: 'bj_ywjy_yxsmgr2' static_configs: - targets: - "10.0.0.194:6061"
配置jvm監控規則可根據 cadvisor+prometheus+alertmanager+grafana完成容器化監控告警(一)配置參數調整改進,這里就不體現了!
3.2重啟prometheus
[root@autodeploy prometheus-2.25.2]# cat start.sh #!/bin/bash pid=`ps -ef|grep prometheus|grep -v grep|awk '{print $2}'` kill -9 $pid nohup ./prometheus --config.file=prometheus.yml &
3.3訪問測試
http://10.0.0.189:9090/

四、alertmanager配置告警
4.1告警模板
[root@autodeploy rules]# cat weixin.tmpl {{ define "wechat.default.message" }} {{ range $i, $alert :=.Alerts }} ========監控報警==== 告警狀態: {{ .Status }} 告警級別: {{ $alert.Labels.severity }} 告警類型: {{ $alert.Labels.alertname }} 告警應用: {{ $alert.Labels.name }} {{ $alert.Labels.job }} 告警主機: {{ $alert.Labels.instance }} 當前最新值: {{ $alert.Annotations.summary }} 告警詳情: {{ $alert.Annotations.description }} 告警時間: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} ========end========= {{ end }} {{ end }}
4.2重啟alertmanager
[root@autodeploy alertmanager-0.21.0]# cat start.sh #!/bin/bash pid=`ps -ef|grep aler|grep -v grep|awk '{print $2}'` kill -9 $pid nohup ./alertmanager --config.file=alertmanager.yml --storage.path=data --log.level=debug &
五、微信告警展示