1、安裝Grafana
1.2、docker-compose.yml
version: "3" services: prometheus: image: prom/prometheus:v2.4.3 container_name: 'prometheus' volumes: - ./prometheus/:/etc/prometheus/ ports: - '8999:9090' grafana: image: grafana/grafana:5.2.4 container_name: 'grafana' ports: - '3000:3000' volumes: - ./grafana/config/grafana.ini:/etc/grafana/grafana.ini - ./grafana/provisioning/:/etc/grafana/provisioning/ env_file: - ./grafana/config.monitoring depends_on: - prometheus
1.3、grafana.ini,配置告警發送郵件的地址
#################################### SMTP / Emailing ########################## # 配置郵件服務器 [smtp] enabled = true # 發件服務器 host = smtp.qq.com:465 # smtp賬號 user = xxxxxxxx@qq.com # smtp 密碼 password = xxxxxxxx # 發信郵箱 from_address = xxxxxxxx@qq.com # 發信人 from_name = caofanqi
1.4、datasource.yml 數據源配置為Prometheus
# config file version apiVersion: 1 deleteDatasources: - name: Prometheus orgId: 1 datasources: - name: Prometheus type: prometheus access: proxy orgId: 1 url: http://prometheus:9090 basicAuth: false isDefault: true version: 1 editable: true
1.5、config.monitoring admin登陸密碼配置,是否允許注冊
GF_SECURITY_ADMIN_PASSWORD=password GF_USERS_ALLOW_SIGN_UP=false
1.6、運行 docker-compose -f docker-compose.yml up 命令

1.7、訪問http://127.0.0.1:3000/ 如下,安裝完成

2、創建Dashboard
2.1、登陸grafana,用戶名admin,密碼password,如下,還沒有Dashboard,我們導入dashboard.json文件進行創建,完成后,可以看到這里的統計頁面比Prometheus自帶的好的多,可以通過右上角進行時間維度的修改。


3、告警渠道設置
Alerting-> Notification channels -> Add channel

可以看到支持的類型有很多,我們選擇Email,填寫要發送的郵箱,點擊測試,郵箱收到了測試郵件

4、創建錯誤規則,達到指定要求,發送郵件告警
4.1、在程序中制造錯誤,並不斷訪問

這時,通過Grafana可以看到,Rate和Error都明顯升高

4.2、配置錯誤規則,發送告警信息 Errors -> Edit

將PromQL修改為如下:

點擊Alert-> Create Alert ,進行告警規則設置,我們這里設置,每隔10s評估以下表達式,如果conut出來的值大於1就告警

Notifications,設置通知方式,和信息。我們選擇之前的發送郵件

當如下圖出現碎裂的紅心,說明已經發送告警了

我們的郵箱收到了郵件,如下

項目源碼:https://github.com/caofanqi/study-security/tree/dev-prometheus2

