prometheus添加监控节点(二)

概述:

​ 记录 prometheus 节点详细部署过程。

注意

​ 所有主机监控方式大多为 http 协议抓取模式,所以需要暴露相应的端口,服务端才能抓取。

一:windows

​ window的代理节点安装非常方便,官方提供 exe 和 msi 两种安装方式,都是双击安装即可,记得设置开机启动。

​ 文件下载地址:https://github.com/martinlindhe/wmi_exporter/releases

​ 文件默认工作端口为 9182 ,防火墙记得放通端口。其他高级操作自行阅读文档。

二:linux

​ 官方提供 编译安装 、二进制文件 、docker 等多种安装方式,为了方便,这里使用二进制文件进行安装;

​ 文件下载地址:https://github.com/prometheus/node_exporter/releases

​ 将文件放到合适的位置打开,防火墙放通默认工作端口 9100

​ 如果必要,可以设置为 systemd 服务:

#创建node_exporter用户并将node_exporter程序写入systemd服务
sudo groupadd node_exporter
sudo useradd -g node_exporter -m -d /data/node_exporter -s /sbin/nologin node_exporter
sudo chown -R node_exporter:node_exporter /data/node_exporter
sudo vim /etc/systemd/system/node_exporter.service
#写入以下配置
[Unit]
Description=Node_exporter
DefaultDependencies=no
 
[Service]
Type=simple
User=node_exporter
RemainAfterExit=yes
ExecStart=/data/node_exporter/node_exporter --collector.textfile.directory=/data/node_exporter/ --web.listen-address=:9100 #根据实际路径修改
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
 
sudo systemctl start node_exporter.service
sudo systemctl enable node_exporter.service

三:交换机

​ 要监控交换机需要安装 snmp_node 代理节点,这个节点可以放在任意一台服务器上,前提是 snmp 节点服务器能和交换机通信,还能与 prometheus 主服务器之间通信。

测试命令:

snmpwalk -v 2c  172.16.108.1   -c public ifDescr 
#可能需要自行安装snmp
#centos7
yum install -y net-snmp net-snmp-utils
systemctl start snmpd
systemctl enable snmpd

​ 文件下载地址:https://github.com/prometheus/snmp_exporter/releases

​ 默认监听端口: 9116 防火墙放通

​ 如有必要,写入 systemd 服务

#创建 snmp_exporter用户并将 snmp_exporter 程序写入systemd服务
sudo groupadd snmp_exporter
sudo useradd -g snmp_exporter -m -d /data/snmp_exporter -s /sbin/nologin snmp_exporter
sudo chown -R snmp_exporter:snmp_exporter /data/snmp_exporter
sudo vim /etc/systemd/system/snmp_exporter.service
#写入以下配置
[Unit]
Description=prometheus
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/data/snmp_exporter --config.file=/data/snmp_exporter/snmp.yml --storage.tsdb.path=/data/snmp_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target

snmp_exporter默认的snmp版本为1,并且没有指定 Community ,需要修改一下为自己的适配配置

编辑 snmp_exporter 目录下 snmp.yml

修改 if_mib 模块最后一行

version: 2
auth:
  conmmunity: 123456  #类似于认证口令

如果有多个交换机 community 不一样,解决办法是复制 if_mib 模块全部内容修改为 if_mib2 再修改为不同的 community

启动 snmp_exporter

systemctl start snmp_exporter
systemctl enable snmp_exporter

验证是否有抓取数据

curl 'http://安装snmp_exporter的机器的IP:9116/snmp?target=被监控交换机IP' 

四:对接 prometheus 主服务器

​ 修改 prometheus 主目录下文件 prometheus.yml (配置这东西花了非常多的时间,当时遇到的一些坑难以表述,现在看来倒是挺简单的,也许这就是进步?)

前提

​ 主配置文件 prometheus.yml 属于yaml 格式,不识别 tab 缩进,只认 空格 ,而且以不同的对齐代表不同的归属层级,具体可参考 YAML语言教程-阮一峰

​ 需要将各个节点和 prometheus 对接起来,只需要修改 scrape_configs: 这一段配置文件;这一段又分为两种模式,静态发现和动态发现,具体配置如下

scrape_configs:

#<scrape_config>区域指定了目标列表和目标下的配置参数, 这些配置参数描述了如何抓取度量指标数据。
#一个scrape_config可以指定多个job,每个job下有多个targets (yaml格式只能一行一行的注释)

  - job_name: 'prometheus'   #job_name 的值必须唯一
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'linux1'
    static_configs:                #配置静态发现列表
      - targets: ['192.168.33.11:9100']     #括号内可添加多个 ip:port 的格式,以 , 分隔
        labels:                    #对job打上一个标签,以便于 prometheus 的归类发现,以及更高级操作
          instance: server1
  - job_name: 'linux2'
    static_configs:
      - targets: ['192.168.33.12:9100']
        labels:
          instance: server2
  - job_name: 'file_ds'
    file_sd_configs:       #以 file_sd_configs 动态发现的模式,推荐使用这种方式,可以实现热添加
    - refresh_interval: 1m    #指定多久扫描一次目标配置文件
      files:
      - /data/prometheus/config/*.yaml   #指定目标文件的位置(注意文件的权限问题)
#以下一段为通过snmp协议监控交换机的配置,默认为snmp v2 版本
  - job_name: 'snmp'
    static_configs:
    - targets:
      - 172.16.104.201  # 添加需要被监控交换机的ip
    metrics_path: snmp
    params:
      module: [if_mib]  #指定使用snmp_exporter程序的 if_mib 模块
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9116  #指定 snmp_exporter监控节点的服务器位置,
        #这里为默认和 prometheus server 同一台主机

files:

/data/prometheus/config/node.yaml

配置示例:

- targets:
  - 192.168.1.2:9100
  - 192.168.1.1:9182
  - 192.168.177.206:9200
  labels:  #可以多个标签,以配合前端界面的分类
    server: dev-es
    env: linux
    name: gg22

prometheus 官方提供了一个非常贴心的工具,prometool 可以检查配置文件是否正确,用法:(其他用法自行开发)

./promtool check config prometheus.yml

五:对接 grafana 前端

​ 上一篇已经实例过了,就是添加一个数据源,非常简单。

​ 但是要注意的是,linux、windows、snmp 三种不同的类型面板是不通用的,因为查询语句不同;

我是在 grafana 官方 copy 的面板,如果愿意,自己可以从头开始构建界面,毕竟自己做的才是最适合自己的。

六:参考资料

https://love2.io/@1046102779/doc/prometheus/introductions/overview.md

prometheus监控交换机-csdn

Last modification:March 6th, 2019 at 04:49 pm

Leave a Comment