金億温馨 發表於 2023-12-6 00:00:00

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 &gt; /etc/systemd/system/prometheus.service &lt;&lt;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 &gt; /opt/prometheus/prometheus.yml &lt;&lt;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=&lt;job_name&gt;` </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 &gt; /etc/systemd/system/node_exporter.service &lt;&lt;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 -&gt; Data Source -&gt; Add data source -&gt; 选择prometheus -&gt; url那栏填入prometheus的地址就可以了 -&gt; 最后 Save &amp; test 就可以了。</p>
<p>
        grafana.com/grafana/dashboards 官网已经有人做好的模板,我们直接import进来就可以了。</p>
<p>
        导入面板:鼠标左边的菜单 Dashboards -&gt; Import -&gt; 填入id -&gt; Load -&gt; 选择数据源就可以了。</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]
查看完整版本: CentOS7搭建Prometheus 监控Linux主机