zoukankan      html  css  js  c++  java
  • Prometheus之监控节点

    最近闲暇之余,或者java学累了,就会看看别的视频,最近学的Prometheus中,发现他讲的和我看的书内容基本一模一样《Prometheus监控实战》,视频也是个人出的,讲的实战一般般,有兴趣的人可以看看这本书,还有一本源码我也买了,还没有开始看。

    监控节点

    Prometheus使用exporter工具来暴露主机和应用程序上的指标,目前有很多可用于各种目的的exporter。现在我们将专注于一个特定的exporter:NodeExporter。它是用Go语言编写的,提供了一个可用于收集各种主机指标数据(包括CPU、内存和磁盘)的库。它还有一个textfile收集器,允许你导出静态指标,我们很快就会看到这对发送有关节点的信息很有帮助,此外它还可以从批处理作业导出指标。注意 我们有时会使用术语“节点”来指代主机。首先选择其中一台Linux主机,然后下载并安装Node Exporter。我们将选择一个Docker守护进程主机。提示 如果你不想使用exporter,那么还有很多支持Prometheus的主机监控客户端。例如,collectd也可以收集Prometheus指标。

    安装Node Exporter

    你可以通过tar包来安装Node Exporter,在部分操作系统上也可以通过软件包进行安装。可以从Prometheus官网下载Node Exporter的tar包。下载并解压缩Node Exporter,然后将二进制文件移动到环境变量path包含的路径中。

    wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
    tar -zvxf node_exporter-0.18.1.linux-amd64.tar.gz
    mv node_exporter-0.18.1.linux-amd64 node_exporter
    cd node_exporter
    cp node_exporter /usr/local/bin/
    node_exporter --version
    

    配置textfile收集器

    我们还想配置一个特定的收集器,即textfile收集器,本章后面将使用它。textfile收集器非常有用,因为它允许我们暴露自定义指标。这些自定义指标可能是批处理或cron作业等无法抓取的,可能是没有exporter的源,甚至可能是为主机提供上下文的静态指标。收集器通过扫描指定目录中的文件,提取所有格式为Prometheus指标的字符串,然后暴露它们以便抓取。现在让我们设置收集器,首先创建一个目录来保存指标定义文件。

    可以看到它包含一个指标名称(metadata)和两个标签。一个标签role定义节点的角色。在示例中,标签的值为docker_server。另一个标签datacenter定义主机的地理位置。最后,指标的值为1,因为它不是计数型、测量型或计时型的指标,而是提供上下文。让我们将这个指标添加到textfile_collector目录下的metadata.prom文件中

    mkdir -p /var/lib/node_exporter/textfile_collector
    echo 'metadata{role="docker_server",datacenter="NJ"} 1' | sudo tee /var/lib/node_exporter/textfile_collector/metadata.prom
    

    在这里,我们将指标传递到名为metadata.prom的文件中。提示 在真实环境中,建议使用配置管理工具来编辑该文件。例如,在配置新主机时,可以从模板创建元数据指标,这可以让你自动对主机和服务进行分类。要启用textfile收集器,我们不需要配置参数,它默认就会被加载。但我们需要指定textfile_exporter目录,以便Node Exporter知道在哪里可以找到自定义指标。为此,我们需要指定--collector.textfile.directory参数。

    运行节点导出器

    注:我这里只收集常见的3个服务。它们是Docker守护进程、SSH守护进程和RSyslog守护进程。使用--collector.systemd.unit-whitelist参数进行配置,它会匹配systemd的正则表达式。

    nohup node_exporter --collector.textfile.directory /var/lib/node_exporter/textfile_collector --collector.systemd --collector.systemd.unit-whitelist="(docker|sshd|rsyslog).service" &>/dev/null &
    

    过滤收集器

    Node Exporter可以返回很多指标,也许你并不想把它们全部收集上来。除了通过本地配置来控制Node Exporter在本地运行哪些收集器之外,Prometheus还提供了一种方式来限制收集器从服务器端实际抓取的数据,尤其是在你无法控制正抓取的主机的配置时,这种方式非常有帮助。Prometheus通过添加特定收集器列表来实现作业配置。

    这里,我们将被抓取的指标限制在上面的收集器列表中,使用params块中的collect[]列表指定,然后将它们作为URL参数传递给抓取请求。你可以使用NodeExporter实例上的curl命令来对此进行测试。

    image-20200911135648144

    在 prometheus 服务器配置 scrap

    image-20200911133636455

    image-20200911134214164

    监控Docker容器

    Prometheus提供了几种方法来监控Docker,包括一些自定义exporter。然而,这些exporter一般都不会用到,推荐的方法是使用Google的cAdvisor工具。在Docker守护进程上,cAdvisor作为Docker容器运行,单个cAdvisor容器返回针对Docker守护进程和所有正在运行的容器的指标。Prometheus支持通过它导出指标,并将数据传输到其他各种存储系统,如InfluxDB、Elasticsearch和Kafka。注意 我们假设你已经安装并运行了Docker守护进程,并且了解Docker的基础知识。

    运行cAdvisor

    由于cAdvisor只是Docker主机上的另一个容器,因此我们可以使用docker run命令启动它。让我们在Docker1主机上运行一个cAdvisor容器。

    image-20200911142729868

    提示 ro表示只读。第二种类型是可读写的,是Docker套接字的挂载,通常位于/var/run目录中。我们还将容器内部的8080端口映射到主机上的8080端口,你可以用任何适合的端口来覆盖它。我们使用参数--detach以守护进程方式运行容器,并将容器命名为cadvisor。最后,我们使用带有latest标签的google/cadvisor图像。如果运行docker ps命令,刚可以看到正在运行的cAdvisor容器。

    image-20200911142816067

    抓取cAdvisor

    我们需要告诉Prometheus cAdvisor是在Docker守护进程上运行的。为此,我们将在配置中添加第三个作业。让我们在Prometheus服务器上编辑prometheus.yml。我们将再次使用static_configs添加单个目标,而不是使用任何类型的服务发现。

    image-20200911142910033

    可以看到我们添加了名为docker的新作业,它包含一个static_configs块,并且通过IP地址加端口8080的方式添加了三个Docker主机的列表。我们依然使用默认路径/metrics。如果再次使用SIGHUP或重新启动Prometheus服务器,那么我们的配置将被重新加载,它将开始抓取,然后新的时间序列数据将会出现。但比较重要的是,在我们继续之前,需要首先了解抓取的工作原理以及标签的生命周期。我们将使用cAdvisor指标来探索这个生命周期。

    image-20200911143302030

  • 相关阅读:
    show parameters和强制索引失效
    ALTER INDEX 始末
    ADMIN OPTION和GRANT ANY OBJECT PRIVILEGE的问题
    oracle正则表达式函数简单总结(一)
    简单说一下Native Dynamic SQL(动态sql)和包DBMS_SQL
    金山快盘的文件上传
    桶中取黑白球问题
    读书笔记:编程之美求二进制数中1的个数
    vim配置文件.vimrc
    JVM内存管理
  • 原文地址:https://www.cnblogs.com/dalianpai/p/13651385.html
Copyright © 2011-2022 走看看