Prometheus 是一款基于时序数据库的开源监控告警系统,是下一代云监控系统的首要选择,Loki是 Grafana Labs 团队发布的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统,二者与Grafana结合,可以实现将服务器、容器监控与收集日志集中到一个平台,方便运维人员使用,本文将演示部署demo,具体概念请读者自行百度,实际使用是需结合客观情况进行部署。
Grafana
1.安装
#官网(https://grafana.com/)下载并安装,使用yum安装rpm包可以自动解决依赖
yum install -y grafana-8.0.6-1.x86_64.rpm
systemctl enable grafana-server.service
systemctl start grafana-server.service 2.访问http://ip:3000
<br><h1>默认密码admin/admin
Prometheus
1.安装prometheus
tar -xvf prometheus-2.28.1.linux-amd64.tar.gz
mv prometheus-2.28.1.linux-amd64 /usr/local/prometheus
vim /etc/systemd/system/prometheus.service
<p>[Unit]</p>
<p>Description=Prometheus Monitoring System</p>
<p>Documentation=Prometheus Monitoring System</p>
<p>[Service]</p>
<p>ExecStart=/usr/local/prometheus/prometheus \</p>
<p>--config.file=/usr/local/prometheus/prometheus.yml \</p>
--web.listen-address=:9090
systemctl enable prometheus
systemctl start prometheus
http://ip:9090
2.安装node_exporter
node_exporter安装在需要监控的服务器
tar -xvzf node_exporter-1.2.0.linux-amd64.tar.gz
mv node_exporter-1.2.0.linux-amd64/ /usr/local/node_exporter
vim /etc/systemd/system/node_exporter.service
<p>[Unit]</p>
<p>Description=node exporter</p>
<p>Documentation=node exporter</p>
<p>[Service]</p>
<p>ExecStart=/usr/local/node_exporter/node_exporter</p>
<p>[Install]</p>
WantedBy=multi-user.target
systemctl enable node_exporter
systemctl start node_exporter
http://ip:9100/metrics 3.修改prometheus配置添加监控vim /usr/local/prometheus/prometheus.yml
<p>- job_name: 'prometheus'</p>
<p># metrics_path defaults to '/metrics'</p>
<p># scheme defaults to 'http'.</p>
<p>static_configs:</p>
<ul>
<li>targets: ['localhost:9090'] #添加node_exporter</li></ul> 4.结合cadvisor 监控docker
cadvisor支持http界面,方便prometheus 进行数据采集。
docker pull google/cadvisor
docker pull google/cadvisor
<p>docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=18080:8080 --detach=true --name=cadvisor google/cadvisor</p>
http://ip:18080/
vim /usr/local/prometheus/prometheus.yml
<ul>
<li>job_name: 'container'</li></ul>
<p>static_configs:</p>
<ul>
<li>targets: ['ip:18080'] 5.添加数据
- 登录Grafana选择Data sources > Add Data source > Prometheus > Save & test添加URL并保存
6.添加Grafana模板
7.注意
- 服务器使用 8919模板
- docker 使用 13112 模板
- 需要注意的是13112模板需要添加变量 job,在dashboard界面点击右上角齿轮>Variable>New添加
- 更改无法显示的监控项中的语句,将job改成job="$job",即可正常显示
- prometheus和node_exporter都可以使用dokcer部署,概念相通。
Loki
1.安装
mkdir -p /opt/loki
<p>cd /opt/loki</p>
<p>wget https://raw.githubusercontent.com/grafana/loki/v2.2.1/cmd/loki/loki-local-config.yaml -O loki-config.yaml</p>
wget https://raw.githubusercontent.com/grafana/loki/v2.2.1/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml
docker pull grafana/loki:2.2.1
docker pull grafana/promtail:2.2.1
#启动loki
docker run -v /opt/loki/:/mnt/config -p 31000:3100 -itd grafana/loki:2.2.1 -config.file=/mnt/config/loki-config.yaml<br><h1>启动promtail</h1><br>
docker run -v /opt/loki/:/mnt/config -v /var/log:/var/log -itd grafana/promtail:2.2.1 -config.file=/mnt/config/promtail-config.yaml 2.访问#查看数据
http://ip:31000/metrics<br><h1>查看启动状态</h1><br>
http://ip:31000/ready 3.指定收集日志方式#修改完成之后重启docker即可
<p>vim /opt/loki/promtail-config.yaml</p>
<p>scrape_configs:</p>
<ul>
<li>job_name: system</li></ul>
<p>static_configs:</p>
<p>- targets:</p>
<p>- localhost</p>
<p>labels:</p>
<p>job: varlogs</p>
<p>host: 127.0.0.1 #标签</p>
__path__: /var/log/messages #要收集的日志 4.收集docker日志
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
docker plugin ls
vim /etc/docker/daemon.json
<p>
{</p>
<p>"debug" : true,</p>
<p>"log-driver": "loki",</p>
<p>"log-opts": {</p>
<p>"loki-url": "http://ip:31000/loki/api/v1/push",</p>
<p>"loki-batch-size": "400"</p>
<p> }</p>
}
注:安装完之后需要将旧容器删除之后 重新启动,不然无法显示日志 5.添加数据
同prometheus,更改URL即可
6.查询
Expoler > 选择数据源 >选择标签
|