CentOS7搭建Prometheus 监控Linux主机
<p><strong><span> 简介</span></strong></p>
<p>
prometheus可以拆分成多个节点进行指标收集。</p>
<p>
安装环境:CentOS7</p>
<center>
<img style="max-width:100%!important;height:auto!important;"title="CentOS7搭建Prometheus 监控Linux主机" alt="CentOS7搭建Prometheus 监控Linux主机" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/8dd287a52096b526daa63a18c8103b3d.jpg" width="auto">
</center>
<p>
<strong><span>安装prometheus</span></strong></p>
<blockquote>
<p class="alt">
<span><span>wget -c https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gz </span></span></p>
<p>
<span>tar zxvf prometheus-2.23.0.linux-amd64.tar.gz -C /opt/ </span></p>
<p class="alt">
<span>cd /opt/ </span></p>
<p>
<span>ln -s prometheus-2.23.0.linux-amd64 prometheus </span></p>
<p class="alt">
<span>cat > /etc/systemd/system/prometheus.service <<EOF </span></p>
<p>
<span> </span></p>
<p class="alt">
<span>Description=prometheus </span></p>
<p>
<span><span class="keyword">After</span><span>=network.target </span></span></p>
<p class="alt">
<span> </span></p>
<p>
<span> </span></p>
<p class="alt">
<span>Type=simple </span></p>
<p>
<span>WorkingDirectory=/opt/prometheus </span></p>
<p class="alt">
<span>ExecStart=/opt/prometheus/prometheus <span class="comment">--config.file="/opt/prometheus/prometheus.yml"</span><span> </span></span></p>
<p>
<span>LimitNOFILE=65536 </span></p>
<p class="alt">
<span>PrivateTmp=<span class="keyword">true</span><span> </span></span></p>
<p>
<span>RestartSec=2 </span></p>
<p class="alt">
<span>StartLimitInterval=0 </span></p>
<p>
<span>Restart=always </span></p>
<p class="alt">
<span> </span></p>
<p>
<span> </span></p>
<p class="alt">
<span>WantedBy=multi-<span class="func">user</span><span>.target </span></span></p>
<p>
<span>EOF </span></p>
<p class="alt">
<span>systemctl daemon-reload </span></p>
<p>
<span>systemctl enable prometheus </span></p>
<p class="alt">
<span>systemctl start prometheus </span></p>
</blockquote>
<p>
<img style="max-width:100%!important;height:auto!important;"title="CentOS7搭建Prometheus 监控Linux主机" alt="CentOS7搭建Prometheus 监控Linux主机" src="https://zhuji.jb51.net/uploads/img/202305/ff28ffd1631382160d95f05e9b595bd5.jpg"></p>
<p>
<strong><span>配置Prometheus</span></strong></p>
<p>
这里配置的是监听/opt/prometheus/servers/目录下的json文件</p>
<blockquote>
<p class="alt">
<span><span>cat > /opt/prometheus/prometheus.yml <<EOF </span></span></p>
<p>
<span># my <span class="keyword">global</span><span> config </span></span></p>
<p class="alt">
<span><span class="keyword">global</span><span>: </span></span></p>
<p>
<span> scrape_interval: 15s # <span class="keyword">Set</span><span> the scrape interval </span><span class="keyword">to</span><span> every 15 seconds. </span><span class="keyword">Default</span><span> </span><span class="keyword">is</span><span> every 1 </span><span class="keyword">minute</span><span>. </span></span></p>
<p class="alt">
<span> evaluation_interval: 15s # Evaluate rules every 15 seconds. The <span class="keyword">default</span><span> </span><span class="keyword">is</span><span> every 1 </span><span class="keyword">minute</span><span>. </span></span></p>
<p>
<span> # scrape_timeout <span class="keyword">is</span><span> </span><span class="keyword">set</span><span> </span><span class="keyword">to</span><span> the </span><span class="keyword">global</span><span> </span><span class="keyword">default</span><span> (10s). </span></span></p>
<p class="alt">
<span># Alertmanager configuration </span></p>
<p>
<span>alerting: </span></p>
<p class="alt">
<span> alertmanagers: </span></p>
<p>
<span> - static_configs: </span></p>
<p class="alt">
<span> - targets: </span></p>
<p>
<span> # - alertmanager:9093 </span></p>
<p class="alt">
<span> </span></p>
<p>
<span># <span class="keyword">Load</span><span> rules once </span><span class="op">and</span><span> periodically evaluate them according </span><span class="keyword">to</span><span> the </span><span class="keyword">global</span><span> </span><span class="string">'evaluation_interval'</span><span>. </span></span></p>
<p class="alt">
<span>rule_files: </span></p>
<p>
<span> # - <span class="string">"first_rules.yml"</span><span> </span></span></p>
<p class="alt">
<span> # - <span class="string">"second_rules.yml"</span><span> </span></span></p>
<p>
<span> </span></p>
<p class="alt">
<span># A scrape configuration containing exactly one endpoint <span class="keyword">to</span><span> scrape: </span></span></p>
<p>
<span># Here it's Prometheus itself. </span></p>
<p class="alt">
<span>scrape_configs: </span></p>
<p>
<span> # The job <span class="keyword">name</span><span> </span><span class="keyword">is</span><span> added </span><span class="keyword">as</span><span> a label `job=<job_name>` </span><span class="keyword">to</span><span> </span><span class="op">any</span><span> timeseries scraped </span><span class="keyword">from</span><span> this config. </span></span></p>
<p class="alt">
<span> - job_name: <span class="string">'prometheus'</span><span> </span></span></p>
<p>
<span> </span></p>
<p class="alt">
<span> # metrics_path defaults <span class="keyword">to</span><span> </span><span class="string">'/metrics'</span><span> </span></span></p>
<p>
<span> # scheme defaults <span class="keyword">to</span><span> </span><span class="string">'http'</span><span>. </span></span></p>
<p class="alt">
<span> </span></p>
<p>
<span> static_configs: </span></p>
<p class="alt">
<span> - targets: [<span class="string">'localhost:9090'</span><span>] </span></span></p>
<p>
<span> </span></p>
<p class="alt">
<span> - job_name: <span class="string">'servers'</span><span> </span></span></p>
<p>
<span> file_sd_configs: </span></p>
<p class="alt">
<span> - refresh_interval: 61s </span></p>
<p>
<span> files: </span></p>
<p class="alt">
<span> - /opt/prometheus/servers/*.json </span></p>
<p>
<span>EOF </span></p>
<p class="alt">
<span>systemctl restart prometheus </span></p>
</blockquote>
<p>
<strong><span>json格式</span></strong></p>
<center>
<img style="max-width:100%!important;height:auto!important;"title="CentOS7搭建Prometheus 监控Linux主机" alt="CentOS7搭建Prometheus 监控Linux主机" src="https://zhuji.jb51.net/uploads/img/202305/97ed6f1785898db0e93a2d56029420db.jpg">
</center>
<p>
每个json文件需要是一个数组对象,如果不需要自定义标签,可以直接写到targets里面去也可以,可以有多个文件</p>
<blockquote>
<p class="alt">
<span><span>[ </span></span></p>
<p>
<span> { </span></p>
<p class="alt">
<span> <span class="string">"targets"</span><span>: [ </span></span></p>
<p>
<span> <span class="string">"192.168.1.164:9100"</span><span> </span></span></p>
<p class="alt">
<span> ], </span></p>
<p>
<span> <span class="string">"labels"</span><span>: { </span></span></p>
<p class="alt">
<span> <span class="string">"instance"</span><span>: </span><span class="string">"192.168.1.164"</span><span>, </span></span></p>
<p>
<span> <span class="string">"job"</span><span>: </span><span class="string">"node_exporter"</span><span> </span></span></p>
<p class="alt">
<span> } </span></p>
<p>
<span> }, </span></p>
<p class="alt">
<span> { </span></p>
<p>
<span> <span class="string">"targets"</span><span>: [ </span></span></p>
<p class="alt">
<span> <span class="string">"192.168.1.167:9100"</span><span> </span></span></p>
<p>
<span> ], </span></p>
<p class="alt">
<span> <span class="string">"labels"</span><span>: { </span></span></p>
<p>
<span> <span class="string">"instance"</span><span>: </span><span class="string">"192.168.1.167"</span><span>, </span></span></p>
<p class="alt">
<span> <span class="string">"job"</span><span>: </span><span class="string">"node_exporter"</span><span> </span></span></p>
<p>
<span> } </span></p>
<p class="alt">
<span> } </span></p>
<p>
<span>] </span></p>
</blockquote>
<p>
<strong><span>安装node_exporter</span></strong></p>
<p>
安装到/opt/node_exporter路径下,保持默认的端口</p>
<blockquote>
<p class="alt">
<span><span>https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz </span></span></p>
<p>
<span>tar zxvf node_exporter-1.0.1.linux-amd64.tar.gz -C /opt/ </span></p>
<p class="alt">
<span>cd /opt/ </span></p>
<p>
<span>ln -s node_exporter-1.0.1.linux-amd64 node_exporter </span></p>
<p class="alt">
<span>cat > /etc/systemd/system/node_exporter.service <<EOF </span></p>
<p>
<span> </span></p>
<p class="alt">
<span>Description=node_exporter </span></p>
<p>
<span><span class="keyword">After</span><span>=network.target </span></span></p>
<p class="alt">
<span> </span></p>
<p>
<span> </span></p>
<p class="alt">
<span>Type=simple </span></p>
<p>
<span>WorkingDirectory=/opt/node_exporter </span></p>
<p class="alt">
<span>ExecStart=/opt/node_exporter/node_exporter </span></p>
<p>
<span>LimitNOFILE=65536 </span></p>
<p class="alt">
<span>PrivateTmp=<span class="keyword">true</span><span> </span></span></p>
<p>
<span>RestartSec=2 </span></p>
<p class="alt">
<span>StartLimitInterval=0 </span></p>
<p>
<span>Restart=always </span></p>
<p class="alt">
<span> </span></p>
<p>
<span> </span></p>
<p class="alt">
<span>WantedBy=multi-<span class="func">user</span><span>.target </span></span></p>
<p>
<span>EOF </span></p>
<p class="alt">
<span>systemctl daemon-reload </span></p>
<p>
<span>systemctl enable node_exporter </span></p>
<p class="alt">
<span>systemctl start node_exporter </span></p>
</blockquote>
<p>
<strong><span>图形展示</span></strong></p>
<p>
直接安装grafana进行展示</p>
<blockquote>
<p class="alt">
<span><span>yum -y install https://dl.grafana.com/oss/release/grafana-7.3.6-1.x86_64.rpm </span></span></p>
<p>
<span>systemctl enable grafana-server </span></p>
<p class="alt">
<span>systemctl start grafana-server </span></p>
</blockquote>
<p>
启动之后,grafana默认监听的是3000端口,直接使用浏览器进行访问就可以了,默认用户名密码是admin/admin,第一次登陆之后会提示修改。</p>
<center>
<img style="max-width:100%!important;height:auto!important;"title="CentOS7搭建Prometheus 监控Linux主机" alt="CentOS7搭建Prometheus 监控Linux主机" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/8ba677701d71c88cff6ff771dee12d61.jpg" width="auto">
</center>
<p>
配置数据源:鼠标左边的菜单 Configuration -> Data Source -> Add data source -> 选择prometheus -> url那栏填入prometheus的地址就可以了 -> 最后 Save & test 就可以了。</p>
<p>
grafana.com/grafana/dashboards 官网已经有人做好的模板,我们直接import进来就可以了。</p>
<p>
导入面板:鼠标左边的菜单 Dashboards -> Import -> 填入id -> Load -> 选择数据源就可以了。</p>
<p>
我经常用的是:1860 、8919 这两个来查看node_exporter监控</p>
<center>
<img style="max-width:100%!important;height:auto!important;"title="CentOS7搭建Prometheus 监控Linux主机" alt="CentOS7搭建Prometheus 监控Linux主机" border="0" height="auto" src="https://zhuji.jb51.net/uploads/img/202305/be1021120cd53e12bc0f88136828fb2c.jpg" width="auto">
</center>
<p>
<strong><span>总结</span></strong></p>
<p>
安装这些服务都是使用systemd进行管理的,操作起来比较方便的。</p>
<p>
这里没有设置告警,可以根据自己的需要设置对应的告警规则,使用alertmanager进行告警。</p>
<p>
原文地址:https://www.toutiao.com/i6914917162675192324/</p>
頁:
[1]