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

简介运维监控系统 , 不用多介绍 , 网上有很多介绍的文章 。
为什么选择Prometheus呢?大家应该都有自己的理由 。

  1. 部署简单 , Go写的程序基本上解压就可以使用 , 不用太多的依赖安装 。
  2. 服务自动化发现 , 可以使用console , 也可以使用动态文件的方式(这个是我想用的) 。
  3. 高性能 , 单点就有很高的性能 , 目前很多监控系统都支持分布式 , 单点性能不好 , 靠分布式来缓解压力 。
  4. 强大的查询语句 , 有很多实用的函数 , 可以提供给我们查询分析 。
  5. 结合grafana可以快速地实现图表 。

津爱改装车|我选择的开源运维监控系统-Prometheus不喜欢有千万种理由 , 但喜欢 , 一个理由就够了 。
部署测试在Prometheus的官网 , 可以快速下载到安装包 , 就是一个 压缩包而已 。 有支持了很多平台 , 我们还是习惯在Linux上进行部署 。
tar zxvf prometheus-2.20.0.linux-amd64.tar.gz
津爱改装车|我选择的开源运维监控系统-Prometheusprometheus的配置文件是yaml格式的 , 默认配置文件:
# my global configglobal:scrape_interval:15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configurationalerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093?# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.rule_files:# - "first_rules.yml"# - "second_rules.yml"?# A scrape configuration containing exactly one endpoint to scrape:# Here it's Prometheus itself.scrape_configs:# The job name is added as a label `job=` to any timeseries scraped from this config.- job_name: 'prometheus'?# metrics_path defaults to '/metrics'# scheme defaults to 'http'.?static_configs:- targets: ['localhost:9090']
  • global:prometheus的全局配置 ,比如采集间隔 , 抓取超时时间等 。
  • alerting:配置altermanager , prometheus将报警规则推送到指定的alertmanager实例地址
  • rule_files:报警规则文件 ,prometheus根据规则信息 , 会推送报警信息到alertmanager中 。
  • scrape_configs:抓取配置 , prometheus通过这里的配置采集数据 。
默认的监听端口是9090 , 这里默认配置就有抓取prometheus本身指标的配置 。
scrape_configs:# The job name is added as a label `job=` to any timeseries scraped from this config.- job_name: 'prometheus'?# metrics_path defaults to '/metrics'# scheme defaults to 'http'.?static_configs:- targets: ['localhost:9090']
津爱改装车|我选择的开源运维监控系统-Prometheus配置启动prometheus没有Daemon形式执行的 , 可以使用nohup在后台运行 。 也可以利用systemd来管理 , 直接编写一个service文件就可以了 。
vim /usr/lib/systemd/system/prometheus.service[Unit]Description=prometheusAfter=network.target?[Service]Type=simpleWorkingDirectory=/opt/prometheus/prometheusExecStart=/opt/prometheus/prometheus --config.file="/opt/prometheus/prometheus.yml"LimitNOFILE=65536PrivateTmp=trueRestartSec=2StartLimitInterval=0Restart=always?[Install]WantedBy=multi-user.target