当前位置: 首页 > 科技观察

如何使用Prometheus轻松实现集群监控?

时间:2023-03-14 20:35:21 科技观察

1。Prometheus类似于Zabbix和Zabbix。Prometheus也是近几年流行的开源监控框架。与Zabbix不同的是,Prometheus相对更加灵活,模块之间解耦,比如告警模块,代理模块等,可以随意配置。服务器和客户端都可以开箱即用,不需要安装。Zabbix是一套安装搞定一切,非常庞大复杂。Zabbix的客户端代理可以很方便的通过脚本读取机器中的数据库、日志等文件进行上报。Prometheus的reportingclient分为不同语言的SDK和不同用途的exporter。比如你要监控机器状态,mysql性能等,有大量成熟的exporter可以直接开箱即用,通过http通信。服务端提供信息上报(服务端拉取信息);而如果你想监控自己的业务状态,使用官方或其他人编写的各种语言的SDK更方便。数据存储在数据库或日志中,供zabbix-agent收集。Zabbix的客户端更多的是报表、推送模式。在Prometheus中,客户端也在本地存储监控数据,服务端定时拉取需要的数据。在接口方面,zabbix比较老,而prometheus比较新,而且非常简单,简单到只能算是一个测试和配置平台。想要获得良好的监控体验,搭配Grafana是必经之路。2.安装PrometheusPrometheus的安装方法有很多种,可以在官网看到。这里只介绍下载解压安装包的方式,因为Prometheus是“开箱即用”的,也就是说解压安装包后可以直接使用。无需执行安装程序,非常方便。您可以前往Prometheus官网下载页面获取最新版本信息。比如最新版本是2.7.2,然后下载对应系统的安装包,然后解压$wgethttps://github.com/prometheus/prometheus/releases/download/v2.7.2/prometheus-2.7.2.linux-amd64.tar.gz$tarxvfzprometheus-2.7.2.linux-amd64.tar.gz解压后在当前目录下会出现对应的文件夹,进入该文件夹,即可直接运行Prometheus服务器!$cdprometheus-2.7.2.linux-amd64//查看版本$./prometheus--version//运行服务器$./prometheus--config.file=prometheus.yml命令prometheus.yml文件其实就是一个配置文件,也在当前目录中,您可以在其中配置一些东西。3、配置Prometheus上面说了prometheus.yml是一个配置文件。当你打开它时,你可以看到几十行文本,类似于以下内容:$catprometheus.yml#myglobalconfigglobal:scrape_interval:15s#Setthescrapeintervaltoevery15seconds.Defaultisevery1minute.evaluation_interval:15s#Evaluaterulesevery15seconds.Thedefaultisevery1minute.#scrape_timeoutissettotheglobaldefault(10s).#Alertmanagerconfigurationalerting:alertmanagers:-static_configs:-targets:#-alertmanager:9093#Loadrulesonceandperiodicallyevaluatethemaccordingtotheglobal'evaluation_interval'.rule_files:#-"first_rules.yml"#-"second_rules.yml"#Ascrapeconfigurationcontainingexactlyoneendpointtoscrape:#Hereit'scrapeabelself.#Prometheusitself添加了Prometheusitselfjob=`toanytimeseries从这个配置中抓取。-job_name:'prometheus'#metrics_pathdefaultsto'/metrics'#schemedefaultsto'http'.static_configs:-targets:['localhost:9090']大致分为四部分:global:全局配置,其中scrape_interval表示抓取数据的间隔时间一次,evaluation_interval表示告警规则检测的间隔时间;警报:Alertmanager配置,Alertmanager还没有安装;rule_files:告警规则是什么;scrape_configs:抓取监控信息的targetjob_name是一个target,它的targets是收集信息的IP和端口。这里默认监听Prometheus本身,修改这个可以修改Prometheus的监听端口。Prometheus的每一个exporter都会是一个target,他们可以上报不同的监控信息,比如机器状态,或者mysql性能等等,不同语言的SDK也会是一个target,他们会上报你定制的业务监控信息。4、Prometheus界面运行后,在浏览器中访问【机器IP:端口】即可查看Prometheus界面。这里的机器IP就是你运行Prometheus的机器,端口就是上面配置文件中配置的监控端口。打开后界面如下:如果不能访问,请检查端口是否未开放或允许外网访问。界面非常简单(所以我们还是需要Grafana)。在上面的标签栏中,Alerts是警报管理器,尚未安装。Graph是查看监控项的图表,也是访问后的默认页面。在Status中,可以查看一些配置、监控目标、告警规则等。在Graph页面,由于我们默认监控了Prometheus本身,所以我们已经可以查看到一些监控图表。比如在输入框中输入“promhttp_metric_handler_requests_total”,执行Execute,切换到下方小标签中的Graph,可以看到“/metrics”访问次数的折线图。5、添加机器状态监控我们尝试添加第一个监控exporter——监控当前机器本身的状态,包括硬盘、CPU、流量等。由于Prometheus已经有很多现成的常用exporter,我们直接使用其中的node_exporter他们。注意,这里的名字虽然是node_exporter,但是和nodejs没有任何关系。从Prometheus的角度来看,一台机器或一个节点就是一个节点,所以exporter报告的是当前节点的状态。node_exporter本身也是一个http服务,可以被prometheus服务器调用(pull)获取监控信息。安装方法也是下载安装包解压直接运行://下载最新版本,可以在github的release中右键最新版本下载链接$wgethttps://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz//解压$tarxvfznode_exporter-0.17.0.linux-amd64。tar.gz//进入解压目录$cdnode_exporter-0.17.0.linux-amd64//运行监控采集服务$./node_exporter运行后可以看到监听9100端口,这样就完成了可以收集。现在先访问看看能不能运行成功:这里也可以看出每个exporter本身就是一个http服务,服务器会定时访问获取监控信息。如果访问成功,我们进入prometheus配置文件(prometheus.yml)并添加这个target:scrape_configs:-job_name:'prometheus'static_configs:-targets:['localhost:9090']-job_name:'server'static_configs:-targets:['localhost:9100']可以看到是在scrape_configs模块中添加一个作业,命名,配置监听IP和端口,然后重新运行prometheus,在Status→Targets的tabbar可以多看到一个:如果新添加的target状态为“UP”,则表示监控成功。这时候进入Graph,在输入框中输入node,可以发现有很多node开头的监控项,都是和机器状态相关的。大家可以自己执行看看。安装Grafana因为Prometheus的界面看起来很简单,所以我们还需要Grafana这个非常强大也是最常用的监控展示框架。我们还是采用下载二进制包的方式来安装。这种方式不需要你当前的linux用户有sudo权限,也不需要你知道root密码。如果你有这些权限,那就使用yum等其他直接安装方式。安装说明见Grafana官方安装页面。我们直接下载解压:$wget[https://dl.grafana.com/oss/release/grafana-6.0.0.linux-amd64.tar.gz](https://dl.grafana.com/oss/release/grafana-6.0.0.linux-amd64.tar.gz)$tar-zxvfgrafana-6.0.0.linux-amd64.tar.gz页面给出了最新版本的安装命令,可以选择切换到其他版本安装命令在右上角。解压后会出现grafana-6.0.0目录,进入该目录,即可运行Grafana:$cdgrafana-6.0.0//启动Grafana。$./bin/grafana-serverweb从日志信息可以看到Grafana默认运行在3000端口。这个也可以通过配置文件来修改:创建一个名为custom.ini的配置文件,添加到conf文件夹下,复制conf/defaults.ini中定义的所有设置,修改成你想要的。Grafana显示监控信息后,安装并启动Grafana,在浏览器中输入IP:3000访问Grafana,默认管理员账号密码为admin/admin。第一次登录会修改管理员密码,之后就可以登录查看了。界面左侧是竖排的选项,在设置图标中选择DataSource,添加Prometheus的数据源,URL填上你为PrometheusServer设置的ip+端口号。如果它没有被更改并且它在本地机器上运行,那么它是localhost:9090。此时可以添加一个dashboard,即监控面板。在新配置的PrometheusDataSource的设置中,有一个名为dashboard的标签。我们导入Prometheus2.0Stats面板,可以看到我们Prometheus的一些基本监控情况。这其实就是导入一个别人写的面板配置,连接我们自己的Prometheus监控数据进行展示。记得我们上面还运行了一个nodeexporter,现在我们来展示监控信息,点击左侧竖列加号图标中的Import,导入其他人写的panel。在Grafana官方的面板页面,其实可以看到很多别人配置的面板。我们找到我们想要的面板,比如这个nodeexporter:复制右边的面板ID,然后在Import界面输入ID,Load后配置数据源对于我们的Prometheus,我们自己机器的状态监控面板就可以出现,这很酷。此面板需要安装一个饼图插件(页面上有说明)。Grafana插件的安装方法是://进入Grafana/bin目录./grafana-clipluginsinstall[插件名称]//安装成功后,重启Grafana面板中的每一个图都可以编辑,告警也可以被设置。Grafana告警支持多种方式。最常用的是email和webhook,所以没必要用Prometheus告警。