麒麟系统(arm64/aarch64)docker部署prometheus系统
<p>备注:1.不推荐yum或者源码安装,安装包跟系统架构不兼容,推荐docker方式部署,这样就可以忽略系统不兼容的问题。</p><p> 2.准备工作:开通端口映射,即公网的ip加grafana的默认端口9090到内网部署grafana服务的服务器的9090端口的映射,就可以通过外网访问。</p>
<p>一、目标:收集所有节点的负载情况:cpu、磁盘和内存使用率。</p>
<p>二、架构:</p>
<p> 机器:172.23.73.10-15,10作为监控端口,10-15都作为被监控端机器。</p>
<p> 部署服务器:</p>
<p> 172.23.73.10:prometheus、grafana、node-exporter。</p>
<p> 172.23.73.11-15:node-exporter</p>
<p>三、6台机器离线安装docker(可以拿以下教程作为参考,具体根据实际情况去做,不用安装docker-compoes):</p>
<div>
<div>
<p>1、准备服务器账号(本次全程使用root账号)</p>
<p>(因为是第一次安装这玩意儿,尽量使用root账号,避免操作的时候碰到一些权限问题)</p>
<p>2、查看操作系统版本</p>
<p># uname -a</p>
<p>Linux ArmServer.XHKJ 4.19.90-24.4.v2101.ky10.aarch64 #1 SMP Mon May 24 14:45:37 CST 2021 aarch64 aarch64 aarch64 GNU/Linux</p>
<p># cat /proc/version</p>
<p>Linux version 4.19.90-24.4.v2101.ky10.aarch64 (KYLINSOFT@localhost.localdomain) (gcc version 7.3.0 (GCC)) #1 SMP Mon May 24 14:45:37 CST 2021</p>
<p>3、查看操作系统架构</p>
<p># uname -m</p>
<p>aarch64</p>
<p>二、安装docker</p>
<p>1、下载docker离线包</p>
<p>下载地址:https://download.docker.com/linux/static/stable/</p>
<p>选择系统架构对应的文件目录:aarch64</p>
<p>(我目前使用的docker版本是:docker-20.10.7.tgz)</p>
<p> </p>
<div class="image-package">
<div class="image-container">
<div class="image-container-fill"> </div>
<div class="image-view" data-width="771" data-height="226"><img src="//upload-images.jianshu.io/upload_images/22491728-3a2a871dfa538d1c.png?imageMogr2/auto-orient/strip|imageView2/2/w/771/format/webp"></div>
</div>
<div class="image-caption"> </div>
</div>
<p>2、下载 docker-compose离线包</p>
<p>2.1、下载地址:https://github.com/docker/compose/releases</p>
<p>选择对应系统架构的离线安装包</p>
<p>(我目前使用的版本是:v2.17.2)</p>
<p>2.2、 Github的链接有时候可能访问不了,所以我自己建了个链接,有需要的自行下载(免费)https://download.csdn.net/download/qq_34725844/88633719</p>
<p>3、准备 docker.service系统配置文件</p>
<p>(复制以下内容保存为 docker.service 文件)</p>
<p>docker.service</p>
<p> </p>
<p></p>
<p>Description=Docker Application Container Engine</p>
<p>Documentation=https://docs.docker.com</p>
<p>After=network-online.target firewalld.service</p>
<p>Wants=network-online.target</p>
<p></p>
<p>Type=notify</p>
<p># the default is not to use systemd for cgroups because the delegate issues still</p>
<p># exists and systemd currently does not support the cgroup feature set required</p>
<p># for containers run by docker</p>
<p>ExecStart=/usr/bin/dockerd</p>
<p>ExecReload=/bin/kill -s HUP $MAINPID</p>
<p># Having non-zero Limit*s causes performance problems due to accounting overhead</p>
<p># in the kernel. We recommend using cgroups to do container-local accounting.</p>
<p>LimitNOFILE=infinity</p>
<p>LimitNPROC=infinity</p>
<p>LimitCORE=infinity</p>
<p># Uncomment TasksMax if your systemd version supports it.</p>
<p># Only systemd 226 and above support this version.</p>
<p>#TasksMax=infinity</p>
<p>TimeoutStartSec=0</p>
<p># set delegate yes so that systemd does not reset the cgroups of docker containers</p>
<p>Delegate=yes</p>
<p># kill only the docker process, not all processes in the cgroup</p>
<p>KillMode=process</p>
<p># restart the docker process if it exits prematurely</p>
<p>Restart=on-failure</p>
<p>StartLimitBurst=3</p>
<p>StartLimitInterval=60s</p>
<p></p>
<p>WantedBy=multi-user.target</p>
<p>4、安装 docker 和 docker compose 离线包</p>
<p>4.1、安装docker</p>
<p># 解压 docker 到当前目录</p>
<p>tar -xvf docker-20.10.7.tgz</p>
<p># 将 docker 文件移动到 /usr/bin 目录下</p>
<p>cp -p docker/* /usr/bin</p>
<p># 将 docker-compose 文件复制到 /usr/local/bin/ 目录下,并重命名为 docker-compose</p>
<p>cp docker-compose-linux-aarch64 /usr/local/bin/docker-compose</p>
<p># 设置 docker-compose 文件权限</p>
<p>chmod +x /usr/local/bin/docker-compose</p>
<p># 将 docker.service 移到 /etc/systemd/system/ 目录</p>
<p>cp docker.service /etc/systemd/system/</p>
<p># 设置 docker.service 文件权限</p>
<p>chmod +x /etc/systemd/system/docker.service</p>
<p># 重新加载配置文件</p>
<p>systemctl daemon-reload</p>
<p># 启动docker</p>
<p>systemctl start docker</p>
<p># 设置 docker 开机自启</p>
<p>systemctl enable docker.service</p>
<p>4.2、验证安装是否成功</p>
<p>4.2.1查看 docker 版本</p>
<p># docker -v</p>
<p>Docker version 20.10.7, build f0df350</p>
<p>4.2.2查看docker-compose 版本</p>
<p># docker-compose -v</p>
<p>Docker Compose version v2.17.2</p>
</div>
四、10机器配置镜像加速器并拉取镜像部署服务:<br> 1.修改/etc/docker/daemon.conf</div>
<div>
<p>{</p>
<p>"insecure-registries":["https://cmaharbor.zlx.com"], <br>"log-driver": "json-file",<br>"log-opts": {"max-size":"100m", "max-file":"1"},<br>"registry-mirrors": ["https://docker-proxy.741001.xyz","https://registry.docker-cn.com"]<br>}</p>
</div>
<div> 2.使配置生效</div>
<div>
<p>sudo systemctl daemon-reload<br>sudo systemctl restart docker</p>
<p> 3.docker部署三个服务(10部署三个,其他的只用部署node-exporter)</p>
<p>docker pull prom/prometheus</p>
<p> </p>
<p>2.启动</p>
<p>docker run -d -p 9091:9090 \<br>> -v /data/prometheus:/etc/prometheus \<br>> -v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \<br>> --name prometheus prom/prometheus</p>
<p><br>-d参数表示我们要在后台运行容器,<br>-p 9091:9090参数表示我们将主机的9091端口映射到容器的9090端口,因为我这里9090提示端口冲突所以我改成9091,</p>
<p>-v /data/prometheus:/etc/prometheus参数表示挂载目录,启动命令运行前创建好/data/prometheus目录,</p>
<p>-v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml参数表示挂载配置文件,方便日后修改prometheus.yml文件,</p>
<p>-name prometheus参数表示我们给容器取一个名字为prometheus。</p>
<p>3.访问普罗米修斯网页界面<br>最后,我们可以通过浏览器访问普罗米修斯(Prometheus)的Web界面。在浏览器中输入"http://localhost:9090",你将看到普罗米修斯的控制台界面。<br>通过以上步骤,你已经成功地使用Docker(Docker)安装并启动了Prometheus。现在你可以开始配置Prometheus(Prometheus)以监控你的应用程序。</p>
<p>4.进入Prometheus容器,执行命令:</p>
<p>docker exec -it b2df256f2e10 /bin/sh</p>
<p><br>b2df256f2e10是我当前的容器id,你换成你自己的即可</p>
<p>5.查看宿主机上的/data/prometheus下的prometheus.yml文件</p>
<p>如果没有,自己创建一个prometheus.yml</p>
<p>prometheus.yml文件内容</p>
<p># my global config<br>global:<br>scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.<br>evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.<br># scrape_timeout is set to the global default (10s).<br> <br># Alertmanager configuration<br>alerting:<br>alertmanagers:<br> - static_configs:<br> - targets:<br> # - alertmanager:9093<br> <br># Load rules once and periodically evaluate them according to the global 'evaluation_interval'.<br>rule_files:<br># - "first_rules.yml"<br># - "second_rules.yml"<br> <br># A scrape configuration containing exactly one endpoint to scrape:<br># Here it's Prometheus itself.<br>scrape_configs:<br># The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.<br>- job_name: "prometheus"<br> <br> # metrics_path defaults to '/metrics'<br> # scheme defaults to 'http'.<br> <br> static_configs:<br> - targets: ["localhost:9090"]<br>二、node-expoter安装</p>
<p>1.node-expoter的镜像安装可以参考Docker部署Prometheus+Grafana+node-exporter_docker安装普罗米修斯-CSDN博客</p>
<p>2.拉取镜像:</p>
<p>docker pull prom/node-exporter<br>拉取失败</p>
<p> </p>
<p>可能是原来配置的加速器都不可用了,所以新增加速器</p>
<p>"https://docker.m.daocloud.io"</p>
<p> </p>
<p>新增加速器后需要重启daocker</p>
<p>sudo systemctl restart docker<br> </p>
<p>再次重新拉取镜像,拉取成功了。</p>
<p> </p>
<p>3.启动</p>
<p>docker run --name exporter -p 9102:9100 -d prom/node-exporter</p>
<p>-p 9102:9100参数表示宿主机端口9102对应exporter端口9100,因为9100在我本地冲突,随意我这里修改端口为9102,如果你不冲突还是可以用-p 9100:9100.</p>
<p> </p>
<p>前端访问:http://ip:9102/</p>
<p>三、prometheus配置node-expoter</p>
<p>1.修改prometheus.yml文件</p>
<p># my global config<br>global:<br>scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.<br>evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.<br># scrape_timeout is set to the global default (10s).<br> <br># Alertmanager configuration<br>alerting:<br>alertmanagers:<br> - static_configs:<br> - targets:<br> # - alertmanager:9093<br> <br># Load rules once and periodically evaluate them according to the global 'evaluation_interval'.<br>rule_files:<br># - "first_rules.yml"<br># - "second_rules.yml"<br> <br># A scrape configuration containing exactly one endpoint to scrape:<br># Here it's Prometheus itself.<br>scrape_configs:<br># The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.<br>- job_name: "prometheus"<br> <br> # metrics_path defaults to '/metrics'<br> # scheme defaults to 'http'.<br> <br> static_configs:<br> - targets: ["localhost:9090"]<br>- job_name: "node-exporter"<br> <br> # metrics_path defaults to '/metrics'<br> # scheme defaults to 'http'.<br> <br> static_configs:<br> - targets: ["你自己的ip:9102"]<br>也就是在原prometheus.yml文件上添加</p>
<p>- job_name: "node-exporter"</p>
<p> # metrics_path defaults to '/metrics'<br> # scheme defaults to 'http'.</p>
<p> static_configs:<br> - targets: ["你自己的ip:9102"]<br> </p>
<p>2.更新prometheus上的prometheus.yml文件</p>
<p>执行命令:</p>
<p>sudo docker exec -it prometheus /bin/sh -c 'kill -HUP $(pidof prometheus)'<br>这个命令直接更新prometheus.yml文件,不用重启prometheus。<br>五、grafana配置prometheus数据源,导入模板,查看效果。</p>
</div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div> </div><br><br>
来源:https://www.cnblogs.com/xiaozgang/p/18518813
頁:
[1]