CentOS7搭建Prometheus 監(jiān)控Linux主機
簡介
prometheus可以拆分成多個節(jié)點進行指標收集。
安裝環(huán)境:CentOS7
安裝prometheus
- wget -c https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz
- tar zxvf prometheus-2.23.0.linux-amd64.tar.gz -C /opt/
- cd /opt/
- ln -s prometheus-2.23.0.linux-amd64 prometheus
- cat > /etc/systemd/system/prometheus.service <<EOF
- [Unit]
- Description=prometheus
- After=network.target
- [Service]
- Type=simple
- WorkingDirectory=/opt/prometheus
- ExecStart=/opt/prometheus/prometheus --config.file="/opt/prometheus/prometheus.yml"
- LimitNOFILE=65536
- PrivateTmp=true
- RestartSec=2
- StartLimitInterval=0
- Restart=always
- [Install]
- WantedBy=multi-user.target
- EOF
- systemctl daemon-reload
- systemctl enable prometheus
- systemctl start prometheus
配置Prometheus
這里配置的是監(jiān)聽/opt/prometheus/servers/目錄下的json文件
- cat > /opt/prometheus/prometheus.yml <<EOF
- # my global config
- global:
- scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
- evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
- # scrape_timeout is set to the global default (10s).
- # Alertmanager configuration
- alerting:
- alertmanagers:
- - static_configs:
- - targets:
- # - alertmanager:9093
- # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
- rule_files:
- # - "first_rules.yml"
- # - "second_rules.yml"
- # A scrape configuration containing exactly one endpoint to scrape:
- # Here it's Prometheus itself.
- 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: ['localhost:9090']
- - job_name: 'servers'
- file_sd_configs:
- - refresh_interval: 61s
- files:
- - /opt/prometheus/servers/*.json
- EOF
- systemctl restart prometheus
json格式
每個json文件需要是一個數組對象,如果不需要自定義標簽,可以直接寫到targets里面去也可以,可以有多個文件
- [
- {
- "targets": [
- "192.168.1.164:9100"
- ],
- "labels": {
- "instance": "192.168.1.164",
- "job": "node_exporter"
- }
- },
- {
- "targets": [
- "192.168.1.167:9100"
- ],
- "labels": {
- "instance": "192.168.1.167",
- "job": "node_exporter"
- }
- }
- ]
安裝node_exporter
安裝到/opt/node_exporter路徑下,保持默認的端口
- https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
- tar zxvf node_exporter-1.0.1.linux-amd64.tar.gz -C /opt/
- cd /opt/
- ln -s node_exporter-1.0.1.linux-amd64 node_exporter
- cat > /etc/systemd/system/node_exporter.service <<EOF
- [Unit]
- Description=node_exporter
- After=network.target
- [Service]
- Type=simple
- WorkingDirectory=/opt/node_exporter
- ExecStart=/opt/node_exporter/node_exporter
- LimitNOFILE=65536
- PrivateTmp=true
- RestartSec=2
- StartLimitInterval=0
- Restart=always
- [Install]
- WantedBy=multi-user.target
- EOF
- systemctl daemon-reload
- systemctl enable node_exporter
- systemctl start node_exporter
圖形展示
直接安裝grafana進行展示
- yum -y install https://dl.grafana.com/oss/release/grafana-7.3.6-1.x86_64.rpm
- systemctl enable grafana-server
- systemctl start grafana-server
啟動之后,grafana默認監(jiān)聽的是3000端口,直接使用瀏覽器進行訪問就可以了,默認用戶名密碼是admin/admin,第一次登陸之后會提示修改。

配置數據源:鼠標左邊的菜單 Configuration -> Data Source -> Add data source -> 選擇prometheus -> url那欄填入prometheus的地址就可以了 -> 最后 Save & test 就可以了。
grafana.com/grafana/dashboards 官網已經有人做好的模板,我們直接import進來就可以了。
導入面板:鼠標左邊的菜單 Dashboards -> Import -> 填入id -> Load -> 選擇數據源就可以了。
我經常用的是:1860 、8919 這兩個來查看node_exporter監(jiān)控

總結
安裝這些服務都是使用systemd進行管理的,操作起來比較方便的。
這里沒有設置告警,可以根據自己的需要設置對應的告警規(guī)則,使用alertmanager進行告警。