第九讲内容如下
1)prometheus服务端安装和后台稳定运行
2)prometheus服务端配置文件写法
3)node_exporter安装和后台运行
4)node_exporter观察和采集数据
5)prometheus查询采集回来的各种数据
6) 使用我们之前学过的prometheus命令行的形式练习组合各种监控图
(一)prometheus服务端的安装和后台稳定运行
下载地址:https://github.com/prometheus/prometheus/releases/tag/v2.10.0
解压
mv prometheus-2.10.0.linux-amd64.tar.gz /usr/local/ cd /usr/local/ tar -xf prometheus-2.10.0.linux-amd64.tar.gz mv prometheus-2.10.0.linux-amd64 prometheus
运行
cd prometheus ./prometheus
我们需要让prometheus_server 运⾏在后台 ⽽不是前端
第一种方法安装screen
yum -y install screen
使用screen启动
#进入screen screen #启动prometheus ./prometheus
ctrl+a+d退出
查看放入后台的进程
screen -ls
screen还有另外⼀个好处 就是 可以随时切换进⼊ 程序前台窗 ⼜ 查看各种调试信息
screen -r
screen 也有不好的地⽅ • 不够正规化 总觉得还是个临时办法
• screen -l 提供的后台 列表 不够⼈性化,很多时候 你记不 住 到底哪个是哪个
• 很容易被误关闭 操作的时候 ctrl +ad / ctrl +d 不⼩⼼操作 错了 直接就退出去了
方法二
使⽤daemonize 放⼊后台⽅式
编译安装
git clone git://github.com/bmc/daemonize.git && cd daemonize ./configure && make && make install daemonize -v
指定运行启动脚本
# cat /usr/local/prometheus/up.sh /usr/local/prometheus/prometheus --config.file="prometheus.yml" --web.listen-address="0.0.0.0:9090" --web.read-timeout=5m --web.max-connections=10 --storage.tsdb.retention=15d --storage.tsdb.path="/usr/local/prometheus/data" --query.max-concurrency=20 --query.timeout=2m
参数解释
–config.file=“prometheus.yml” 指定配置文件 –web.read-timeout=5m 请求链接的最大等待时间,防止太多的空闲链接占用资源 –web.max-connections=512 针对prometheus,获取数据源的时候,建立的网络链接数,做一个最大数字的限制,防止链接数过多造成资源过大的消耗 –storage.tsdb.retention=15d 重要参数,prometheus 开始采集监控数据后,会存在内存和硬盘中;对于保存期限的设置。时间过长,硬盘和内存都吃不消;时间太短,要查历史数据就没了。企业15天最为合适。 –storage.tsdb.path="/usr/local/prometheus/data" 存储数据路径,不要随便定义 –query.max-concurrency=20 用户查询最大并发数 –query.timeout=2m 慢查询强制终止
设置up.sh执行权限
chmod +x /usr/local/prometheus/up.sh
后台启动
daemonize -c /usr/local/prometheus /usr/local/prometheus/up.sh
查看进程是否启动
放入开机自启动
# cat /etc/rc.local touch /var/lock/subsys/local daemonize -c /usr/local/prometheus /usr/local/prometheus/up.sh
重启正常启动即可
prometheus对时间比较敏感,需要设置ntpdate随时同步时间
数据目录
其中 这些 长串字母的 是历史数据保留 ⽽ 当前近期数据 实际上保留在内存中
并且 按照⼀定间隔 存放在 wal / ⽬录中 防⽌突然断电 或者 重 启 以⽤来 恢复内存中的数据
(⼆) prometheus 服务端配置⽂件写法
配置文件
# cat prometheus.yml # my global config global: 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 configuration alerting: 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=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090','192.168.1.101:9100','192.168.1.102:9100','192.168.1.11:9100']
注意:targets也可以使用域名,前提是需要设置好DNS或者是修改了本机的hosts
(三) node_exporter 安装和后台运⾏
下载地址:https://github.com/prometheus/node_exporter/releases/tag/v0.15.2
解压运行
tar -xf node_exporter-0.15.2.linux-amd64.tar.gz mv node_exporter-0.15.2.linux-amd64 node_exporter cd node_exporter ./node_exporter &
设置systemctl启动
# cat /usr/lib/systemd/system/node_exporter.service [Unit] Description=Prometheus Node Exporter After=network.target [Service] ExecStart=/usr/local/node_exporter/node_exporter User=nobody [Install] WantedBy=multi-user.target
启动和设置成自启动
systemctl start node_exporter systemctl enable node_exporter
默认运行端口是9100
本机可以使用curl目录查看数据
curl localhost:9100/metrics
然后 我们去到 node_exporter在 github上的地址 来看看 我们伟⼤的社区开发者们 都给咱们提供了 哪些有⽤的 采集项⽬
https://github.com/prometheus/node_exporter
(五)prometheus查询采集回来的各种数据
接下来 我们回到 prometheus的主界⾯ 验证⼀下 我们新部署的 监控机器上的node_exporter 是否给我 们 正确返回了 数据 随便挑⼏个 key 就可以查看
另外 prometheus 的命令⾏ 本⾝也⽀持suggest 功能(输⼊提 ⽰)
随便找个key 查询⼀下 是否有输出图输出 就可以了 本⾝node_exporter提供的 keys 实在太多了 (因为 都是从 Linux系统中的 底层 各种挖掘数据回来) 我们没有时间 也没有必要 把每⼀个key 都掌握 只要知道 ⼀ 部分重要的 必须的key 就⾜够了
(六) 使⽤我们之前的学过的 prometheus 命令⾏的形式 练习 组合各种监控图
接下来 咱们找⼀个 ⽐较重要的key 然后 ⽤我们学过的 命令⾏ ⽅式 给他组成⼀个 临时监控图
比如
node_cpu
node_memory
node_disk