Linux操作文档——Docker监控工具


一、sysdig

[root@localhost ~]# docker run -it --rm --name sysdig --privileged=true --volume=/var/run/docker.sock:/host/var/run/docker.sock --volume=/dev:/host/dev --volume=/proc:/host/proc:ro --volume=/boot:/host/boot:ro --volume=/lib/modules:/host/lib/modules:ro --volume=/usr:/host/usr:ro sysdig/sysdig
root@58e0debbe53a:/# csysdig

在这里插入图片描述
下载插件失败后可以运行下边的命令,重新下载

root@58e0debbe53a:/# sysdig-probe-loader

二、Weave scope

[root@localhost ~]# curl -L git.io/scope -o /usr/local/bin/scope
[root@localhost ~]# chmod a+x /usr/local/bin/scope
[root@localhost ~]# scope launch

在这里插入图片描述

三、Prometheus(普罗米修斯)

Prometheus官方网站

组件说明
Prometheus Server普罗米修斯的主服务器
NodeEXporter负责收集Host硬件信息和操作系统信息
cAdvisor负责收集Host上运行的容器信息
Grafana负责展示普罗米修斯监控界面

1、安装部署

主机名称IP地址安装组件
machine192.168.1.10NodeEXporter、cAdvisor、Prometheus Server、Grafana
docker02192.168.1.20NodeEXporter、cAdvisor
docker03192.168.1.30NodeEXporter、cAdvisor

1、部署node-EXporter和cAdvisor

[root@machine ~]# docker run -d -p 9100:9100 -v /proc/:/host/proc --name export -v /sys:/host/sys -v /:/rootfs --net=host prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|hosit|etc)($|/)"

在这里插入图片描述

2、部署安装cAdvisor

[root@machine ~]# docker run -v /:/rootfs:ro -v /var/run:/var/run/:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -p 8080:8080 --detach=true --name=cadvisor --net=host google/cadvisor

在这里插入图片描述

3、部署Prometheus Server服务

[root@machine ~]# docker run -d --name prometheus prom/prometheus
[root@machine ~]# docker cp prometheus:/etc/prometheus/prometheus.yml ./
[root@machine ~]# docker stop prometheus
prometheus
[root@machine ~]# docker rm prometheus 
prometheus
[root@machine ~]# vim prometheus.yml 
    static_configs:       //添加各节点容器收集信息
    - targets: ['localhost:9090','localhost:8080','localhost:9100','192.168.1.20:8080','192.168.1.20:9100','192.168.1.30:8080','192.168.1.30:9100']       //
[root@machine ~]# docker run -d -p 9090:9090 --name prometheus --net=host -v /root/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

在这里插入图片描述
在这里插入图片描述

4、部署grafana服务

[root@machine ~]# mkdir grafana-storage
[root@machine ~]# chmod -R 777 grafana-storage/
[root@machine ~]# docker run -d -p 3000:3000 --name grafana -v /root/grafana-storage:/var/lib/grafana -e "GF_SECURITY_ADMIN_PASSWORD=123.com" grafana/grafana

或者汉化版(部分)

[root@machine ~]# docker run -d -p 3000:3000 --name grafana -v /root/grafana-storage:/var/lib/grafana w958660278/grafana-cn:latest-dev

2、添加监控数据

新版可以直接指定密码,旧版本默认登录账号密码都为admin
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、导入监控模板

grafana官网: https://grafana.com/

1、JSON文件方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、添加模板的ID号

在这里插入图片描述

4、配置邮件报警

1、配置AlertManager

[root@machine ~]# docker run --name alertmanager -d -p 9093:9093 prom/alertmanager:latest
[root@machine ~]# docker cp alertmanager:/etc/alertmanager/alertmanager.yml ./
[root@machine ~]# cp alertmanager.yml alertmanager.ymlbak

在这里插入图片描述

2、打开SMTP服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、更改配置文件

[root@machine ~]# vim alertmanager.yml
global:
  resolve_timeout: 5m
  smtp_from: '*******@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '*******@qq.com'
  smtp_auth_password: '*******'        #SMTP授权码
  smtp_require_tls: false
  smtp_hello: 'qq.com'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: '*******@qq.com'
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']
[root@machine ~]# docker rm -f alertmanager 
alertmanager
[root@machine ~]# docker run -d --name alertmanager -p 9093:9093 -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager

4、配置告警规则

[root@machine ~]# mkdir -p prometheus/rules
[root@machine ~]# cd prometheus/rules/
[root@machine rules]# vim node-up.rules
groups:
- name: node-up
  rules:
  - alert: node-up
    expr: up{job="prometheus"} == 0
    for: 15s
    labels:
      severity: 1
      team: node
    annotations:
      summary: "{{ $labels.instance }} 已停止运行超过 15s!"
[root@machine ~]# vim prometheus.yml 
alerting:
  alertmanagers:
  - static_configs:
    - targets:
       - 192.168.1.10:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  -  "/usr/local/prometheus/rules/*.rules"
[root@machine ~]# docker rm -f prometheus 
prometheus
[root@machine ~]# docker run -d -p 9090:9090 -v /root/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/prometheus/rules:/usr/local/prometheus/rules --name prometheus --net=host prom/prometheus

在这里插入图片描述
在这里插入图片描述

5、触发报警发送 Email

在这里插入图片描述

6、配置自定义邮件模板

[root@machine ~]# cd prometheus/
[root@machine prometheus]# mkdir alertmanager-tmpl
[root@machine prometheus]# cd alertmanager-tmpl/
[root@machine alertmanager-tmpl]# vim email.tmpl
{{ define "email.from" }}*******@qq.com{{ end }}
{{ define "email.to" }}*******@qq.com{{ end }}
{{ define "email.to.html" }}
{{ range .Alerts }}
=========start==========<br>
告警程序: prometheus_alert<br>
告警级别: {{ .Labels.severity }}<br>
告警类型: {{ .Labels.alertname }}<br>
故障主机: {{ .Labels.instance }}<br>
告警主题: {{ .Annotations.summary }}<br>
触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} <br>
=========end==========<br>
{{ end }}
{{ end }}
[root@machine alertmanager-tmpl]# cd
[root@machine ~]# vim alertmanager.yml
[root@machine ~]# docker restart prometheus 
prometheus
[root@machine ~]# vim alertmanager.yml
global:
  resolve_timeout: 5m
  smtp_from: '*******@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '*******@qq.com'
  smtp_auth_password: '*******'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
templates:
  - '/etc/alertmanager-tmpl/*.tmpl'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: '{{ template "email.to" }}'
    html: '{{ template "email.to.html" . }}'
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']
[root@machine ~]# docker rm -f alertmanager
alertmanager
[root@machine ~]# docker run -d --name alertmanager -p 9093:9093 -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml -v /root/prometheus/alertmanager-tmpl:/etc/alertmanager-tmpl prom/alertmanager

在这里插入图片描述

posted @ 2020-09-18 00:41  高中僧  阅读(83)  评论(0)    收藏  举报