服务器运维监控指标,运维体系~指标监控~Prometheus监控告警与日志
一 Prometheus 入門
1.1 入門介紹
運維體系~指標監控
先來一張圖,說明一下Prometheus監控相關的軟件和知識點。
1: 首先要安裝:Prometheus, 負責收集各種監控指標,也包括自己定監控
2: 接著安裝Grafana全面瓦解,負責展示監控指標
3:接著安裝各種收集插件(導出器)exporter
4: 安裝告警工具 alarmManager
新增指標步驟:
安裝配置exporter、到premetheus中進行配置、grafana新增圖表
1.2 相關軟件、端口說明
1.2.1 端口說明
軟件
端口
作用
安裝形式
地位
核心
Prometheus
9090
收集器,負責收集導出器exportor的數據
二進制、docker、rancher應用商店安裝,下載地址: Prometheus.io, 有官方導出器,也有第三方只要按照 Prometheus的格式 暴露對應的指標 即可
Prometheus、alertmanager、node_exporter、mysqld_exporter 都在一個官網上面
配置文件持久化, prometheus.yml
Grafana
3000
展示Prometheus的數據
專業展示數據,數據源可以是:Prometheus,Elasticsearch、Mysql、PostgreSql、InfluxDB(時序數據庫)、json自定義 等各種插件支持;可以界面配置數據源,https://grafana.com/、可視化工具Grafana:簡介及安裝
專業展示
1.2.2 導出器exporter說明
Exporter是Prometheus的一類數據采集組件的總稱。
它負責從目標處搜集數據,并將其轉化為Prometheus支持的格式。
與傳統的數據采集組件不同的是,它并不向中央服務器發送數據,而是等待中央服務器主動前來抓取,
默認的抓取地址為http://CURRENT_IP:9100/metrics
導出器名稱
作用
安裝方式
下載地址
安裝形式
暴露端點
Node exporter
類似zabbix-agent收集服務器自身的mem、cpu、network等服務器本身的數據
prometheus官方提供、維護
官網直接搜索:node_exporter 、參考地址 容器監控實踐—node-exporter
二進制安裝、docker安裝、k8s安裝;需要在每臺主機上面都安裝
host:9100/metrics,如果服務器端口不開發,可以映射到項目根路徑,eg: https://ngniot.bgysmartcity.com/metrics
-cAdvisor(Container Advisor )
收集docker容器的指標和性能
google開源 GO開發
–
docker、二進制都行
host:8080/metrics
mysql_exporter
收集數據庫的
–
docker、二進制都行
host:9104/metrics
mongodb_exporter
收集
–
docker、二進制都行
host:9001/metrics
1.3 簡單介紹
由于安裝牽扯的軟件和導出器比較多,
prometheus、Grafana、alertmanager、node_exporter、mysqld_exporter 等等,
我們先使用 rancher1 應用商店自帶的 prometheus
默認操作,開發3000和9090里面就可以訪問了
1.3.1 Grafana 使用事項
默認登錄需要密碼,沒有密碼,隨便輸入的賬號和密碼,就是初始化賬號密碼
設置數據源,默認已經添加了數據源 http://prometheus:9090,可以添加新的數據源,可以跨服務器
默認不用做啥配置,就可以看到 node-exporter【服務器主機信息】、prometheus-rancher-exporter【rancher簡要信息】
每個圖標需要自定義 promSQL 來展示數據
官方有很多模板,可以導入
6: 上官網搜索自己需要的展示模板
1.3.2 prometheus 使用說明
prometheus數據來源說明
1:基于 http pull 方式采集, 被采集端只要 暴露http metrics 接口, prometheus主動定時來采集
2:對于非常規數據,比如定時器的結果數據,定時來去可能取不到,這里 借助:pushGateway 收集采集數據
3:通過服務發現或者靜態配置發現目標: 比如要監控10個服務就可以靜態配置,如果要監控1000個服務,就只能 把服務器注冊到 注冊中心(如:Consul), prometheus 從注冊中心動態取。
1.3.3 PromSQL (prometheus) 的使用
PromSQL可以類似sql一樣對收集到的相關指標數據進行統計分析和處理
#按照每臺服務器,查看最近5分鐘的cpu空率
100 - avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100
#內存使用
100 - (node_memory_MemFree_bytes + node_memory_Cached_bytes + node_memory_Buffers_bytes ) / node_memory_MemTotal_bytes * 100
#監控磁盤占用率,如果沒有數據,可以去掉 mountpoint 參數或者修改該參數
100 - ( node_filesystem_free_bytes{mountpoint="/.r", fstype =~ "ext4|xfs"} / node_filesystem_size_bytes{mountpoint = "/.r", fstype =~ "ext4|xfs"} * 100)
1.3.4 prometheus 配置文件說明
當新增了 exporter 都要在 prometheus 里面進行配置,新增配置之后service-discovery 和 targets 里面就能看到新增的保留點。
job: 是一一類指標
targets:是一類指標下面的多臺機器
直接使用rancher 應用商店的 好處,prometheus 配置文件就不用關心了基本上都配置完美了
配置文件實例,可以對照http://ityun.ltd:9090/config 對著看差異
參考:Prometheus 配置文件詳解
編輯 prometheus.yml配置文件
檢查配置文件:./promtool check config promethues.yml
配置檢查沒有問題,重載配置kill -hup 4100
重載完成,可以進入到 prometheus管理界面查看配置和監控數據
服務發現,當需要監控的機器是動態擴容或者所容的時候,服務發現就非常有用,支持的方式有:
1.4 安裝promethues
1.4.1 二進制安裝部署
官網進行下載,prometheus download, 下載:wget https://github.com/prometheus/prometheus/releases/download/v2.20.0-rc.1/prometheus-2.20.0-rc.1.linux-386.tar.gz、解壓到**/usr/local/promethues/promethues**:tar zxvf *.gz
最好是參見最新的官方文檔:prometheus docs getting_started
重要的啟動選項,./prometheus --help, 一個是:配置文件指定--config.file="prometheus.yml"、監控端口--web.listen-address=" 0.0.0.0:9090"、數據存儲目錄 --storeage.tsdb.path=" data/"、數據存儲保留時間默認15D=--storage.tsdb.retention=15d
配置為系統服務
#1: systemd,先copy一個模板進行修改
cd /usr/lib/systemd/system
# 2: copy一個配置文件 service
cp sshd.service prometheus.service
# 3: 修改配置文件
[Unit]
Description=prometheus.io
After=network.target
[Service]
Restart=on-failure
ExecStart=/usr/local/prometheus/promethues/promethues --config.file=/usr/local/prometheus/promethues/promethues/promethues.yml //自已的tomcat目錄
ExecReload=/bin/kill -s HUP $MAINPID
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
#4: #在命令執行,重新加載service配置
systemctl daemon-reload
#5 啟動測試
systemctl start prometheus
#6 查看進程執行情況
ps -ef |grep prometheus
1.4.2 rancher部署
映射配置文件:/usr/local/docker_volume/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
1.4.3 docer 部署
看官網文檔: prometheus installation 搜索 Using Docker
執行docker運行命令
#執行啟動命令,掛載卷地址,/usr/local/docker_volume/prometheus/prometheus.yml
docker run -d \
-p 9090:9090 \
-v /usr/local/docker_volume/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /usr/local/docker_volume/prometheus/data:/prometheus\
prom/prometheus
二 導出器和可視化圖表
2.1 node exporter 服務器資源導出器
node導出器,負責導出 服務器自身的cpu、內存、網絡、平均負載等。
使用展示模板,特別方便不用自己寫PromSQL
1 Node Exporter for Prometheus Dashboard CN v20200628
官方Grafana模板地址:1 Node Exporter for Prometheus Dashboard CN v20200628
2.2 cadvisor 容器導出器
cadvisor是谷歌開發的容器導出器,可以監控容器的各項指標,可以手工安裝
Grafana的顯示cadvisor數據模板
Docker and system monitoring 893 - 推薦使用
2.3 Rancher 導出器
我們監聽rancher 的指標,這個 rancher promethues自身就有的exporter
導出器名稱prometheus-rancher-exporter 、infinityworks/prometheus-rancher-exporter:v0.22.52
可視化模板 Rancher的 promethues數據源模板 1674
可視化模板 Ranche2 - 8721
2.4 mysql_exporter 導出器
mysql_exporter,下載安裝到自己需要監控的mysql主機,
創建用戶授權一個賬號,具體查看github; 可以自己配置采集信息,具體查看:
./mysql_exporter --help
eg: mysql最大連接數、當前連接數、innodb利用率、讀寫流量、查詢速度
導出器 mysql_exporter 下載地址:prometheus mysqld_exporter
grafan圖表模板 mysql grafana 的 promethues數據源模板 - 7362
2.4.1 mysql_exporter詳細安裝步驟
下載 包到本機 /usrl/local/promethues/exporter/mysql_exporter, 最新版本到官網下載,見:【mysql_exporter 】download
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-386.tar.gz,官網:下載特別慢,可以從第三方下載,見grafana-prometheus-mysqld-node_exporter.rar
解壓:tar -zxvf *.gz
查看啟動選項:``
進入mysql里面創建一個mysql用戶&授權,具體搜索:Required Grants在github mysqld_exporter
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'exporter123pwdxx.' WITH MAX_USER_CONNECTIONS 3; #創建一個新用戶,只允許localhost有權限,也可以變成%; & 限制最大連接數是3; 如果報錯,刪除 用戶連接數限制。
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost'; #授權
在當前目錄創建一個my.cnf文件,通過該文件,就可以每次免密使用。touch my.cnf,查看設置選項:./mysqld_exporter --help
[client]
user=exporter
password=exporter123pwdxx.
centos主機上面啟動&指定配置文件:./mysqld_exporter --config.my-cnf="./my.cnf",啟動完成驗證:http://localhost:9104/metrics, 后臺運行:nohup ./mysqld_exporter --config.my-cnf="./my.cnf" &
配置完畢,我們回到promethes配置文件中進行配置,vi prometheus.yml
如果9104端口無法對外開放,可以進行映射,nginx配置如下:
location /metrics { #Node exporter metrics 監控
proxy_pass http://localhost:9104;
}
2.4.2 MySQL 監控指標
2.5 mongodb_exporter 導出器
mongodb_exporter,下載安裝到自己需要監控的MongoDB主
這個插件手工安裝還有點麻煩,需要手工安裝go、安裝glide,然后才能安裝exporter。
參考,文檔非常詳細、或者直接看github:prometheus監控mongo
使用的插件是:dcu/mongodb_exporter
使用的展示json是 2583 :https://grafana.com/dashboards/2583
使用的dcu/mongodb_exporter 對應的docker 鏡像是:targetprocess/mongodb_exporter
需要給指定MongoDB賬號,監控的權限
# E0727 04:19:12.553163 1 oplog_status.go:127] Failed to get local.oplog_rs collection stats.
# E0727 04:19:42.490771 1 server_status.go:173] Failed to get server status.
# E0727 04:19:42.522262 1 replset_status.go:231] Failed to get replSet status.
# Prometheus Mongodb Exporter - Correct DB User Permissions
#When you see the error Failed to get local.oplog_rs collection stats. in your mongodb exporter logs, make sure the DB user account you use has the right permissions.
db.getSiblingDB("admin").createUser({
user: "mongodb_exporter",
pwd: "mongodb_exporter_pwd.",
roles: [
{ role: "clusterMonitor", db: "admin" },
{ role: "read", db: "local" }
]
})
docker run -d \
-p 9001:9001 \
--mongodb.uri="mongodb://iotMongoUserX:.123aB.iotMongoUserXpWD@39.198.173.142:37071" \
targetprocess/mongodb_exporter
啟動參數:--mongodb.uri=mongodb://iotMongoUserX:.123aB.iotMongoUserXpWD@39.198.173.142:37071
如何查看啟動參數,進入容器內部find / -name '*exporter*'查找安裝目錄, 執行cd /bin , ./mongodb_exporter --help
三 告警alartmanager
前面我們講解了監控數據的可視化,但是數據量很多,指標很多,我們不可能一直盯著屏幕。因此我們需要對數據進行巡檢和告警處理。
告警也有一些高級使用步驟:分組、抑制、靜默等
3.1 使用步驟
安裝部署 alartmanager, 通過官網或者github,官網同:promethues
配置Promethues和alertmanager通信
在promethues中配置告警規則
在alartmanager中配置接收者
三 告警alartmanager
前面我們講解了監控數據的可視化,但是數據量很多,指標很多,我們不可能一直盯著屏幕。因此我們需要對數據進行巡檢和告警處理。
告警也有一些高級使用步驟:分組、抑制、靜默等
3.1 使用步驟
安裝部署 alartmanager, 通過官網或者github,官網同:promethues
配置Promethues和alertmanager通信
在promethues中配置告警規則
在alartmanager中配置接收者
3.2 配置alartmanager和premethues通信
alartmanager.yml
route 告警路由 分配 、receivers: 接收者、inhibit_rules: 抑制配置、
./amtool check-config alartmanger.yml檢查配置語法是否正確
總結
以上是生活随笔為你收集整理的服务器运维监控指标,运维体系~指标监控~Prometheus监控告警与日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 轻芒杂志宣布倒闭 未来将推出全新APP
- 下一篇: 荣耀第一台手机荣耀3X至今还有4万多用户