**Prometheus+Grafana+cAdvisor+node_exporter+Alertmanager 监控docker容器和配置钉钉报警java
特色:node
多维数据模型(有metric名称和键值对肯定的时间序列) 灵活的查询语言 不依赖分布式存储 支持图表和dashboard等多种方式 经过pull方式采集时间序列,经过http协议传输 监控数据经过服务或者静态配置来发现 支持经过中介网关的push时间序列的方式
功能:python
在业务层用做埋点系统:
Prometheus支持多种语言(Go,java,python,ruby官方提供客户端,其余语言有第三方开源客户端)。咱们能够经过客户端方面的对核心业务进行埋点。以下单流程、添加购物车流程。mysql
在应用层用做应用监控系统:linux
一些主流应用能够经过官方或第三方的导出器,来对这些应用作核心指标的收集。如redis,mysql。git
在系统层用做系统监控:
除了经常使用软件, prometheus也有相关系统层和网络层exporter,用以监控服务器或网络。github
集成其余的监控:golang
prometheus还能够经过各类exporte,集成其余的监控系统,收集监控数据,如AWS CloudWatch,JMX,Pingdom等等web
Prometheus架构:
prometheus是一个用Go编写的时序数据库,能够支持多种语言客户端,redis
安装go 语言环境 在监控服务器上安装prometheus 在被监控环境上安装export 安装grafana
一、安装go 语言环境
wget -c https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz vim /etc/profile 在文件的最后添加以下内容: export PATH=$PATH:/usr/local/go/bin 保存退出后,接着让配置文件马上生效: source /etc/profile 验证一下是否成功,用go version 来验证 go version
2:安装prometheus
官网下载地址:https://prometheus.io/download/ wget -c https://github.com/prometheus/prometheus/releases/download/v2.21.0-rc.0/prometheus-2.21.0-rc.0.linux-amd64.tar.gz tar -vxf prometheus-2.21.0-rc.0.linux-amd64.tar.gz -C /usr/local/ mv prometheus-2.21.0.linux-amd64/ prometheus
ln -sv /usr/local/prometheus-2.21.0-rc.0.linux-amd64/ /usr/local/prometheus 默认方式启动: ./prometheus & 更换其余端口启动: ./prometheus --config.file=prometheus.yml --web.listen-address=:9010 &
浏览器输入IP 默认端口9090
三、设置用户
添加用户,后期用此帐号启动服务
groupadd prometheus useradd -g prometheus -s /sbin/nologin prometheus
赋权
cd ~ chown -R prometheus:prometheus /usr/local/prometheus/
建立prometheus运行数据目录
mkdir -p /var/lib/prometheus chown -R prometheus:prometheus /var/lib/prometheus/
四、设置开机启动
touch /usr/lib/systemd/system/prometheus.service chown prometheus:prometheus /usr/lib/systemd/system/prometheus.service vim /usr/lib/systemd/system/prometheus.service [Unit] Description=Prometheus Documentation=https://prometheus.io/ After=network.target [Service] # Type设置为notify时,服务会不断重启 Type=simple User=prometheus # --storage.tsdb.path是可选项,默认数据目录在运行目录的./dada目录中 ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus Restart=on-failure [Install] WantedBy=multi-user.target
设置开机启动
systemctl enable Prometheus systemctl start prometheus
绘图:
http://192.168.10.117:9090/metrics ,查看从exporter具体能抓到的数据,以下:
访问:prometheus,在输入框中任意输入1个exporter能抓取得值,点 击"Execute"与"Execute"按钮,便可见相应抓取数据的图形,同时可对 时间与unit作调整,
Node_exporter收集机器的系统数据,这里采用prometheus官方提供的exporter
一、下载安装
wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-arm64.tar.gz tar -xvzf node_exporter-0.18.1.linux-arm64.tar.gz cd /usr/local mv node_exporter-0.18.1.linux-arm64.tar.gz /usr/local/node_exporter
设置用户
groupadd prometheus useradd -g prometheus -s /sbin/nologin prometheus chown -R prometheus:prometheus /usr/local/node_exporter/
设置开机启动
vim /usr/lib/systemd/system/node_exporter.service [Unit] Description=node_exporter Documentation=https://prometheus.io/ After=network.target [Service] Type=simple User=prometheus ExecStart=/usr/local/node_exporter/node_exporter Restart=on-failure [Install] WantedBy=multi-user.target 启动: systemctl enable node_exporter systemctl start node_exporter 直接启动方式: 修改端口添加: --web.listen-address=":9013" & 命令:./node_exporter --web.listen-address=":9013" & prometheus.yml文件下添加: - job_name: 'docker' static_configs: - targets: [192.168.10.117:9012']
二、验证
访问prometheus,查看node1主机已经可被监控
下载地址:https://grafana.com/grafana/download 选择须要的版本和安装的系统
wget https://dl.grafana.com/oss/release/grafana-7.1.5-1.x86_64.rpm sudo yum install grafana-7.1.5-1.x86_64.rpm
将grafana加入到系统服务并启动
sudo /sbin/chkconfig --add grafana-server sudo service grafana-server start 启动后,打开URL,默认端口为3000,http://192.168.10.117:3000/ 用户名和密码都为 admin
修改grafana默认访问端口 我修改成9008
一、授予grafana二进制权限 sudo setcap 'cap_net_bind_service=+ep' /usr/sbin/grafana-server 二、将端口9008重定向到Grafana端口3000 iptables -t nat -A PREROUTING -p tcp --dport 9011 -j REDIRECT --to-port 3000 三、修改配置文件/etc/grafana/grafana.ini中端口为9008,并重启
启动: service grafana-server start
使用8919面板:https://grafana.com/grafana/dashboards/8919
这里使用docker部署
一、 拉取镜像 docker pull docker.io/google/cadvisor 二、运行cadvisor容器,并配置 docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:rw \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ google/cadvisor:latest 启动: docker restart 448ded02b68d 三、启动容器:docker restart 117dc405fbf5
curl:ip:8080端口:
一、登录 访问:http://localhost:3000,默认帐号/密码:admin/admin
二、添加Premetheyus数据源:
三、配置Premetheyus地址和源
四、能够先测试一下
五、查看数据源:
六、进入刚才逛街的数据源中:
七、OK配置完成
九、dashboard导入
从grafana官网下载相关dashboard到本地,也能够直接导入到grafana中
https://grafana.com/dashboards/1860 一、配置面板:
二、本地导入仪表盘 复制上方链接、
一、复制钉钉群地址:
二、添加关键词: 添加了以下关键字:alert、promethues、alertmanager、webhook。可自行决定添加几个。
三、Grafana配置:
四、报错问题: 在打开Include image时报错 没有安装grafana-cli 解决方法: yum -y install libatk-bridge* libXss* libgtk* grafana-cli plugins install grafana-image-renderer 五、重启grafana:service grafana-server restart
发送报警测试:报警的时候就有图片啦
官网地址:https://grafana.com/grafana/dashboards?search=docker 一、配置图形面板:
https://grafana.com/grafana/dashboards/11277 二、查看图形内容:
https://grafana.com/dashboards/193面板: Prometheus监控端查docker数据 container_cpu_load_average_10s
1. 下载&安装 wget https://github.com/prometheus/alertmanager/releases/download/v0.19.0/alertmanager-0.19.0.linux-amd64.tar.gz tar xzf alertmanager-0.19.0.linux-amd64.tar.gz mv alertmanager-0.19.0.linux-amd64 /usr/local/alertmanager cd /alertmanager cp alertmanager.yml alertmanager.yml 配置文件默认: cat alertmanager.yml global: resolve_timeout: 5m route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: webhook receivers: - name: webhook webhook_configs: - url: 'http://127.0.0.1:5001/' inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance'] 三、启动alertmanager ./alertmanager --config.file=alertmanager.yml 2>&1 1>altermanager.log & 查看端口 netstat -anpt | grep 9093 四、报警规则 cat dingding.yml
groups: - name: test-rule rules: - alert: 主机状态 expr: up == 0 for: 2m labels: status: warning annotations: summary: "{{$labels.instance}}:服务器关闭" description: "{{$labels.instance}}:服务器关闭"
五、修改prometheus配置文件 修改alerting和dingding # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: ["localhost:9093"] # - alertmanager:9093 rule_files: - "rules.yml" 六、将钉钉接入 Prometheus AlertManager WebHook 插件下载地址:https://github.com/timonwong/prometheus-webhook-dingtalk
安装
mkdir -p /usr/lib/golang/src/github.com/timonwong/ cd /usr/lib/golang/src/github.com/timonwong/ git clone https://github.com/timonwong/prometheus-webhook-dingtalk.git cd prometheus-webhook-dingtalk make
启动 不想写了