發(fā)布時(shí)間:2020-03-23
瀏覽次數(shù):425
監(jiān)控系統(tǒng)在一家公司是尤為重要的,它能幫你在7x24小時(shí)的實(shí)時(shí)的關(guān)注線上服務(wù)器的運(yùn)行情況,當(dāng)有問題的時(shí)候第一時(shí)間通知給相應(yīng)的人員今天說下我們的主角就是我們prometheus+grafana+node_exporter
Prometheus介紹
Prometheus 是一套開源的系統(tǒng)監(jiān)控報(bào)警框架。它啟發(fā)于 Google 的 borgmon 監(jiān)控系統(tǒng),由工作在 SoundCloud 的 google 前員工在 2012 年創(chuàng)建,作為社區(qū)開源項(xiàng)目進(jìn)行開發(fā),并于 2015 年正式發(fā)布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成為受歡迎度僅次于 Kubernetes 的項(xiàng)目。
Prometheus作為TSDB具有以下特點(diǎn):
具有由指標(biāo)名稱和鍵/值對標(biāo)識的時(shí)間序列數(shù)據(jù)的多維度數(shù)據(jù)模型。PromQL靈活的查詢語言。不依賴分布式存儲,單個(gè)服務(wù)器節(jié)點(diǎn)是自主的。通過基于HTTP的pull方式采集時(shí)序數(shù)據(jù)。可以通過中間網(wǎng)關(guān)(Pushgateway)進(jìn)行時(shí)序列數(shù)據(jù)推送。通過服務(wù)發(fā)現(xiàn)或者靜態(tài)配置來發(fā)現(xiàn)目標(biāo)服務(wù)對象。支持多種多樣的圖表和界面展示,比如Grafana等。
Prometheus的安裝
下載二進(jìn)制安裝包
wget https://github.com/prometheus/prometheus/releases/download/v2.16.0/prometheus-2.16.0.linux-amd64.tar.gz
解壓prometheus壓縮包
$ tar zxvf prometheus-2.16.0.linux-amd64.tar.gz -C /usr/local/prometheus
添加prometheus 用戶
$ groupadd prometheus$ useradd -g prometheus -s /sbin/nologin prometheus
創(chuàng)建prometheus 啟動(dòng)文件
cat > /usr/lib/systemd/system/prometheus.service << EOF[Unit]Description=PrometheusDocumentation=https://prometheus.io/After=network.target[Service]Type=simpleUser=prometheusExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheusRestart=on-failure[Install]WantedBy=multi-user.targetEOF
啟動(dòng)服務(wù)并設(shè)為開機(jī)啟動(dòng)
$ systemctl start prometheus$ systemctl enable prometheus
以下為一個(gè)簡單的prometheus.yml示例:
# Prometheus全局配置項(xiàng)global: scrape_interval: 15s # 設(shè)定抓取數(shù)據(jù)的周期,默認(rèn)為1min evaluation_interval: 15s # 設(shè)定更新rules文件的周期,默認(rèn)為1min scrape_timeout: 15s # 設(shè)定抓取數(shù)據(jù)的超時(shí)時(shí)間,默認(rèn)為10s external_labels: # 額外的屬性,會(huì)添加到拉取得數(shù)據(jù)并存到數(shù)據(jù)庫中 monitor: 'codelab_monitor'# Alertmanager配置alerting: alertmanagers: - static_configs: - targets: ["localhost:9093"] # 設(shè)定alertmanager和prometheus交互的接口,即alertmanager監(jiān)聽的ip地址和端口# rule配置,首次讀取默認(rèn)加載,之后根據(jù)evaluation_interval設(shè)定的周期加載rule_files: - "alertmanager_rules.yml" - "prometheus_rules.yml"# scrape配置scrape_configs:- job_name: 'prometheus' # job_name默認(rèn)寫入timeseries的labels中,可以用于查詢使用 scrape_interval: 15s # 抓取周期,默認(rèn)采用global配置 static_configs: # 靜態(tài)配置 - targets: ['localhost:9090'] # prometheus所要抓取數(shù)據(jù)的地址,即instance實(shí)例項(xiàng) - job_name: 'node_exporter' # job_name默認(rèn)寫入timeseries的labels中,可以用于查詢使用 scrape_interval: 15s # 抓取周期,默認(rèn)采用global配置 static_configs: # 靜態(tài)配置 - targets: ['localhost:9100'] # prometheus所要抓取數(shù)據(jù)的地址,即instance實(shí)例項(xiàng)
安裝 node_exporter
RHEL/CentOS
$ curl -Lo /etc/yum.repos.d/_copr_ibotty-prometheus-exporters.repo https://copr.fedorainfracloud.org/coprs/ibotty/prometheus-exporters/repo/epel-7/ibotty-prometheus-exporters-epel-7.repo$ yum install node_exporter$ systemctl start node_exporter
配置grafana
1.添加 prometheus 數(shù)據(jù)源
?
導(dǎo)入node_exporter 模板 ?
接下來就能看到實(shí)際的效果了,今天只給大家簡單的介紹一下,接下來會(huì)為大家詳細(xì)的介紹,prometheus 的語法 自動(dòng)發(fā)現(xiàn) 告警 以及怎么實(shí)現(xiàn)數(shù)據(jù)的長時(shí)間存儲。