Prometheus + InfluxDB + MySQL + Grafna快速構建監控系統
Prometheus + InfluxDB + MySQL + Grafna
參考連結:
https://blog.rj-bai.com/post/158.html
全域性埠說明:
Prometheus預設埠:9090 Grafana預設埠:3000 node_exporter預設埠:9104 mysqld_exporter預設埠:9100 alertmanager預設埠:9093 InfluxDB預設埠:8086
本文包含以下部分:
1.安裝prometheus 2.安裝node_exporter、mysqld_exporter 3.配置prometheus獲取node_exporter與mysqld_exporter資料 4.安裝Grafana 5.匯入Grafana官網模板,對資料基本呈現 6.將prometheus資料存放到外部儲存influxDB,而非自帶tsdb 7.簡單配置alertmanager
1.安裝配置prometheus
1.1 下載prometheus
tar -zxf prometheus-2.19.2.linux-amd64.tar.gz -C /usr/local ln -s /usr/local/prometheus-2.19.2.linux-amd64 /usr/local/prometheus
1.2 啟動prometheus,配置開機自啟動
# cat > /usr/lib/systemd/system/prometheus.service <<EOF [Unit] Description=prometheus server daemon [Service] Restart=on-failure ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml [Install] WantedBy=multi-user.target EOF # systemctl daemon-reload && systemctl start prometheus.service
1.3 配置基於檔案發現
# vi prometheus.yml global: scrape_interval: 15s evaluation_interval: 15s alerting: alertmanagers: - static_configs: - targets: rule_files: scrape_configs: - job_name: 'prometheus' # 這個目錄下的所有主機監控,將會歸集到job為prometheus的標籤下,要單獨設定,需要修改此配置檔案單獨設定。 file_sd_configs: - files: ['/usr/local/prometheus/files_sd_configs/*.yml'] refresh_interval: 5s - job_name: 'nodes' file_sd_configs: - files: ['/usr/local/prometheus/nodes_sd_configs/*.yml'] refresh_interval: 5s
# 配置本機
# cd files_sd_configs/ # vi localhost.yml - targets: ['localhost:9090'] labels: name: czh02
# 利用kill -hup 傳送signal hup熱更新程式,使程式熱載入配置檔案
# ps aux | grep prometheus.yml | grep -v grep | awk {'print $2'} | xargs kill -hup
2. 安裝grafana
2.1 下載安裝
# grafana主配置檔案在/usr/local/grafana-7.1.0/conf目錄下,default.ini可以配置grafana資料目錄
# http或https以及使用sqllite還是mysql/postgresql,都可以根據實際情況配置。
# wget # tar -zxvf grafana-7.1.0.linux-amd64.tar.gz -C /usr/local # groupadd grafana # useradd -g grafana grafana # passwd grafana # ln -s /usr/local/grafana-7.1.0 /usr/local/grafana-server # chown -R grafana:grafana /usr/local/grafana*
2.2 配置開機自啟動
# cat > /usr/lib/systemd/system/grafana.service <<EOF [Unit] Description=grafana server [Service] User=grafana Group=grafana Restart=on-failure ExecStart=/usr/local/grafana-server/bin/grafana-server -homepath /usr/local/grafana-server web [Install] WantedBy=multi-user.target EOF
# systemctl daemon-reload # 過載配置檔案 # systemctl start grafana # 啟動grafana # systemctl status grafana # 檢視grafana狀態 # systemctl enable grafana # 配置開機自啟動
2.2 登陸grafana,匯入官方模板
預設賬號admin/admin登陸,先匯入幾個官網模板。
模板如果基於prometheus,則可以配置資料來源prometheus,
模板如果基於mysql,則需要配置mysql hostname port user password等作為資料來源。
模板如果基於prometheus node_exporter/mysqld_exporter則可以以prometheus作為資料來源。
2.3 新增prometheus資料來源
點選Grafana左側設定,新增prometheus資料來源,輸入prometheus資料來源IP地址跟埠即可。
3. 安裝node_exporter
# tar -zxvf node_exporter-1.0.1.linux-amd64.tar.gz -C /usr/local # cd /usr/local # ln -s node_exporter-1.0.1.linux-amd64/ node_exporter # cat > /usr/lib/systemd/system/node_exporter.service <<EOF [Unit] Description=node_exporter [Service] Restart=on-failure ExecStart=/usr/local/node_exporter/node_exporter [Install] WantedBy=multi-user.target EOF
# systemctl daemon-reload # systemctl start node_exporter.service # systemctl enable node_exporter
# 將預設收集暴露出去,預設啟動之後即已經暴露,可以不做下面步驟,可以嘗試訪問IP:9100/metrics
# curl -s 127.0.0.1:9100/metrics | head
4.
mysql伺服器安裝mysqld_exporter
# 解壓安裝
# tar -zxvf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/ # ln -s mysqld_exporter-0.12.1.linux-amd64 mysqld_exporter
# 配置mysql_exproter連線資料庫配置資訊
# vi /usr/local/mysqld_exporter/my.cnf [client] host=127.0.0.1 user=root password=111111 port=20000
# 配置開機自啟動
# cat > /usr/lib/systemd/system/mysqld_exporter.service <<EOF [Unit] Description=mysqld_exporter [Service] User=mysql Group=mysql Restart=on-failure ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/my.cnf [Install] WantedBy=multi-user.target EOF
# systemctl daemon-reload # systemctl start mysqld_exporter.service # systemctl enable mysqld_exporter.service # systemctl status mysqld_exporter.service
5.prometheus新增監控exporter
# 由於prometheus主配置檔案配置了基於檔案發現主機,所以在相應目錄新增exporter主機配置即可
# cd /usr/local/prometheus/nodes_sd_configs # vi nodes_mysql02.yml - targets: ['192.168.204.82:9100'] labels: name: mysql02 # vi mysql_mysql02.yml - targets: ['192.168.204.82:9104'] labels: name: mysql02_mysql_server - targets: ['192.168.204.81:9104'] labels: name: mysql01_mysql_server
# 可以使用kill命令傳送hup訊號,過載配置檔案,相當於熱載入
# ps aux | grep prometheus.yml | grep -v grep | awk {'print $2'} | xargs kill -hup
6. 配置prometheus外部資料來源influxDB
6.1 下載安裝influxDB
# wget # yum localinstall influxdb-1.8.1.x86_64.rpm
6.2 配置influxDB引數
# 修改influxDB資料存放目錄以及wal日誌存放目錄,如果想修改預設埠8086,可以修改
# vi /etc/influxdb/influxdb.conf [data] # The directory where the TSM storage engine stores TSM files. dir = "/influxdb/data" # The directory where the TSM storage engine stores WAL files. wal-dir = "/influxdb/wal" [logging] level = "warn" # 修改級別,不輸出info日誌資訊 [http] # The bind address used by the HTTP service. # bind-address = ":8086" log-enabled = false # 禁用http請求日誌,防止prometheus不停重新整理對influx讀寫請求日誌 access-log-path = "/influxdb/influxdb.log" # http請求日誌路徑,防止將預設/var/log/messages重新整理過快
6.3 啟動influxDB
# systemctl stauts influxdb # systemctl start influxdb # systemctl enable influxdb
6.4 建立influx資料庫
有以下兩種方法建立influx資料庫:
(1)使用influxDB API建立資料庫
curl -i -XPOST
(2)使用influx命令列建立資料庫
# influx Connected to InfluxDB shell version: 1.8.1 > CREATE DATABASE "prometheus" > show databases; name: databases name ---- _internal prometheus
7. 配置prometheus外部資料存放influxDB
# 修改prometheus主配置檔案,配置influx資料庫api
# vi /usr/local/prometheus/prometheus.yml remote_write: - url: " remote_read: - url: "
重啟prometheus
# systemctl restart prometheus
8. 配置prometheus alertmanager
Alertmanager 主要用於接收 Prometheus 傳送的告警資訊,它很容易做到告警資訊的去重,降噪,分組,策略路由。
它支援豐富的告警通知渠道,可以將告警資訊轉發到郵箱、企業微信、釘釘等。
8.1 安裝alertmanager
# tar -zxvf alertmanager-0.21.0.linux-amd64.tar.gz -C /usr/local/ # ln -s /usr/local/alertmanager-0.21.0.linux-amd64/ /usr/local/alertmanager
8.2 預設配置檔案說明
# alertmanager主配置檔案 # cat alertmanager.yml # 第一部分,全域性配置,解析超時時間 global: resolve_timeout: 5m # 下面這部分是配置告警,配置告警怎麼傳送,怎麼分配 route: group_by: ['alertname'] # alertmanager中的分組,選哪個標籤作為分組的依據 group_wait: 10s # 分組等待時間,拿到第一條告警後等待10s,如果有其他的一起傳送出去 group_interval: 10s # 各個分組之前發搜告警的間隔時間 repeat_interval: 1h # 重複告警時間,預設1小時 receiver: 'web.hook' # 接收者 # 下面這部分是配置告警的接收者,我要傳送給誰。 receivers: - name: 'web.hook' webhook_configs: - url: ' # 這裡用於配置告警收斂的,主要就是減少傳送告警 inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance']
8.3 配置透過郵件傳送告警
# 講解完預設主配置檔案,下面配置使用郵箱傳送
# cat alertmanager.yml global: resolve_timeout: 5m smtp_smarthost: 'smtp.qq.com:465' smtp_from: 'xxx@qq.com' smtp_auth_username: 'xxxx@qq.com' smtp_auth_password: 'xxxx' smtp_require_tls: false route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1m receiver: 'email' receivers: - name: 'email' email_configs: - to: 'xx@xxx.com'
# 驗證配置檔案
# ./amtool check-config alertmanager.yml Checking 'alertmanager.yml' SUCCESS Found: - global config - route - 0 inhibit rules - 1 receivers - 0 templates
8.4 配置開機自啟動
# 預設為9093埠,如果需要修改可以啟動時加 --web.listen-address=":9093"選項。
# cat > /usr/lib/systemd/system/alertmanager.service <<EOF [Unit] Description=alertmanager [Service] Restart=on-failure ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml [Install] WantedBy=multi-user.target EOF
8.5 alertmanager與prometheus融合
# 編輯prometheus主配置檔案,增加下面部分
# vi /usr/local/prometheus/prometheus.yml alerting: alertmanagers: - static_configs: - targets: - 127.0.0.1:9093 rule_files: - "rules/*.yml"
8.6 prometheus配置告警rules,啟動alertmanager
# cd /usr/local/prometheus # mkdir rules # cd rules # vi alert.yml groups: - name: exporter.rules # 定義這組告警的組名,同性質的,都是監控例項exporter是否開啟的模板 rules: - alert: exporter_offline # 告警名稱 expr: up == 0 # 告警表示式,監控up指標,如果等於0就進行下面的操作 for: 1m # 持續一分鐘為0進行告警 labels: # 定義告警級別 severity: ERROR annotations: summary: "例項 {{ $labels.instance }} 採集器離線。" description: "例項 {{ $labels.instance }} job 名為 {{ $labels.job }} 的採集器離線。"
# 啟動alertmanager
# systemctl start alertmanager # systemctl status alertmanager # systemctl enable alertmanager
8.7 停止任意exporter,會收到告警郵件如下
# alertmanager.yml檔案配置告警全域性配置,告警傳送規則,分組規則,告警抑制規則。
# prometheus的rules告警規則檔案,配置告警閾值,告警嚴重程度,告警規則,具體可參考官網。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31439444/viewspace-2706983/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- grafana+prometheus快速搭建MySql監控系統實踐GrafanaPrometheusMySql
- Prometheus監控報警系統Prometheus
- 創業公司如何快速構建高效的監控系統?創業
- Telegraf+Influxdb+Grafana構建監控平臺UXGrafana
- docker-compose快速搭建 Prometheus+Grafana監控系統DockerPrometheusGrafana
- Prometheus MySQL監控+grafana展示PrometheusMySqlGrafana
- 開源監控系統Prometheus介紹Prometheus
- Prometheus監控系統入門與部署Prometheus
- Prometheus監控系統程序---process-exporterPrometheusExport
- 在k8s中快速搭建基於Prometheus監控系統K8SPrometheus
- Mysql 監控系統MySql
- 基於 Prometheus 的監控系統實踐Prometheus
- 開源監控系統Prometheus的前世今生Prometheus
- Grafana+Prometheus 監控 MySql服務GrafanaPrometheusMySql
- Grafana監控系統的構建與實踐Grafana
- 使用夜鶯和 Categraf 快速建設 MySQL 監控MySql
- 使用cAdvisor+Influxdb+Grafana監控系統UXGrafana
- Docker 快速實現 【JMeter + InfluxDB + Grafana】 監控方案DockerJMeterUXGrafana
- Mysql監控快速指南MySql
- prometheus+grafana監控mysql最佳實踐PrometheusGrafanaMySql
- 構建web前端異常監控系統–FdSafeWeb前端
- Prometheus 監控arangodbPrometheusGo
- Docker監控PrometheusDockerPrometheus
- Prometheus監控mongoPrometheusGo
- prometheus JVM監控PrometheusJVM
- collectd+influxdb+grafana打造圖形化監控系統UXGrafana
- 使用 Grafana、collectd 和 InfluxDB 打造現代監控系統GrafanaUX
- 6.prometheus監控--監控dockerPrometheusDocker
- 使用Prometheus監控Linux系統各項指標PrometheusLinux指標
- docker-compose 搭建 Prometheus+Grafana監控系統DockerPrometheusGrafana
- 技術分享| 如何使用Prometheus實現系統程式監控Prometheus
- 搭建服務端效能監控系統 Prometheus 詳細指南服務端Prometheus
- 05 . Prometheus監控NginxPrometheusNginx
- prometheus 監控學習Prometheus
- prometheus監控+alertmanager告警Prometheus
- 通過 Telegraf + InfluxDB + Grafana 快速搭建監控體系的詳細步驟UXGrafana
- 容器編排系統K8s之Prometheus監控系統+Grafana部署K8SPrometheusGrafana
- 手把手教你使用 Prometheus 監控 MySQL 與 MariaPrometheusMySql