津爱改装车|我选择的开源运维监控系统-Prometheus( 二 )

systemd时候记得一定要加上WorkingDirectory的工作目录 , 这个决定你的数据存放到什么地方 。
systemd管理:
systemctl daemon-reload?systemctl enable prometheus?systemctl start prometheus?systemctl stop prometheus?systemctl restart prometheus部署node_exporternode_exporter是用于获取主机监控指标的程序 , 也是Go写的 , 部署一样方便 , 二进制直接执行就可以了 。
tarzxvf node_exporter-1.0.1.linux-amd64.tar.gz 同样也可以使用systemd执行服务管理
vim /usr/lib/systemd/system/node_exporter.service[Unit]Description=prometheusAfter=network.target?[Service]Type=simpleWorkingDirectory=/opt/node_expaorter/node_expaorterExecStart=/opt/node_expaorter/node_expaorterLimitNOFILE=65536PrivateTmp=trueRestartSec=2StartLimitInterval=0Restart=always?[Install]WantedBy=multi-user.targetsystemd管理:
systemctl daemon-reload?systemctl enable node_exporter?systemctl start node_exporter?systemctl stop node_exporter?systemctl restart node_exporter增加监控编辑prometheus的配置文件prometheus.yaml , 添加上job 。
复制上面的prometheus的job_name , 注意yaml的格式 , 需要相同的缩进 , 如果只有几台固定的机器 , 直接使用静态配置就可以了 。
- job_name: 'node_exporter'?# metrics_path defaults to '/metrics'# scheme defaults to 'http'.?static_configs:- targets: ['192.168.122.100:9100','192.168.122.101:9100','192.168.122.101:9100']如果有很多台主机需要监控 , 而且有可能随时需要增加或者删除 , 这时候最简单的方式就是使用监听目录的文件变化来加载对应的配置 。 配置也很简单
- job_name: 'node_exporter'refresh_interval: 1mfile_sd_configs:- files:- /opt/prometheus/servers/*.json这样子就设置根据文件的变化来修改对应的配置 , 比较灵活 。
refresh_interval 指定文件检测的间隔 , 默认是5分钟 。
只要是配置目录下后缀名是.json的文件都会被自动加载 , 当然文件格式是有要求的 。
[{"targets": ["192.168.122.100:9100"],"labels": {"instance": "192.168.122.100","job": "node_exporter"}},{"targets": ["192.168.122.101:9100"],"labels": {"instance": "192.168.122.101","job": "node_exporter"}}]这里可以对标签进行修改或者增加 。 也可以分成多个文件 。 格式都要一样的 。
重载配置如果是静态配置需要重载Prometheus的进程 , 通过kill -HUP [pid] 的方式就可以重载了 。
也可以通过启用管理api进行重载 , 这个需要在启动的时候加--web.enable-admin-api的参数
然后通过访问:
curl http://localhost:9090/-/reload如果是动态文件的方式就不用管了 , 配置好文件 , 到时间间隔检测的文件变化就会自动加载了 。
总结不是很简单 , 一会就可以完成部署 , 但是还有很多优化的空间 , 最好是安全的问题:

  1. systemd服务默认是使用root用户启动服务的 , 我们可以通过设置User=username , 来使用普通用户执行 , 如果之前使用root用户开启过了 , 就需要修改一下数据目录data的权限 。
  2. 进行不要开启admin-api , 虽然很方便 , 但是也存在风险 , 使用动态文件配置就可以轻松解决重载的问题了 。
  3. 默认服务都是通过http访问的没有密码验证、ssl加密等安全措施 , 也是一个风险点 。 解决!prometheus的端口可以使用nginx进行代理 , 增加https证书即可;针对node_exporter在1.0版本之后也可以使用https+basic_auth的方式增加安全性 。