监控
Zabbix
Zabbix部署及基础配置
Prometheus
Prometheus部署
基于Consul的自动发现
Prometheus Operator部署
本文档使用 MrDoc 发布
-
+
首页
Prometheus部署
#### 1、简介 Prometheus受启发于Google的Brogmon监控系统(相似的Kubernetes是从Google的Brog系统演变而来),从2012年开始由前Google工程师在Soundcloud以开源软件的形式进行研发,并且于2015年早期对外发布早期版本。2016年5月继Kubernetes之后成为第二个正式加入CNCF基金会的项目,同年6月正式发布1.0版本。2017年底发布了基于全新存储层的2.0版本,能更好地与容器平台、云平台配合。  Prometheus是一个开放性的监控解决方案,用户可以非常方便的安装和使用Prometheus并且能够非常方便的对其进行扩展。为了能够更加直观的了解Prometheus Server,接下来我们将在本地部署并运行一个Prometheus Server实例,通过Node Exporter采集当前主机的系统资源使用情况。 并通过Grafana创建一个简单的可视化仪表盘。 #### 2、安装Prometheus ##### 2.1 下载软件包并解压 对于非Docker用户,可以从[https://prometheus.io/download/](https://prometheus.io/download/)找到最新版本的Prometheus Sevrer软件包 ```bash curl -LO https://github.com/prometheus/prometheus/releases/download/v2.38.0/prometheus-2.38.0.linux-amd64.tar.gz tar -xvf prometheus-2.38.0.linux-amd64.tar.gz ``` ##### 2.2 配置软件 解压后当前目录会包含默认的Prometheus配置文件promethes.yml Promtheus作为一个时间序列数据库,其采集的数据会以文件的形似存储在本地中,默认的存储路径为data/,因此我们需要先手动创建该目录: ```bash mkdir -p data ``` 添加prometheus到systemd ```bash vim /lib/systemd/system/prometheus.service After=network.target ntpdate.service sntp.service ntpd.service chronyd.service [Service] KillMode=control-group Restart=on-failure RestartSec=60 ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --web.console.templates=/opt/prometheus/consoles --web.console.libraries=/opt/prometheus/console_libraries --storage.tsdb.path=/opt/prometheus/data --log.level=info ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target ``` ##### 2.3 启动Prometheus并设置为开机自启 ```bash systemctl start prometheus systemctl enable prometheus ``` 启动完成后,可以通过[http://localhost:9090](http://localhost:9090/)访问Prometheus的UI界面  #### 3、使用Node Exporter采集主机运行数据 在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。因此为了能够能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。 从上面的描述中可以看出Exporter可以是一个相对开放的概念,其可以是一个独立运行的程序独立于监控目标以外,也可以是直接内置在监控目标中。只要能够向Prometheus提供标准格式的监控样本数据即可。 ##### 3.1 安装Node Exporter Node Exporter同样采用Golang编写,并且不存在任何的第三方依赖,只需要下载,解压即可运行。可以从[https://prometheus.io/download/](https://prometheus.io/download/)获取最新的node exporter版本的二进制包。 ```bash curl -OL https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz tar -xzf node_exporter-0.17.0.linux-amd64.tar.gz cd node_exporter-0.17.0.linux-amd64/ mv node_exporter /usr/local/bin/ ``` 配置脚本 ```bash cat >> /etc/rc.d/init.d/node_exporter <<EOF #!/bin/bash # # /etc/rc.d/init.d/node_exporter # # Prometheus node exporter # # description: Prometheus node exporter # processname: node_exporter # Source function library. . /etc/rc.d/init.d/functions PROGNAME=node_exporter PROG=/opt/prometheus/$PROGNAME USER=root LOGFILE=/var/log/prometheus.log LOCKFILE=/var/run/$PROGNAME.pid start() { echo -n "Starting $PROGNAME: " cd /opt/prometheus/ daemon --user $USER --pidfile="$LOCKFILE" "$PROG &>$LOGFILE &" echo $(pidofproc $PROGNAME) >$LOCKFILE echo } stop() { echo -n "Shutting down $PROGNAME: " killproc $PROGNAME rm -f $LOCKFILE echo } case "$1" in start) start ;; stop) stop ;; status) status $PROGNAME ;; restart) stop start ;; reload) echo "Sending SIGHUP to $PROGNAME" kill -SIGHUP $(pidofproc $PROGNAME)#!/bin/bash ;; *) echo "Usage: service node_exporter {start|stop|status|reload|restart}" exit 1 ;; esac EOF ``` 添加到systemd ``` vim /lib/systemd/system/node_exporter.service After=network.target ntpdate.service sntp.service ntpd.service chronyd.service [Service] KillMode=control-group Restart=on-failureRestartSec=60 ExecStart=/usr/local/bin/node_exporter ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target ``` 运行node exporter ```bash service node_exporter start ``` 启动成功后,查看端口 ```bash netstat -anplt|grep 9100 ``` 访问[http://localhost:9100/](http://localhost:9100/)可以看到以下页面  ##### 3.2 添加node_exporter到Prometheus 为了能够让Prometheus Server能够从当前node exporter获取到监控数据,这里需要修改Prometheus配置文件。编辑prometheus.yml并在scrape_configs节点下添加以下内容: ```bash vim /opt/prometheus/prometheus.yml scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] # 采集node exporter监控数据 - job_name: 'node' static_configs: - targets: ['localhost:9100'] ``` 重新启动Prometheus Server ```bash systemctl restart prometheus ``` 访问[http://localhost:9090](http://localhost:9090/),进入到Prometheus Server。如果输入“up”并且点击执行按钮以后,可以看到如下结果  如果Prometheus能够正常从node exporter获取数据,则会看到以下结果 ```bash up{instance="localhost:9090",job="prometheus"} 1 up{instance="localhost:9100",job="node"} 1 ``` 其中“1”表示正常,反之“0”则为异常。 #### 4、监控数据可视化 Prometheus UI提供了快速验证PromQL以及临时可视化支持的能力,而在大多数场景下引入监控系统通常还需要构建可以长期使用的监控数据可视化面板(Dashboard)。这时用户可以考虑使用第三方的可视化工具如Grafana,Grafana是一个开源的可视化平台,并且提供了对Prometheus的完整支持。 ##### 4.1 安装Grafana 添加Grafana源 ```bash [root@server ~]# vim /etc/yum.repos.d/grafana.repo [grafana] name=grafana baseurl=https://packages.grafana.com/enterprise/rpm repo_gpgcheck=1 enabled=1 gpgcheck=1 gpgkey=https://packages.grafana.com/gpg.key sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt ``` 更新缓存 ```bash yum makecache ``` 安装Grafana ```bash yum install grafana-enterprise ``` 编辑配置文件 ```bash vim /etc/sysconfig/grafana-server GRAFANA_USER=grafana GRAFANA_GROUP=grafana GRAFANA_HOME=/usr/share/grafana LOG_DIR=/var/log/grafana DATA_DIR=/var/lib/grafana MAX_OPEN_FILES=10000 CONF_DIR=/etc/grafana CONF_FILE=/etc/grafana/grafana.ini RESTART_ON_UPGRADE=true PLUGINS_DIR=/var/lib/grafana/plugins PROVISIONING_CFG_DIR=/etc/grafana/provisioning # Only used on systemd systems PID_FILE_DIR=/var/run/grafana ``` 启动Grafana并设置为开机自启动 ```bash systemctl start grafana-server systemctl enable grafana-server ``` 添加数据源 访问[http://localhost:](http://localhost:9090/)3000,进入到Grafana Server       grafana的官方提供了很多社区或者官方设置的漂亮的dashboard,地址如下: [点击打开链接](https://grafana.com/dashboards)       #### 5、告警处理 ##### 5.1 部署Alertmanager Alertmanager和Prometheus Server一样均采用Golang实现,并且没有第三方依赖。 使用二进制包部署AlertManager ###### 5.1.1 获取并安装软件包 Alertmanager最新版本的下载地址可以从Prometheus官方网站[https://prometheus.io/download/](https://prometheus.io/download/)获取。 ```bash curl -LO https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz tar xvf alertmanager-0.24.0.linux-amd64.tar.gz ``` ###### 5.1.2 创建alertmanager配置文件 Alertmanager解压后会包含一个默认的alertmanager.yml配置文件,内容如下所示··· ```bash global: resolve_timeout: 5m route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: 'web.hook' receivers: - name: 'web.hook' webhook_configs: - url: 'http://127.0.0.1:5001/' inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance'] ``` ###### 5.1.3 添加Altermanager到systemd ```bash vim /lib/systemd/system/altermanager.service [Unit] Description=alertmanager Documentation=https://prometheus.io/ After=network.target [Service] User=prometheus Group=prometheus ExecStart=/opt/alertmanager/alertmanager --config.file=/opt/alertmanager/alertmanager.yml --storage.path=/opt/alertmanager/data Restart=on-failure [Install] WantedBy=multi-user.target ``` ###### 5.1.4 启动altermanager并配置开机自启动 ```bash systemctl start altermanager systemctl enable altermanager ``` Alertmanager启动后可以通过9093端口访问,[http://192.168.33.10:9093](http://192.168.33.10:9093/)  ##### 5.2 添加altermanager到Prometheus 在Prometheus的架构中被划分成两个独立的部分。Prometheus负责产生告警,而Alertmanager负责告警产生后的后续处理。因此Alertmanager部署完成后,需要在Prometheus中设置Alertmanager相关的信息。 编辑Prometheus配置文件prometheus.yml,并添加以下内容 ```bash alerting: alertmanagers: - static_configs: - targets: ['localhost:9093'] ``` 重启Prometheus服务。 ##### 5.3 添加altermanager到Grafana     导入dashboard     
阿星
2024年1月6日 18:04
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码