前言

MobalXterm又名MobalXVT,是一款增强型终端,X服务器和Unix命令集工具箱,可以用它来连接服务器

MobaXterm主要功能:

  • 支持各种连接 SSH,X11,RDP,VNC,FTP,MOSH
  • 支持 Unix 命令(bash,ls,cat,sed,grep,awk,rsync,…)
  • 连接 SSH 终端后支持 SFTP 传输文件
  • 各种丰富的插件(git/dig/aria2…)
  • 可运行 Windows 或软件

小问题

官网地址,安装过程不再阐述,解压会比较慢,后续就正常了

然后打开,连接服务器

  • 先点击session,连接设置可以按需选择,这里我用了SSH,输入你服务器的公网IP即可
  • 然后登录,就可以进入你的服务器内

左边是主机文件,右边是操作台,也就是终端勾选左下角的 Follow terminal folder可以让两个的工作路径保持一致。

文件传输和下载,可以采用直接拖拽的方式,或者采用鼠标右键选择相应功能。

但是,有一个问题,就是编码,编码问题是一个难以看出的问题,基本上,一些根本找不出错误的代码,一运行就出错,这就有可能是编码的问题,今天我在服务器上修改docker容器内的配置文件,但是由于想偷个懒,在主机上将配置文件拖出来,然后修改完再挂载回去,可是呢,报了一个及其恶心的错误

level=error ts=2018-12-07T07:16:42.642Z caller=main.go:808 err="error loading config from \"/etc/prometheus/prometheus.yml\": one or more errors occurred while applying the new configuration (--config.file=\"/etc/prometheus/prometheus.yml\")"

这个呢,找了很久也没有找到问题,最后灵机一动,是不是编码有问题,然后又转头回来整编码,结果还是没用,没办法,只能使用服务器里唯一的一个神一样的编辑器VIM,来进行一个字一个字的敲,最后神奇的是,问题解决了

虽然呢,编码都是utf8,但是,总有些说不上来的错误,反正呢,乖乖的用内部的VIM,一点问题没有。

还有一点是,在使用MobaXerm中的vim时,在修改文件的时候,经常会遇到readonly option is set (add!to override)这样的错误,解决办法也非常简单,如果是root权限,可以直接:wq!,或者按下ESC,输入set noreadonly,然后就正常保存就可以了

在服务器上部署,用docker是很方便的,我之前也有过几篇攻略,虽然可能说的很磕磕绊绊,但是还是希望能帮到大家。

进入正题

Prometheus,是自动化运维领域很常用的软件,它中文名为普罗米修斯,它的作用就是监控告警

话不多说,路程还长,首先是安装问题,安装呢,我们在MobalXterm的终端中,使用docker来进行安装

#升级yum
sudo yum update
#卸载旧版本docker
sudo yum remove docker  docker-common docker-selinux docker-engine
#安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#设置源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
#安装docker
sudo yum install docker-ce
#启动服务
sudo systemctl start docker

安装成功后查看版本:

docker -v

显示版本号即为成功

然后可以换国内源来提升下载速度

1.先执行
sudo vim /etc/docker/daemon.json

2.添加如下代码
{
    "registry-mirrors": ["https://d7grpode.mirror.aliyuncs.com"]
}

重启docker

sudo systemctl restart docker

随后拉取普罗米修斯的镜像

docker pull prom/prometheus:latest

这里我们以监控Redis数据库为例子,所以还需要拉取redis和redis状态收集器两个镜像:

docker pull redis
docker pull oliver006/redis_exporter:latest

然后启动一下

docker run -d --name redis -p 6379:6379 redis

    
docker run -d --name redis_exporter -p 9121:9121 oliver006/redis_exporter:latest --redis.addr redis://公网ip:6379

随后创建普罗米修斯的配置文件

# 执行这条命令
vim /tmp/prometheus.yml

# 加入下面代码
scrape_configs:

  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'redis'
 

    # Override the global default and scrape targets from this job every 5 seconds.

    scrape_interval: 5s


    static_configs:

      - targets: ['公网ip:9121']

这里每隔5秒获取一下运行的信息,然后启动

docker run -d -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus:latest

然后可以访问一下http://公网ip:9090/targets

然后,我们新创建一个机器人

需要注意的是,要将公网ip写上

然后再拉取一个告警模块以及顶顶机器人的插件

如果普罗米修斯的告警模块检测到异常,就会通过钉钉机器人的webhook的地址发送消息

编写告警配置文件

global:
  resolve_timeout: 5m
route:
  receiver: webhook
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 5m
  group_by: [alertname]
  routes:
  - receiver: webhook
    group_wait: 10s
receivers:
- name: webhook
  webhook_configs:
  - url: http://公网ip:8060/dingtalk/webhook1/send
    send_resolved: true

编写警告规则

# 运行这条命令
vim /tmp/redis.rules

# 添加代码
groups:
- name: redis
  rules:
  - alert: redis
    expr: up{job="redis"} == 0
    for: 15s
    labels:
      severity: 1
      team: node
    annotations:
      summary: "Redis服务在您的帮助下已经成功死机,老板限你一小时之内把它救回来。"

修改普罗米修斯的配置文件,将告警设置配置好

# 执行这条命令
vim /tmp/prometheus.yml

# 追加这些代码
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 公网ip:9093

rule_files:
  - "/etc/prometheus/redis.rules"

重启普罗米修斯服务,我们需要再次挂载一个redis.rules。

docker run -d -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml -v /tmp/redis.rules:/etc/prometheus/redis.rules  prom/prometheus:latest

启动告警模块

docker run -d --name alertmanager -p 9093:9093 -v /tmp/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager:latest

启动钉钉插件

docker run -d -p 8060:8060 --name webhook timonwong/prometheus-webhook-dingtalk --ding.profile="webhook1=https://oapi.dingtalk.com/robot/send?access_token=钉钉token"

然后访问一下http://公网ip:9090/rules

然后我们关闭redis_exporter,来模拟redis宕机

docker stop redis_exporter

普罗米修斯的监控立刻就发现了问题

然后可以看到,机器人会发送一个消息

ok,完毕

Grafana可视化界面

这是一个很酷炫的可视化界面,可以将我们的监控界面导入到里面,隔壁小孩崇拜的很

首先拉取镜像:

sudo docker pull grafana/grafana

然后启动

sudo docker run -d -p 3000:3000 --name grafana grafana/grafana
  • 登录http://公网ip:3000
  • 默认账号和密码都是admin

写入公网IP和端口

ok完美,莫得问题